James
11/26/2025, 1:05 PMVapi Support Bot
11/26/2025, 1:06 PM{{customer.name}} variable interpolation is not supported in assistant-based warm transfers.
Instead, update your system prompt to have the assistant extract the customer name from the conversation context. For example:
json
{
"role": "system",
"content": "You are a transfer assistant. After the greeting, say: 'This is a lead from Company Name. The lead’s name is [extract customer name from conversation].' Then give a one-sentence summary of the call including the customer name. Wait for confirmation. Only if the advisor agrees, say: 'Transferring you to [customer name] now.' and call the transferSuccessful tool."
}
This will ensure the assistant announces the customer's name using information from the conversation, not a template variable.
Reference: [assistant-based warm transfer documentation](https://docs.vapi.ai/calls/assistant-based-warm-transfer)
Source:
- [assistant-based warm transfer documentation](https://docs.vapi.ai/calls/assistant-based-warm-transfer)Ham
01/21/2026, 3:39 PMChiranjeet Mishra
01/26/2026, 8:32 PM"....// your assistants prompt
you are helping {{customer.name}} and their phone number is {{customer.number}}"Ham
01/26/2026, 8:36 PMkyle
01/28/2026, 8:23 AM{
"function": {
"name": "scheduleCallbackTransfer"
},
"destinations": [
{
"type": "number",
"number": "+441234567",
"transferPlan": {
"mode": "warm-transfer-experimental",
"summaryPlan": {
"enabled": true,
"messages": [
{
"role": "system",
"content": "Extract the following from the conversation:\n1. Customer's name (as stated during the call)\n2. Customer's phone number (as stated during the call)\n3. One sentence summary of their issue/situation\n\nReturn in this exact format:\nNAME: [name]\nNUMBER: [number]\nISSUE: [one sentence summary]"
},
{
"role": "user",
"content": "{{messages}}"
}
],
"timeoutSeconds": 10
},
"transferAssistant": {
"firstMessage": "Hi, I have a customer on the line. Can I take your name please?",
"firstMessageMode": "assistant-speaks-first",
"maxDurationSeconds": 90,
"silenceTimeoutSeconds": 30,
"model": {
"provider": "openai",
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "You are a transfer assistant. You have the following information about the customer from the previous conversation:\n\n{{summary}}\n\nAfter the advisor gives their name, say: 'This is a lead from Company Name.' Then share the lead's name and give a one-sentence summary of the call (e.g., debt level or issue, include the customer name).\n\nWait for confirmation. Only if the advisor agrees, say: 'Transferring you to [customer name] now.' and call the transferSuccessful tool.\n\nIf the advisor is unavailable or declines, call transferCancel."
}
],
"tools": [
{
"type": "function",
"function": {
"name": "transferSuccessful",
"description": "Call this when the advisor confirms they can take the call."
},
"messages": [
{
"type": "request-start",
"content": ""
}
]
},
{
"type": "function",
"function": {
"name": "transferCancel",
"description": "Call this when the advisor is unavailable or declines the transfer."
},
"messages": [
{
"type": "request-complete",
"content": "Returning to the assistant to schedule a callback."
}
]
}
]
}
},
"holdAudioUrl": "https://example.com/hold-music.mp3",
"fallbackPlan": {
"message": "I apologize, our advisors are currently unavailable. Let me help you schedule a callback instead.",
"endCallEnabled": false
}
}
}
]
}Ham
01/29/2026, 7:45 PMChiranjeet Mishra
01/31/2026, 5:46 AM