Call transfer

View as Markdown

Call transfer lets a voice agent hand a live phone call to a human, another number, or your own SIP trunk when the conversation needs it - an escalation, a specialist, or an explicit request to speak to someone.

It is a core tool. You configure the destination under Settings → In Call Actions; the model decides when to transfer from the conversation.

Call transfer is available on phone calls. It is not available in chat or the browser voice tester.

When the agent should transfer

Write a clear instruction so the model transfers at the right moment. Typical triggers:

  • The caller asks to speak to a human, an agent, or a named team (sales, billing, collections)
  • The request needs human judgment the agent cannot complete
  • An escalation rule fires (for example, a dispute, a cancellation, or a complaint)

Be specific in the instruction. Type @ and insert the call_transfer tool so the agent knows exactly what to call. “When the caller asks for a refund, confirm they want a human, then transfer using call_transfer” works better than “transfer the call”.

The Instructions editor with a refund-handoff prompt that ends in the call_transfer tool chip.

Instruction that transfers a refund request with the call_transfer tool.

Supported telephony

ProviderCall transfer
Vobiz (your own account or Rent from Sarvam)Supported end to end. No extra setup on the Vobiz platform.

Call transfer is not self-serve on other telephony providers.

Prefer Vobiz if you want to configure and test transfers yourself. Numbers rented through Rent from Sarvam use Vobiz underneath, so they support call transfer the same way.

Destination types

Choose one destination type per agent. The value can be fixed, or read from an agent variable at runtime.

TypeFormatExample
Phone number (PSTN)E.164+919876543210
SIP URISIP addresssip:support@example.com

Use a variable when the destination depends on the caller - for example a campaign column, an on-start CRM lookup, or a language-specific queue. The variable’s value is resolved when the transfer runs.

The destination must answer. A number that rings out, goes to voicemail, or rejects the call looks like a failed transfer even when the agent invoked the tool correctly. Test with a phone you control.

How to configure

Call transfer is configured as Call forwarding under Settings → In Call Actions.

Call forwarding settings with the toggle on, Destination type set to Phone number, Value type set to Static value, and Forward to set to +919876543210.

Call forwarding in Settings → In Call Actions: destination type, value type, and the number to forward to.
1

Open the agent

In Voice Agents, open the agent you want to transfer from.

2

Go to Settings → In Call Actions

On the Canvas, open Settings, then In Call Actions.

3

Turn on Call forwarding

Enable Call forwarding, then set Destination type to Phone number or SIP URI.

4

Set the destination

Set Value type to Static value and enter the number or SIP URI in Forward to. Or bind an agent variable so the value is filled at runtime.

5

Tell the agent when to transfer

In the instruction, state the conditions and insert call_transfer with @. For example: “When the user requests a refund, acknowledge the request, confirm they want a human support agent, and, upon confirmation, transfer the call using call_transfer.”

6

Commit and test on a phone

Commit the agent, then place a real phone call. Browser voice and chat cannot exercise a transfer.

Example

Caller: “Can I talk to someone on your sales team?”

Agent: “Sure, I’ll connect you now.”

The agent calls call_transfer. The live call is bridged to the configured sales number or SIP URI.

After a transfer

Transferred calls are visible in Call Logs like any other conversation.

  • End Reason is CALL_TRANSFER when the agent handed the call off.
  • Transfer status and the recording of the transferred leg are captured, so you can see whether the destination answered and what happened after the handoff.

Filter Call Logs by agent, campaign, or date, then look for CALL_TRANSFER in End Reason.

Best practices

  • Be specific in the prompt. Name the situations that should transfer (human request, billing dispute, cancellation) instead of a generic “escalate if needed”.
  • Confirm the destination is reachable before you go live - a wrong number or an unmanned queue fails the caller, not just the metric.
  • Use a variable for routing. When sales and support should land on different numbers, set the destination from a campaign column or an on-start hook, rather than hard-coding one number for every caller.
  • Plan for a failed transfer. Tell the agent what to say and do if the destination does not answer - offer a callback, take a message, or continue the conversation.
  • Test on the same telephony you will use in production. A transfer that works on Vobiz is not a test of an Exotel number.

Troubleshooting

SymptomWhat to check
The agent says it cannot transferCall transfer is not enabled on the agent, or the call is not on a supported provider.
The agent says it will transfer, but nothing happensThe model announced the intent and did not call the tool. Tighten the instruction so the transfer step is unambiguous.
The transfer fires, but nobody picks upThe destination did not answer. Confirm the number or SIP URI, and that a person or queue is staffed.
You are on Exotel and transfers do not completeCall transfer on Exotel is not self-serve. Contact the Sarvam team.
Browser or chat tests never transferExpected. Use test agent → Phone, or a live inbound / campaign call.

Next