> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pulsyai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Transfers

> Configure PulsyAI voice AI agents to transfer live calls to a human team, a closer line, or any other phone destination — using trigger conditions and function calls.

A transfer is when your PulsyAI voice AI agent hands off a live, in-progress call to another phone number — typically a human team standing by to take prequalified leads from the agent. Transfers are configured per-agent and fire on trigger conditions that you write into the agent's prompt.

Transfers are the technical mechanism behind the warm-transfer pattern covered in [Principle 9: The AI prequalifies, the human closes](/platform/build-your-agent/build-a-script#principle-9-the-ai-prequalifies-the-human-closes) — the highest-conversion configuration available for clients with live closing teams.

## How transfers work — two pieces that must both be configured

Setting up a transfer involves two distinct configurations:

1. **Recipients** — configured on the **Transfers tab** of your agent. This is the list of phone numbers your agent can route calls to.
2. **The trigger directive in the agent prompt** — configured in the **Call Flow tab** where you write the agent's script. This is the prompt-side instruction that tells the agent when and how to fire the transfer function call.

Both are required. A recipient with no trigger directive in the prompt will never receive a transfer. A trigger directive in the prompt without a configured recipient has no destination to route to. The rest of this page walks through each configuration in order.

## Setting up recipients

The Transfers tab inside each voice AI agent is where you define who the agent can route calls to. You can add recipients one-by-one manually, or upload a list in bulk via CSV/XLSX.

### Where to find the Transfers tab

Open the voice AI agent you want to configure transfers on. Inside the agent, look at the top navigation bar — the available tabs include Call Flows, Analytics, Knowledge, Call Logs, SMS Configuration, Integrations, and **Transfers**. Click the Transfers tab to open the configuration view.

<Frame>
  <img src="https://mintcdn.com/pulsyai/dD3OdnoiZGXFvsVj/images/01-transferstab-1.png?fit=max&auto=format&n=dD3OdnoiZGXFvsVj&q=85&s=f7dedbf3b109ba3fb09b0b3d2cb763ff" alt="01 Transferstab 1" width="1918" height="944" data-path="images/01-transferstab-1.png" />
</Frame>

The first time you open the Transfers tab on a fresh agent, you'll see an empty state with a search filter, an **Add recipient** button, and a **Bulk upload** button. From here, you can add recipients one-by-one or in bulk.

<Frame>
  <img src="https://mintcdn.com/pulsyai/dD3OdnoiZGXFvsVj/images/02-bulkuploandaddrecipient-1.png?fit=max&auto=format&n=dD3OdnoiZGXFvsVj&q=85&s=9746c44168bc93a4e56e01696480c875" alt="02 Bulkuploandaddrecipient 1" width="1918" height="943" data-path="images/02-bulkuploandaddrecipient-1.png" />
</Frame>

### Adding a recipient manually

Click **+ Add recipient** in the top right of the Transfers tab. A modal opens asking for two fields:

<Frame>
  <img src="https://mintcdn.com/pulsyai/dD3OdnoiZGXFvsVj/images/03-addrecipient-2.png?fit=max&auto=format&n=dD3OdnoiZGXFvsVj&q=85&s=1831f0f78445e4c96fa7563047acd84e" alt="03 Addrecipient 2" width="1918" height="942" data-path="images/03-addrecipient-2.png" />
</Frame>

* **Recipient name** — A descriptive label for this destination. This is used inside your prompt to tell the agent which recipient to transfer to (for example, "James", "Billing team", "Sales overflow line"). Choose names that are easy to reference in natural conversation.
* **Recipient phone number** — The phone number the call should be transferred to, including country code.

<Warning>
  **Country codes are required and easy to miss.**

  Phone numbers must be entered with the international country code at the start, otherwise the transfer function call will fail and your agent will be unable to route the call.

  * **Canada and United States** — `+1` followed by the 10-digit number. Example: `+14385551234`
  * **France** — `+33` followed by the number without the leading 0. Example: `+33612345678`
  * **United Kingdom** — `+44` followed by the number without the leading 0. Example: `+447700900123`
  * **Other countries** — Use the ITU-T E.164 international format (`+` followed by the country code and full number, no spaces, no dashes).

  If you save a recipient without a country code, transfers to that recipient will not work. Always include the `+` prefix.
</Warning>

Click **Add** in the bottom right of the modal once both fields are filled. The recipient appears in your list and is immediately available for use inside the agent's prompt.

You can add as many recipients as your client's setup requires — a single number for simple one-destination transfers, or multiple numbers when the agent needs to route different lead types to different teams (covered in the multi-recipient configurations section below).

### Bulk upload via CSV or XLSX

For clients with many destinations — call centers with dozens of agents, multi-location service businesses, or sales teams that need every rep available as a transfer target — use the **Bulk upload** button at the top right of the Transfers tab to import recipients from a `.csv` or `.xlsx` file.

<Frame>
  <img src="https://mintcdn.com/pulsyai/dD3OdnoiZGXFvsVj/images/04-bulkupload-1.png?fit=max&auto=format&n=dD3OdnoiZGXFvsVj&q=85&s=fe3b08b5f9ecb1cf37af9f901691fb88" alt="04 Bulkupload 1" width="1918" height="944" data-path="images/04-bulkupload-1.png" />
</Frame>

The expected file format:

* **Required columns** — `name` and `phoneNumber` (or `phone number`). The upload accepts either spelling for the phone column.
* **Phone number format** — Digits-only international values like `14155552671` or `447700900123`, OR include the `+` prefix already (`+14155552671`). The upload automatically adds `+` before sending when needed, but country codes themselves must always be present in the digits.
* **Starter template** — Click **Download template** inside the modal to grab a pre-formatted CSV with the correct column headers — fill it with your recipient list and upload it back.

If you check **Replace existing recipients** before uploading, the current recipient list is wiped and replaced entirely with the contents of the uploaded file. Leave the checkbox unchecked to append the new recipients to the existing list.

Once the file is selected, click **Upload recipients** at the bottom right of the modal. Recipients are imported in bulk and become immediately available in the agent's prompt.

## Connecting Transfers to Call Flows

Recipients in the Transfers tab are only half the configuration. The other half lives inside the agent's **Call Flow** tab, where you write the prompt — the script directives that tell the agent when to actually fire a transfer.

This works the same way as every other function call in PulsyAI — SMS messages (live or post-call), bookings, transfers all follow the same pattern:

1. **The agent asks the customer a confirmation question** — for example, "Would you like me to transfer you to a representative right now?"
2. **The customer confirms** ("yes", "please", "go ahead").
3. **The directive in your prompt fires the function call** — and PulsyAI executes the transfer to the configured recipient.

The agent does not transfer the call autonomously based on its own inference. It transfers only when the trigger condition you wrote into the prompt is met. This is intentional — it guarantees the customer has explicitly consented to the transfer before it happens.

### Ready-to-use transfer directive

Below is the exact directive block we recommend including in any agent prompt that supports transfers. This is production-tested wording that fires reliably across customer phrasings. Copy it into your Call Flow prompt as-is — only customizing the specific recipient name(s) and the customer-facing response wording if your client wants different language.

```text theme={null}
⚠️ CALL TRANSFER PROTOCOL - IMMEDIATE EXECUTION REQUIRED ⚠️

TRIGGER CONDITIONS (Execute transfer IMMEDIATELY when client says ANY of the following):
"I want to speak to someone"
"Transfer me"
"Can I talk to a person/representative/agent/human"
"Connect me to [name/representative]"
"I need to speak to James"
"Let me talk to..."
"Put me through to..."
"Get me someone"
"I want a real person"
ANY variation expressing desire for human contact

MANDATORY RESPONSE (Use EXACTLY this script - NO deviation):
"Absolutely, I'd be happy to connect you with one of our live representatives right now. They'll be able to assist you immediately with any questions or concerns you have.

Would you like me to go ahead and transfer you?"

[Pause for confirmation]

UPON CLIENT CONFIRMATION (Yes/Sure/Okay/Go ahead):
[EXECUTE THE TRANSFER FUNCTION CALL IMMEDIATELY]
```

### Customizing the trigger conditions to your recipients

The trigger conditions in the directive above reference a specific recipient name as an example ("I need to speak to James"). When you implement this in your own agent, replace `James` with the actual name(s) of your configured recipients. If you have a recipient named `Louise`, your agent should recognize "I need to speak to Louise" as a trigger.

The other listed triggers ("I want to speak to someone", "Transfer me", "Get me a real person", etc.) cover the more generic "I want a human" intent and should stay as-is — these catch the customers who don't know any specific name and just want to escape the AI.

Add as many variations of "I want to talk to a human" as your client's audience phrases it in. The more variations the directive covers, the more reliably the trigger fires across real conversations.

## Multi-recipient configurations

The setup above assumes a single recipient — the agent transfers everyone to the same destination. For clients with department-based routing (sales / billing / technical / customer service), you'll configure multiple recipients and adjust the prompt directive so the agent knows which one to route to.

### Single recipient — straightforward routing

When there's only one transfer destination configured, the directive above works as-is. The agent confirms the customer wants a transfer, fires the function call, and the call routes to the only available recipient. Simplest possible setup, best for clients with a single closing team or a single shared support line.

### Multiple recipients — department-based routing

When you've added multiple recipients (for example James for the technical department, Louise for billing, Maria for sales), the agent needs to know **which recipient** to route to based on what the customer is asking about. The prompt directive needs to be expanded to handle this routing.

The pattern is:

1. **The agent listens for the topic** of the customer's concern (technical issue, billing question, sales inquiry, etc.).
2. **The agent confirms the transfer** with a department-specific framing — "I'm going to transfer you to James in our technical department, would you like me to go ahead?".
3. **The directive fires the transfer to the correct recipient** based on the matched department.

Here's an adjusted version of the directive for a setup with three recipients (James for technical, Louise for billing, Maria for sales):

```text theme={null}
⚠️ CALL TRANSFER PROTOCOL - DEPARTMENT ROUTING ⚠️

AVAILABLE DEPARTMENTS AND CONTACTS:
- James — Technical Department (technical issues, troubleshooting, service problems)
- Louise — Billing Department (payments, invoices, refunds, subscription questions)
- Maria — Sales Department (new accounts, upgrades, pricing inquiries)

TRIGGER CONDITIONS (Execute transfer IMMEDIATELY when client expresses ANY of the following):
"I want to speak to someone"
"Transfer me"
"Can I talk to a person/representative/agent/human"
"Connect me to [James/Louise/Maria]"
"I need help with [billing/technical issue/sales]"
"Let me talk to..."
"Put me through to..."
"Get me someone"
ANY variation expressing desire for human contact OR department-specific request

MANDATORY RESPONSE — Determine the right recipient first, then confirm:

If the issue is TECHNICAL: "I'm going to connect you with James in our technical department who can help you right away. Would you like me to go ahead and transfer you?"

If the issue is BILLING: "I'm going to connect you with Louise in our billing department who can help you right away. Would you like me to go ahead and transfer you?"

If the issue is SALES or upgrade-related: "I'm going to connect you with Maria in our sales department who can help you right away. Would you like me to go ahead and transfer you?"

If the customer just wants "a human" without specifying: Ask one clarifying question — "Is this about a technical issue, a billing question, or something sales-related?" — then route accordingly.

[Pause for confirmation]

UPON CLIENT CONFIRMATION (Yes/Sure/Okay/Go ahead):
[EXECUTE THE TRANSFER FUNCTION CALL TO THE MATCHED RECIPIENT IMMEDIATELY]
```

Adapt this template to your client's actual departments and recipient names. The key principles stay the same regardless of how many recipients you have:

* **List the available departments at the top of the directive** so the agent knows the full routing table.
* **Map each department to keywords or topics** the customer might mention (technical → "broken", "not working"; billing → "charge", "invoice"; sales → "buy", "upgrade").
* **Always confirm the transfer** by stating who the customer is being routed to ("I'm going to connect you with James in our technical department") before firing the function call.
* **Ask a clarifying question** if the customer's intent is ambiguous, rather than guessing the department.

## Best practices

A few patterns to keep in mind when configuring transfers in production:

* **Test every recipient before going live.** Add a recipient, write the directive, and call your own agent to trigger the transfer. Verify the call routes to the correct destination before launching with real customers.
* **Use natural recipient names.** Recipient names appear inside your prompt as routing keywords — keep them short, distinct, and conversational. `James` and `Louise` work; `Recipient_001` and `Backup_Transfer_Number_3` don't.
* **Don't transfer for everything.** Transfers work best when they're a deliberate handoff at peak intent (closing teams, escalations, specific department requests). Transferring for every minor question erodes the customer experience and wastes human team time.
* **Keep the confirmation step.** Always have the agent ask before transferring, even if the customer is clearly asking for a human. The ask-then-confirm pattern eliminates accidental transfers and ensures the customer is mentally prepared for the channel change.

## Next steps

<CardGroup cols={2}>
  <Card title="Principle 9: AI prequalifies, human closes" icon="users" href="/platform/build-a-script#principle-9-the-ai-prequalifies-the-human-closes">
    The strategic reasoning behind warm transfers — why human closing beats AI closing for the foreseeable future, and when warm transfer is the right configuration versus a scheduled callback.
  </Card>

  <Card title="Speed-to-lead warm transfer pro tip" icon="zap" href="/platform/build-an-outbound-ai-agent#pro-tip-warm-transfer-to-closers">
    How to combine transfers with the outbound speed-to-lead playbook — instant transfer to live closers while the lead is at peak intent.
  </Card>
</CardGroup>
