Skip to main content

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

Transfer call configuration showing Description prompt, phone number field, pre-tool message with multi-language support, and custom server URL option
SettingDescription
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 numberDestination number in international format (e.g., +19876543210)
Pre-tool messageWhat the agent says while transferring - e.g., “Sure, I’ll transfer the call for you. Please wait a moment.” Supports multiple languages.
Pre-call webhookOptionally 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.
Add multiple languages for pre-tool messages using + Add to support multilingual callers.

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.
Two optional fields control the webhook:
FieldPurpose
pre_call_webhook_paramThe 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_urlWhere 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:
FieldDescription
%(reason)sWhy the caller is being transferred, as determined by the LLM.
%(summary)sA short summary of the conversation so far.
%(call_transfer_number)sThe destination number the call is being transferred to.
%(call_sid)sThe 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.
{
  "pre_call_webhook_url": "https://your-api.com/pre-transfer-hook",
  "pre_call_webhook_param": {
    "transfer_reason": "%(reason)s",
    "conversation_summary": "%(summary)s",
    "transferred_to": "%(call_transfer_number)s",
    "channel": "voice"
  }
}
Static values (like "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 your pre_call_webhook_param:
{
  "id": "<execution_id>",
  "agent_id": "<agent_id>",
  "status": "in-progress",
  "telephony_data": { "...": "..." },
  "...": "...",

  "transfer_reason": "caller asked for billing support",
  "conversation_summary": "Caller could not resolve a billing issue with the agent.",
  "transferred_to": "+19876543210",
  "channel": "voice"
}
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_parampre_call_webhook_urlResult
SetSetWebhook sent to the transfer tool’s pre_call_webhook_url.
SetNot setWebhook sent to the agent-level Webhook URL (the same URL used for post-call execution webhooks).
Not setSet or not setNo pre-call webhook fires.
pre_call_webhook_param is the master switch. If it is not set, no pre-call webhook fires — even if pre_call_webhook_url is configured. The agent’s normal post-call webhook is unaffected.
Agent-level URL fallback: when pre_call_webhook_param is set without a pre_call_webhook_url, the pre-call webhook is sent to your agent’s configured Webhook URL. If you already use that endpoint for post-call execution webhooks, it will now also receive pre-call webhooks. Distinguish them by the in-progress status and the extra fields from your pre_call_webhook_param.

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)s substitution (pre_call_webhook_param).
Both save with the transfer tool and round-trip on edit.

How to Set Up Call Transfer

1

Open Tools Tab

Navigate to the Tools Tab in your agent configuration.
2

Select Transfer Call

Click “Select functions” → choose “Transfer Call” from the dropdown.
3

Configure Phone Number

Enter the destination phone number where calls should be transferred.
4

Write a Clear Description

Describe when the transfer should trigger - e.g., “Transfer when caller asks for sales, pricing, or demos.”
5

Add Pre-tool Message

Set the message your agent speaks while initiating the transfer.
6

(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.
7

Save Configuration

Click Save transfer call to apply your settings.
Multiple departments? Add separate transfer functions for Sales, Support, Billing - each with its own phone number and trigger description.

Example Conversation

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
Test before deploying! Failed transfers frustrate callers. Always verify phone numbers are correct and reachable.

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