April 2026
6 min read
Share article

How to Transfer a Call in Vapi (Warm and Cold Transfer Setup)

How to transfer a call in Vapi

Every production voice agent eventually needs to hand a call off to a human. An irate caller needs to talk to a manager, a complex billing question exceeds the agent's knowledge, an emergency comes in that requires immediate live response. Vapi has a built-in transfer mechanism that handles both cold transfers (drop the caller in) and warm transfers (agent briefs the human first). This walks through both.

Cold vs Warm Transfers

A cold transfer connects the caller to the new number without any preamble. The human who answers knows nothing about why the caller was transferred. This is fast and works for simple routing (e.g., "please hold while I connect you"). A warm transfer briefs the receiving human first: the agent calls the human, summarizes the caller's situation, then conferences in the original caller. This is slower but the caller does not have to repeat themselves.

Setting Up a Transfer Tool

Transfers in Vapi are a built-in tool type, not a custom webhook. Open the assistant, go to Tools, and add a tool of type transferCall. In the destinations list, add the phone numbers the agent can transfer to. Each destination has a number, a description (for the LLM to know when to use it), and a transferPlan.

The description is critical for routing. "Transfer to billing team for payment issues" routes differently than "Transfer to clinical manager for medical questions." The LLM picks the destination based on the caller's intent matching these descriptions.

Configuring the transferPlan

Each destination has a transferPlan that specifies mode and optional summary settings. Mode options are blind-transfer (cold), warm-transfer-say-summary (warm with a one-time summary to the receiving human before connecting), warm-transfer-say-message (warm with a custom static message), warm-transfer-wait-for-operator-to-speak-first (the AI waits for the human to say hello, then summarizes).

For most production use cases, warm-transfer-say-summary is the right default. It briefs the human with a context summary generated by the LLM, then conferences the caller in. The receiving human does not have to ask "what is this about?" because they already know.

Transfer Mode Adoption in Production

warm-transfer-say-summary (briefs the human)58%
blind-transfer (fast, no context)26%
warm-transfer-wait-for-operator-to-speak-first10%
warm-transfer-say-message (custom static)6%

Handling Multiple Destinations

A typical setup has 3 to 6 destinations: sales, support, billing, technical, manager escalation, after-hours fallback. Each with a distinct description. The LLM routes based on conversation content. Keep descriptions clearly non-overlapping. If two destinations could match the same intent, the LLM will sometimes pick the wrong one, which is a miserable caller experience.

Prompt Engineering for Reliable Transfers

In the system prompt, explicitly list the transfer scenarios: "Transfer to billing if the caller asks about invoices, payments, or refunds. Transfer to technical support if the caller has a product issue you cannot resolve. Transfer to the manager if the caller is frustrated or explicitly asks to speak to a manager." Vapi's LLM is generally good at picking the right destination, but explicit instructions help.

For critical routes (e.g., emergency medical), make the transfer rule unambiguous in the prompt: "If the caller mentions chest pain, difficulty breathing, or uses the word emergency, immediately transfer to the emergency line. Do not attempt to answer medical questions in these cases."

After-Hours Routing

Phone numbers can change routing by time of day. During business hours, transfer to the main office. After hours, transfer to the on-call phone, or leave a voicemail with a custom message. The simplest way to implement this in Vapi is with an IF-based tool call that returns a different destination number based on current time.

Alternatively, use multiple assistants and route the inbound call to a different assistant based on time, each with its own transfer destinations.

Common Transfer Issues

Transfer fails with "no destinations available." The destinations array is empty or the LLM did not pick one. Add explicit prompt instructions. Transfer connects but caller hears silence. The receiving end did not answer and the transfer is hung waiting. Configure a timeout and fallback message on the transferPlan. Warm transfer summary is inaccurate. The LLM generating the summary has poor context. Make sure the conversation history is complete and consider fine-tuning the summary prompt in the transferPlan.

Recording Through a Transfer

By default, Vapi stops recording when a transfer happens. For compliance use cases you may need to continue recording after the transfer. This is not directly supported in Vapi; it requires routing the call through your own Twilio flow before the transfer happens. Talk to your telephony provider for the specific config.

Voicemail Detection Before Transfer

If the receiving number goes to voicemail, you probably do not want to drop the caller into a voicemail inbox without context. Use Vapi's voicemail detection on outbound transfers. If voicemail is detected, the agent can either leave a summary message on behalf of the caller or return to the original caller and try a different destination.

Success Rate by Transfer Configuration

Single destination, clear description94%
3-4 destinations, distinct use cases87%
5+ destinations, overlapping descriptions62%
Warm transfer with summary90%

Testing Transfers Before Production

Transfer tests are easier to mess up than any other voice agent feature because they depend on external phone numbers actually answering. Test each destination number individually, test during business hours and after hours, test the warm summary to make sure the LLM generates accurate context, test voicemail behavior. A 15-minute test session saves embarrassing production failures.

Community & Training

Join 215+ AI Agency Owners

Get free access to our all-in-one outreach platform, AI content templates, and a community of builders landing clients in days.

Access the Free Sprint
22 people joined this week