Dynamic transfer not working: `transfer-destinatio...
# support
b
@Shubham Bajaj I'm following the exact instructions in the [Dynamic call transfers docs](https://docs.vapi.ai/calls/call-dynamic-transfers#quick-implementation-guide) but it's transfer is not working due to the
transfer-destination-request
not firing for my webhook despite the server message being enabled for the assisstant. The logs for test calls always correctly show the transfer tool being called but the event doesn't fire. Here are some IDs of the test calls I made to test just within the last 1-2hrs: - 3a56ba7d-013e-48a7-bd9d-e224ffcfc919 - 78a5377a-4dbf-43d8-934f-b66abf77174b - ac05568f-ccb4-4a01-8777-d1c152f81840 - 95f44944-922f-4db1-84e4-2b35d52fec59 https://cdn.discordapp.com/attachments/1417235104404734075/1417235105923207271/image.png?ex=68c9be8c&is=68c86d0c&hm=50ba6e52e155559448bffd2dc8a835bf6f5b50c29d1f85fdaa4b368e22406f78& https://cdn.discordapp.com/attachments/1417235104404734075/1417235106602680410/image.png?ex=68c9be8c&is=68c86d0c&hm=1ec62a407ea0dca96ba98e13e0e7704045f05b40441a07a83944000b2af83c0e&
b
I am having the exact same issue.
v
Thank you for the detailed info. To help diagnose why the
transfer-destination-request
event isn't firing, could you confirm where your server URL is set (e.g., at the assistant, function, phone number, or account level)? This affects which events are routed to your webhook according to [Vapi's URL priority rules](https://docs.vapi.ai/server-url/setting-server-urls#url-priority). Knowing this will help pinpoint if the webhook is being triggered as expected. Sources: - [Dynamic call transfers docs](https://docs.vapi.ai/calls/call-dynamic-transfers#quick-implementation-guide) - [Setting server URLs & priority](https://docs.vapi.ai/server-url/setting-server-urls#url-priority)
s
cc: @kyle
🔵 19:10:23:477 [user LOG] Model called tool: dynamic_transfer_rashidy_law({"call_reason":"Requesting an update on my case","caller_name":"Jason","transfer_destination":"george"}) Dynamic Transfer Tool doesn't expect any parameters, so if you try to pass any parameters (even with destinations array set to empty), the LLM will try to pass some arguments which will eventually consider that destination and your request will fail. So if LLM calls a dynamic transfer tool without any arguments and your destination's array is empty and we see assistant.server message includes transfer destination request then we send a request to your server.
b
Thanks for explaining that. However that means that the dynamic transfer example in the docs is broken since it also specifies parameters like I am:
Copy code
parameters: {
      type: "object",
      properties: {
        reason: {
          type: "string",
          description: "Reason for transfer"
        },
        urgency: {
          type: "string",
          enum: ["low", "medium", "high", "critical"]
        }
      }
    }
Similar to the example, we need to have the LLM identify what the call reason, caller name and who to transfer the call to - how do we do that?
s
use messages history and transcript.
b
thanks! We were able to get the cold transfer to work but the warm transfer is not working? Here's what we're sending in response to
transfer-destination-request
request:
Copy code
{
  "destination": {
    "type": "number",
    "message": "Transferring you now...",
    "number": "+16479544863",
    "numberE164CheckEnabled": true,
    "callerId": "+18888665552",
    "extension": "101",
    "transferPlan": {
      "mode": "warm-transfer-with-summary",
      "summaryPlan": {
        "enabled": true,
        "messages": [
          {
            "role": "system",
            "content": "Please provide a summary of the call."
          },
          {
            "role": "user",
            "content": "Here is the transcript:\n\n{{transcript}}\n\n"
          }
        ]
      }
    }
  }
}
and our transfer tool is:
Copy code
{
  "id": "a77ec8d4-b622-4a9f-a5a5-6e02ac3bb818",
  "createdAt": "2025-09-16T15:20:01.693Z",
  "updatedAt": "2025-09-16T20:44:44.076Z",
  "type": "transferCall",
  "function": {
    "name": "dynamic_transfer_rashidy_law",
    "description": "Transfer call to appropriate destination at Rashidy Law"
  },
  "messages": [
    {
      "type": "request-start",
      "blocking": false
    }
  ],
  "orgId": "60d8f901-8f0e-489f-bf40-439c2f1dfea9",
  "destinations": []
}
How do we make warm dynamic transfers?
would appreciate the help here for us to go live @Shubham Bajaj @kyle
k
Warm transfers are exclusively a Twilio feature, so if you are using another provider you will have to use blind transfers
s
@bibs @batman ^^
b
We are using twilio. Can you please help us make warm dynamic transfers w/ twilio? @kyle (cc: @bibs )
b
@kyle we successfully return the number to forward the call to in the
transfer-destination-request
but the agent just hangs up after without error. Here's a test call ID:
4d937e5d-34b6-4f17-8cd0-fadff1a28e67
c
Sorry could you please send another call id?
2 Views