
Retell AI Warm Transfer: Setup, Modes and Gotchas
A Retell AI warm transfer keeps your agent on the line after it dials the destination, so it can wait for a real person, brief them privately, and only then connect the caller. Retell gives you three modes — cold, warm and agentic warm — and the right one isn't about how fancy you want the handoff to sound. It's about who actually answers the phone on the other end: a call queue, a desk line, or somebody's cell that goes to voicemail after four rings.
What Are Retell's Three Transfer Modes?
All three live inside the same Call Transfer function on single and multi-prompt agents (flow agents get the same options on the call transfer node):
| Mode | What the AI does | Use it when |
|---|---|---|
| Cold | Dials, drops off immediately | Routing to a department line that always has someone on it |
| Warm | Stays on, waits for a human, plays a private whisper and/or a three-way intro | Queues and staffed desk phones where a person will pick up |
| Agentic warm | A second AI talks to whoever answers, then bridges or cancels | Cell phones, on-call techs, anyone who might not be free |
One thing to know before you build anything: Call Transfer only works on phone calls, not web calls. If you're testing from the dashboard's web call button and the transfer never fires, that's why. And if what you actually want is to hand the caller to a different AI agent(receptionist to billing, say), that's Agent Transfer, a separate tool that keeps the same call and the full history.
Why Cold Transfers Lose Callers
A cold transfer is the AI version of “please hold” followed by a click. The person who picks up has zero context. They say “Hi, how can I help?” and the caller, who just spent three minutes explaining a leak over the kitchen to your agent, has to explain it all again.
That repeat is the moment callers get annoyed, and it undoes the thing the voice agent was good at. On the roofing agents I build, the agent's real job is qualifying: address, damage type, insurance or cash, how urgent. If the owner picks up blind, all of that is wasted. The point of a warm transfer isn't politeness. It's moving the data the agent already collected into the human's ear before they say hello.
Cold still has a place. If the destination is a staffed support line where every rep reads the CRM before answering, cold is faster and cheaper. It's also the only mode where SIP REFER is on the table, which matters for caller ID (more on that below).
How Do You Set Up a Warm Transfer in Retell?
- Add the function.Functions → + Add → Call Transfer. The destination can be an E.164 number, a SIP URI like
sip:user@domain, or a dynamic variable. I almost always use a variable so one agent can route to different people by service area or time of day. - Write the trigger into the prompt.“Transfer if the caller is frustrated” is too vague. Name the cases: asks for a person twice, active water coming in, disputes an invoice. Vague conditions give you both missed transfers and transfers nobody needed.
- Pick Warm Transfer and set Internal queue or hold system. Set it to Yes if the destination queues calls. The agent then waits until a real person starts speaking before it debriefs, up to the Wait Time for Agent Answer, which defaults to 30 seconds. For a queue that regularly runs two minutes, 30 seconds is too short. Raise it.
- Write the whisper.The Whisper Debrief Message is spoken only to the destination. The caller can't hear it. Then an optional Three-Way Debrief Message plays to both sides once they're connected.
- Set caller ID and ring duration, then test from a real phone to a real phone. Including the path where nobody answers.
There's also a Navigate IVR switch for destinations that answer with a phone menu. Turn it on only if you have to. If you control the destination, give the agent a direct number instead of teaching it to press 3 then 1.
What Should the Whisper Message Say?
Short. The person hearing it is standing on a ladder or walking between meetings. They need to decide in five seconds whether they're ready. Mine follow one pattern: who, what, how urgent, what's already done.
Incoming transfer from the AI line. {{caller_name}} in {{city}},
{{issue_summary}}. Urgency: {{urgency}}. Insurance claim: {{has_claim}}.
Address is already captured. Connecting now.Everything in braces comes from dynamic variables extracted earlier in the call. If you haven't set up extraction, do that first. A whisper that just says “you have a transfer from the AI” is a cold transfer with extra ringing.
The three-way message is different: the caller hears it too. Keep it to one line that reassures them nothing got lost. “I've got Mike on the line, and I've told him about the leak over your kitchen.” That sentence does more for the caller's mood than anything the agent said in the previous three minutes.
When Is Agentic Warm Transfer Worth It?
When the person on the other end might not be free, and you want someone to ask before dumping a caller on them. With agentic warm, a dedicated transfer agent calls the destination while your caller sits on hold, has a short back-and-forth, and then calls one of two tools it alone has:
- Bridge Transfer— the person is ready, connect the caller.
- Cancel Transfer— they're not available; the caller goes back to your main agent, which picks the conversation back up.
This is my default whenever the destination is a cell phone. A plain warm transfer with the queue setting waits for “a real person to start speaking” — and a voicemail greeting is also someone speaking. Retell's community forum has a thread about warm transfers breaking when voicemail detection fires early and leaving the agent silent. A transfer agent whose whole prompt is “is this a person who can take the call right now? if it's voicemail or they say no, cancel” handles that case the way a human receptionist would. The caller hears the main agent come back and offer a callback instead of hearing a stranger's voicemail beep.
A few details that aren't obvious from the dashboard:
- Set Action on Timeout deliberately.When the wait time runs out, it either cancels or bridges anyway. For a cell phone, cancel. For a staffed line that's just slow, bridge.
- Transfer agents are their own species.They live in a separate list, can't take inbound or outbound calls, and you can't convert an existing agent into one. Create it from the transfer settings.
- Context flows one way. The transfer agent gets the original conversation and your dynamic variables (plus
original_call_id). Your main agent never sees the screening conversation, and the two calls are recorded separately. If Mike says “tell them I'll call back at 4,” your main agent won't know unless you pass it back yourself.
Why Did My Transfer Fail? The Caller ID Trap
You get to choose what the destination sees: the Retell agent's number or the caller's number. The caller's number is obviously nicer. The owner sees a local number instead of “that AI line again.” But it needs caller ID override from the phone provider, and support is uneven:
- Retell Twilio numbersshow the user's number on both warm and cold transfers.
- Retell Telnyx numbers only support it on cold transfer via SIP REFER.
If override isn't supported, the transfer doesn't fall back. It fails. So a Telnyx number plus warm transfer plus “User's Number” is a configuration that looks fine in the dashboard and breaks on every call. If you're seeing transfers die right after the agent says “let me connect you,” check this first. Either switch to the agent's number (and have the person save it as a contact so they know to answer), or move to a number that supports override for the mode you need.
Custom SIP headers have a similar catch: they survive only when you transfer straight to a SIP endpoint. Send the call to a regular PSTN number and they may get stripped on the way.
What Does a Warm Transfer Cost?
Less than people assume. While the agent is on the line — including the hold and briefing phases — the call bills at the normal per-minute rate. Once the caller is bridged and the agent drops off, the AI fee stops. Only telephony keeps running.
Rough shape for a typical lead call: four minutes of the agent qualifying, up to a minute of hold and whisper, then twelve minutes with the owner. You pay the AI rate on about five minutes and telephony on all seventeen. The warm part adds maybe a minute of AI time over cold. That minute is the cheapest thing in the whole call, and it's the one that decides whether the caller stays.
Agentic warm adds the transfer agent's own call on top, since it's a real outbound call to the destination. Still small, but budget for it if you're transferring hundreds of calls a day. If you're comparing platforms on this, my Retell vs Vapi breakdown covers how the per-minute math differs.
The Small Stuff That Makes It Feel Human
- Hold audio. Presets are Ringtone (the default), Relaxing Sound, Uplifting Beats and No Music. For your own track, upload it through the create-asset API and set
on_hold_musictocustom. Limits are 10 MB and 210 seconds. Silence is the worst option; callers hang up on dead air. - Tell the caller what's happeningbefore the transfer starts: “I'm getting Mike, it'll be about thirty seconds.” A number sets expectations; “please hold” doesn't.
- Set ring duration per transfer if one destination is slower than the rest. Left unset, it uses the agent-level value.
- Fix interruptions first. If your agent is already talking over callers, a perfect transfer won't save the call. People ask for a human because the bot was annoying, and that's a prompt problem.
My rule of thumb: cold for queues that read the CRM, warm for desks where someone always answers, agentic warm for anyone carrying the phone in their pocket. If you're just getting started, set up the base agent with my Retell AI setup guide and add the transfer once the qualifying questions are solid.
Want a Voice Agent That Hands Off Cleanly?
I build Retell agents for service businesses that qualify the lead, brief your team and hand the call over without anyone repeating themselves. Tell me who answers your phones and I'll tell you which transfer setup fits.
Transfer modes, settings, defaults, caller ID support and billing behavior verified 26 September 2026 against Retell's Transfer call tool documentation. The cost example is arithmetic on the billing rules, not a measured invoice.
Related Posts
Voice AI
ElevenLabs Agents vs Retell AI: The Real Per-Minute Cost
ElevenLabs Agents bills $0.08/min for hosting only — the LLM and the phone line are extra. Retell's $0.07 is $0.055 infrastructure plus $0.015 voice plus $0.015 telephony plus the model you pick. Worked math on a 3,000-minute month, why concurrency (not rate) decides the platform, and the finding that the model line moves the bill harder than the platform does.
Voice AI
Why Your Voice AI Agent Keeps Interrupting
Barge-in fires on audio energy, not on meaning, so a cough ends the agent's turn exactly like a real objection does. The difference between endpointing and barge-in, what Retell's interruption_sensitivity and responsiveness each actually control, why Vapi's numWords is the setting that fixes this, and the tuning order that stops you shipping an agent that is both slow and rude.
Voice AI
Retell AI vs Vapi in 2026: Which I Actually Ship for Client Voice Agents
From someone who deploys both: pick Retell for a managed, low-latency agent with one predictable bill; pick Vapi when you're a developer who wants control over every provider. Real per-minute costs land at $0.13–$0.33 (not the $0.05–$0.07 advertised), a full comparison table, and the decision rule I use — who owns it after launch.