How do I get my AI phone agent to hand a call to a real person when it matters?
Short answer: ElevenLabs gives agents two built-in system tools for this: transfer to number (hands the call to a specific phone number, like your own line or an answering service) and agent transfer (hands the call to another ElevenLabs agent). Both are set up in the dashboard with no code. The part that actually needs testing is the handoff itself: a documented bug in ElevenLabs' call-handling means the agent's voice can cut off mid-sentence the instant a transfer or end-call action fires, before it finishes speaking. If you're on Twilio, there's a known workaround; if you're not, test this specifically before you trust it with real customers.
A caller who gets stuck talking to a bot when they needed a person is often a caller you don't get back, so you want this handoff to actually work, not just exist in a settings panel.
I'm Ranjit, and I run Blur Studio: 15+ years building software, 120 apps taken live, and clients who have gone on to raise $10M+. I build AI systems and processes that help businesses do a lot more with a lot less time. I also work differently from most of what else is out there, more on that further down this page. Say hello.
This page may contain affiliate links from which Blur Studio earns commissions.
Knowing when to get a human on the line is one of the most important judgment calls an AI phone agent makes. Getting the mechanics of the handoff right is a separate problem from getting the judgment right, and it's the one that actually causes complaints.
How call transfer works in ElevenLabs
ElevenLabs' Agents Platform ships two system tools for this out of the box, no custom code needed:
- Transfer to number: hands the live call to a specific phone number, which could be your own cell, a front desk line, or an answering service. This is the one most small businesses want.
- Agent transfer: hands the conversation to a different ElevenLabs agent, with an optional reason passed along, useful for multi-agent setups where one agent screens and another handles a specific task.
Alongside these, the end call system tool is added to every agent built in the dashboard by default, and decides when a conversation is actually over. The wider build is described in building an AI phone agent with ElevenLabs Agents.
The bug worth knowing about before you launch
A developer who integrated ElevenLabs with Twilio documented and reported a real problem: when a transfer or end-call action fires, the audio stream can cut off immediately, sometimes mid-word, before the agent finishes whatever it was saying. The reported fix, published around the time of writing and still worth checking against ElevenLabs' current behavior before you launch, routes around the native tools: instead of calling ElevenLabs' built-in transfer/end-call action directly, you build your own backend tool that returns a success response right away (keeping the audio alive) and then performs the actual transfer or disconnect a few seconds later through Twilio's own API. The catch: that workaround only works if your number is on Twilio's Programmable Voice, not a SIP trunk connection, since SIP trunk numbers can't be updated the same way through Twilio's API.
What to do about it: before you put this live, call the number yourself and listen for whether the agent finishes its sentence ("let me transfer you now") before the line actually moves. If it cuts off, that's the bug, and the fix depends on which telephony provider you're using underneath ElevenLabs, not something you can toggle in ElevenLabs' own settings.
What the backend-delay workaround actually does, in plain terms: instead of letting ElevenLabs' own transfer action both speak the handoff line and immediately execute the transfer in the same step, your own small backend service intercepts the request, tells ElevenLabs "done" right away so the audio keeps playing uninterrupted, waits a few seconds (long enough for the agent to finish the sentence), and only then calls Twilio's API to actually move the call to the new number. It's a short delay most callers won't consciously notice, but it's enough to stop the sentence from being cut off mid-word. Building this requires somewhere to host that small backend service and a Twilio account with API access, which is exactly the kind of small, unglamorous integration piece that's easy to skip and then regret.
If you're not on Twilio's Programmable Voice at all, whether you're on a SIP trunk or a different provider entirely, that specific fix doesn't translate directly, but the underlying idea still does: whatever your telephony provider's API lets you do to delay a transfer by a few seconds after your own service acknowledges the request is worth building the same way. The specific API calls differ by provider, but the shape of the fix (acknowledge first, transfer a beat later) is the same regardless of who's carrying your calls. If you still need to link the number first, see connecting your Twilio number to an AI voice agent.
What I'm telling clients who ask about this
If you're setting this up for anything where a bad handoff costs you a customer (an emergency job, a complaint, a sale that needs a human to close), test the actual audio behavior, not just whether the call technically lands on the right number. A transfer that works but sounds broken is almost as bad as one that fails outright, because the caller hears a glitch right as they're being passed to someone who's supposed to fix their problem. I'd rather a client finds this out on a test call at 11pm than from an angry customer. If the agent also feels slow before it transfers, see why your AI phone agent replies slowly.
Using agent transfer for a screening setup
Agent transfer, the second system tool, is less commonly needed than transfer to number, but it earns its place in one specific setup: a front-line agent that screens every call and routes it to one of several specialist agents, rather than one agent trying to handle everything. A property brokerage, for instance, might have a screening agent that asks "are you calling about buying, renting, or an existing tenancy issue" and then hands off to a leasing agent, a sales agent, or a maintenance-focused agent, each with its own narrower script and its own set of tools. The handoff reason you pass along matters here: giving the receiving agent context on why it's getting the call (rather than starting the conversation cold) avoids making the caller repeat themselves, which is one of the fastest ways to make an AI handoff feel worse than just talking to one person the whole time.
The same mid-sentence cutoff risk applies to agent transfer as it does to transferring to a phone number, so it's worth testing the same way: listen for whether the screening agent finishes its handoff line before the conversation actually moves to the specialist agent.
Deciding what matters enough to transfer
Before any of the mechanics, decide the actual trigger list: a direct complaint, a request to speak to a manager, anything the agent isn't confident it understood correctly, and anything financial beyond a published price. Resist the temptation to make this list too short in the name of "letting the AI handle more." A caller who has to ask twice for a human, or who gets a wrong answer because the agent pushed past its own uncertainty instead of transferring, costs you more than the call the AI could have handled itself.
The right trigger list also depends heavily on what you actually do. A property management business fielding after-hours maintenance calls needs "anything that sounds like a safety issue, no matter how the caller phrases it" near the top of the list, since the cost of under-triggering a transfer (a gas smell or a flood waits for a callback) is much higher than the cost of over-triggering it (a person answers a call that turned out to be minor). A sales line selling a considered-purchase product has the opposite shape: the trigger list should lean toward transferring anyone who sounds close to ready to commit, since that's the moment a human closing the conversation is worth more than the AI continuing to answer questions. Write your own trigger list against what a missed transfer actually costs you, not a generic template. Order and ticket questions are a good example of what the agent can answer instead, see letting an AI phone agent look up an order or ticket status.
How do I set this up
- Decide which calls need a person: list the specific situations (a complaint, a price negotiation, anything after hours if you want a human then too).
- Add the transfer to number system tool in your agent's configuration and point it at the right number for each situation.
- Write the handoff line explicitly ("let me get you to someone who can help with that right now") so the agent says something before transferring, not just going silent.
- Test the actual audio, specifically at night and on your real phone system, not just in ElevenLabs' testing console.
- If you hear the cutoff bug, check whether you're on Twilio with Programmable Voice numbers; if so, the backend-delay workaround applies, otherwise you may be stuck checking for an ElevenLabs fix before fully trusting it.
- Test the failure case too: call the transfer-to number from a second phone and let it ring unanswered or go to voicemail, so you know what the caller hears if nobody picks up on the other end, rather than discovering that gap during a real emergency call.
- Re-test after any change to your agent's configuration, not just at launch. A prompt tweak or a model change elsewhere in the agent can change timing in ways that reintroduce the cutoff even if it tested clean before.
- Keep a short log of real transfers for the first few weeks: which situations actually triggered one, and whether the handoff sounded clean. This is the fastest way to catch a trigger-list gap (a situation that should have transferred but didn't) before it becomes a pattern of complaints rather than a one-off.
How I'd approach this
This is a small piece of a bigger system, and it's exactly the kind of detail that's easy to get wrong without testing it under real conditions. If you want the transfer logic built properly, with the delay workaround handled correctly for your specific telephony setup, that's a focused piece of work I do for clients rather than something to leave half-configured. See ElevenLabs' agent plans to start building the agent itself.
Need help finishing or building this?
If your transfer setup is glitching, or you want it built and tested properly the first time across your real phone system, I can do that.
Questions people ask
Does ElevenLabs have a built-in call transfer feature?
Yes. Transfer to number hands the call to a specific phone number with no custom code, and agent transfer hands it to another ElevenLabs agent. Both are system tools configured in the dashboard.
Why does the AI cut off mid-sentence when it transfers a call?
A documented bug in how ElevenLabs handles the transfer and end-call actions can cut the audio stream immediately when the action fires, before the agent finishes speaking. A reported workaround on Twilio delays the actual transfer by a few seconds using a custom backend tool, keeping the audio alive in the meantime.
Does the Twilio workaround work for every phone number setup?
No. It only works for numbers added through Twilio's native Programmable Voice integration. Numbers connected via a SIP trunk can't be updated the same way through Twilio's API, so that specific fix doesn't apply to them.
How do I test whether my transfer setup has this problem?
Call the number yourself and listen specifically for whether the agent finishes its handoff sentence before the call actually moves. Test it more than once, and test it on the real phone system you'll use live, not just inside ElevenLabs' own testing console.
Can an agent transfer to another AI agent instead of a person?
Yes, using the agent transfer system tool, which hands the conversation to a different ElevenLabs agent with an optional reason for the transfer. This is useful when one agent screens calls and routes them to a specialized agent rather than to a human, for example a front-line agent sorting leasing, sales and maintenance calls before handing each to its own specialist agent.
Does the caller have to repeat themselves after an agent-to-agent transfer?
Not if it's set up properly. The agent transfer tool can pass a reason along with the handoff, which the receiving agent should use to pick the conversation up with context rather than starting cold. If a caller has to re-explain why they called, that's a setup gap, not a limit of the feature itself.
What should the agent say before transferring?
Something explicit, like telling the caller it's getting them to someone who can help right now. Going silent and then switching the line is a worse experience than a short, clear handoff line, even before you factor in any audio bug.
What should trigger a transfer, beyond an explicit request?
A direct complaint, anything financial beyond a published price, and anything the agent isn't confident it understood correctly. A shorter trigger list than this tends to push the agent past its own uncertainty instead of handing off, which causes more complaints than it prevents.
Does the transfer number need to be staffed 24/7?
Not necessarily, but whatever number you transfer to should have its own clear behavior for after-hours calls, whether that's voicemail, an answering service, or a different number at night. Test that path specifically, not just the daytime version.
What if I'm not using Twilio at all?
The specific documented workaround is Twilio-specific, but the underlying fix (acknowledge the transfer request immediately so the audio keeps playing, then execute the actual transfer a few seconds later through your provider's own API) applies regardless of which telephony provider sits underneath ElevenLabs. You'd implement it against your own provider's API rather than Twilio's.
What happens if nobody answers the transfer number?
That depends entirely on how you've set up the number you're transferring to, not on ElevenLabs. Test this specifically: call the transfer number from a second phone and let it ring out or hit voicemail, so you know what a real caller experiences if the person on the other end doesn't pick up.