What is Call Transfer?
Call transfer enables your Voice AI agent to route live calls to human agents or specific phone numbers based on conversation context. Essential for escalations, specialized support, or when human intervention is needed.Configuration Options

| Setting | Description |
|---|---|
| Description (Prompt) | Tell the LLM when to trigger the transfer. Be specific - e.g., “Transfer when caller requests to speak with a human agent or sales team.” |
| Transfer to phone number | Destination number in international format (e.g., +19876543210) |
| Pre-tool message | What the agent says while transferring - e.g., “Sure, I’ll transfer the call for you. Please wait a moment.” Supports multiple languages. |
| Pre-call webhook | Optionally notify a URL of your choice before the transfer happens — useful for sending the transfer reason to your system in real time. See Pre-call Webhook. |
Pre-call Webhook
The Transfer Call tool can fire an optional pre-call webhook — a notification sent to a URL of your choice before the call is transferred. A common use case is sending the transfer reason to your system so a human agent has context the moment the call connects.The pre-call webhook is fire-and-forget. A slow or failing webhook endpoint never blocks or delays the transfer itself.
| Field | Purpose |
|---|---|
pre_call_webhook_param | The JSON body template to send, with %(field)s substitution. This is the on/off switch — if it is not set, no pre-call webhook fires. |
pre_call_webhook_url | Where to send the webhook. If left blank, the agent-level Webhook URL is used instead. |
Available Substitution Fields
pre_call_webhook_param is a JSON template. You can reference the transfer tool’s runtime arguments using the same %(field)s substitution syntax used elsewhere. The Transfer Call tool exposes:
| Field | Description |
|---|---|
%(reason)s | Why the caller is being transferred, as determined by the LLM. |
%(summary)s | A short summary of the conversation so far. |
%(call_transfer_number)s | The destination number the call is being transferred to. |
%(call_sid)s | The telephony provider’s call identifier. |
Any field that is not available at transfer time is sent as an empty string rather than failing the substitution.
"channel": "voice" above) are passed through as-is; %(field)s placeholders are substituted with the transfer tool’s runtime arguments.
What Your Endpoint Receives
The webhook body is the same execution record you receive on the post-call execution webhook (execution id, agent id, telephony details, status, etc.), merged with the fields from yourpre_call_webhook_param:
Because the call is still in progress when the pre-call webhook fires, fields that are only finalized at call end (transcript, cost, summary) won’t be complete yet.
URL Resolution Rules
pre_call_webhook_param | pre_call_webhook_url | Result |
|---|---|---|
| Set | Set | Webhook sent to the transfer tool’s pre_call_webhook_url. |
| Set | Not set | Webhook sent to the agent-level Webhook URL (the same URL used for post-call execution webhooks). |
| Not set | Set or not set | No pre-call webhook fires. |
UI Configuration
In the agent dashboard, the Transfer Call configuration modal has a Send a pre-call webhook before transfer toggle. Turning it on reveals two inputs:- Pre-call webhook URL — the endpoint to notify (
pre_call_webhook_url). Leave blank to use the agent-level Webhook URL. - Pre-call webhook parameters — the JSON body template with
%(field)ssubstitution (pre_call_webhook_param).
How to Set Up Call Transfer
Open Tools Tab
Navigate to the Tools Tab in your agent configuration.
Write a Clear Description
Describe when the transfer should trigger - e.g., “Transfer when caller asks for sales, pricing, or demos.”
(Optional) Enable a Pre-call Webhook
Toggle Send a pre-call webhook before transfer to notify your system before the transfer happens — see Pre-call Webhook.
Multiple departments? Add separate transfer functions for Sales, Support, Billing - each with its own phone number and trigger description.
Example Conversation
Caller requests human agent
Caller requests human agent
Caller: “I’d like to speak with someone from your sales team.”Agent: “Sure, I’ll transfer you to our sales team. Please wait a moment…”Agent triggers transfer_call function → Call is routed to configured sales number
Best Practices
Be Specific
Use detailed descriptions like “Transfer to sales when caller asks about pricing, demos, or purchasing” instead of generic “Transfer call”
Test Phone Numbers
Verify destination numbers are correct and always reachable before deploying
Use Pre-tool Messages
Always set a friendly message so callers know they’re being transferred
Handle Failures
Have a fallback plan if the destination is busy or unavailable
Next Steps
Custom Functions
Build custom API integrations for your agent
Check Calendar Slots
Query availability via Cal.com integration
Book Appointments
Schedule meetings during live calls
Tools Tab Guide
Complete function configuration guide

