Configure warm transfer modes

Introduce a caller with a message, summary, or TwiML before connecting.

Traditional warm transfer dials the destination, delivers context on the destination call leg, and then connects the customer. Use these modes when the destination needs a fixed message, generated summary, or Twilio Markup Language (TwiML) instructions before receiving the call.

This guide starts with an existing transfer call tool. To create the tool, configure destinations, and add it to an assistant, follow Transfer call tool. For an AI conversation with the destination, use Assistant-based warm transfer.

These five warm-transfer modes are supported on Twilio calls. Vapi uses Twilio while dialing and controlling the separate call to the receiving person, called the destination leg. Test the transfer through the same Twilio phone number and destination you will use in production.

Choose a warm transfer mode

Choose the mode based on what the destination should hear and whether Vapi should wait for the destination to speak.

Dashboard modeAPI valueDestination experience
Warm Transfer with Messagewarm-transfer-say-messageHears a fixed message before connection
Warm Transfer with Summarywarm-transfer-say-summaryHears a generated conversation summary before connection
Warm Transfer with TwiMLwarm-transfer-twimlReceives the configured TwiML instructions before connection
Warm Transfer - Wait for Operator, Then Say Messagewarm-transfer-wait-for-operator-to-speak-first-and-then-say-messageSpeaks first, then hears a fixed message
Warm Transfer - Wait for Operator, Then Say Summarywarm-transfer-wait-for-operator-to-speak-first-and-then-say-summarySpeaks first, then hears a generated summary

The wait-first modes are useful when the destination has an automated greeting or when you want to avoid speaking over the operator. Their timeout controls how long Vapi waits before delivering the message or summary.

For more information about Warm Transfer - Experimental, including how to configure an AI assistant to speak with the destination before connecting the customer, see Assistant-based warm transfer.

Configure warm transfer

Update the transfer plan on each destination that should use a traditional warm transfer.

1

Open the transfer destination

In the Vapi Dashboard, open Tools, select the transfer call tool, and expand Destinations. Select the phone-number destination you want to configure.

2

Select the transfer mode

Expand Transfer Plan. Under Transfer Mode, select one of the five warm-transfer modes covered by this guide.

Transfer Mode menu showing five traditional warm-transfer modes and assistant-based warm transfer
Select a warm-transfer mode in the Dashboard
3

Configure the destination content

For a message mode, enter the fixed introduction under Message to Operator.

For a summary mode, use Summary Plan to enable summary generation. Configure the system message, the user message containing {{transcript}}, and a summary timeout from 1 to 60 seconds.

For the TwiML mode, enter valid TwiML in TwiML.

4

Configure wait-first timing

For either wait-first mode, set Wait for Operator Timeout (seconds) from 1 to 600 seconds. The default is 60 seconds.

5

Save the tool

Click Save, then place a test call using the same telephony provider and destination type you will use in production.

Configure messages and summaries

A message mode speaks the exact value of transferPlan.message. Use it when every call to the destination can use the same introduction.

A summary mode generates destination-specific context with transferPlan.summaryPlan. The user message must include {{transcript}} if the summary should use the conversation. This is separate from the assistant’s end-of-call analysis summary, which runs after the call and is not spoken during transfer.

Keep destination introductions short. The destination is waiting to receive a live caller, so include only the caller’s intent and the information needed to accept the call. A message value can be at most 1,000 characters.

Configure TwiML

Use warm-transfer-twiml when the destination call leg needs instructions beyond a single message. See Twilio’s TwiML for Programmable Voice reference for the XML format and general behavior. The twiml value can contain at most 4,096 characters and supports these verbs in a Vapi transfer:

  • Say
  • Play
  • Gather
  • Pause
  • Hangup

The TwiML runs on the destination call leg before the customer is connected. Test menus and Gather behavior with the exact destination system used in production.

Vapi Dashboard showing Warm Transfer with TwiML and an example TwiML message
Configure TwiML for the destination call leg

Verify the warm transfer

Place a test call and trigger the configured destination. Confirm that:

  1. The destination rings before the customer is connected.
  2. The destination hears the configured message, generated summary, or TwiML output.
  3. A wait-first mode allows the operator to speak before delivering the content.
  4. The customer and destination can hear each other after the introduction.

In Logs → Call Logs, inspect the transfer history and destination content. In Logs → API Logs, check for validation, summary-generation, and transfer errors.

Troubleshooting

SymptomLikely causeResolution
The call transfers, but the destination hears no introductionThe call is not using supported Twilio telephony or the selected mode does not match the configured fieldConfirm the call’s telephony provider. Use a message mode with message, a summary mode with summaryPlan, or TwiML mode with twiml.
The destination hears no summaryOnly the assistant’s end-of-call summary is configuredEnable transferPlan.summaryPlan on the destination and include {{transcript}} in its user message.
Summary generation times outsummaryPlan.timeoutSeconds is too short for the selected modelIncrease the timeout within the 1–60 second range and keep the summary prompt concise.
A wait-first transfer pauses too longThe operator or automated system did not produce detectable speechReduce transferPlan.timeout or use the corresponding non-wait mode.
The message talks over the destination greetingA non-wait mode starts the introduction immediatelyUse the corresponding Wait for Operator mode and set an appropriate timeout.
The API rejects the TwiMLThe value is invalid XML, too long, or uses unsupported verbsUse valid XML under 4,096 characters and limit the instructions to the supported verbs.
The TwiML behaves differently from the testThe destination interactive voice response system handles timing or input differentlyTest the same TwiML against the production destination and simplify Gather, Pause, or audio timing.

If the transfer is initiated but the destination never rings or the call drops, follow Troubleshoot call forwarding drops.

API reference

The Update Tool API reference documents transfer-plan messages, summary plans, timeouts, and TwiML fields.