A call transfer was not done, but we sent the transfer

Hi everyone! please help.
call_631e600e9057d627b3e1368ba84: In this call we did a transfer and in the log below you’ll see that we send the ‘transfer_number’ not empty, so the call should have been transferred, but else, it keeps in call for more than 40s before the user hangs up.

2026-05-08 17:14:09.500 call_631e600e9057d627b3e1368ba84 info: Latency for response_id: 5 - e2e: 2432 asr: 164 llm: 1921 tts: 238
2026-05-08 17:14:09.613 call_631e600e9057d627b3e1368ba84 verbose: Current response Id: 5 Received Response: {
  response_type: 'response',
  response_id: 5,
  content: '',
  content_complete: true,
  end_call: false,
  transfer_number: '+12185274084',
  digit_to_press: null
}
2026-05-08 17:14:09.886 call_631e600e9057d627b3e1368ba84 verbose: Sending updates (transcript trimmed to last 2 utterances): {
  transcript: [
    { role: 'user', content: 'Please. ', words: [Array] },
    {
      role: 'agent',
      content: 'Thanks ',
      words: [Array],
      metadata: [Object]
    }
  ],
  interaction_type: 'update_only'
}

Just as an example, in this other call it worked: call_820aaab2731fece1c9b2de0268c and we did the same but this has a log the other one does not have: 2026-05-08 17:34:35.002 call_820aaab2731fece1c9b2de0268c info: Calling tool: transfer_call. So we don’t understand what happened in the first call that did not worked.

Hello @emilia

Thanks for sharing the call ids. I’ve escalated this to our team for further review.

We’ll update you as soon as we hear back.

Best regards

Hey @emilia

Team traced call_631e600e9057d627b3e1368ba84 against the public log and the custom-LLM handler. The transfer was lost due to a timing race in the response stream.

Recommended fix on your custom LLM (api.getpuppeteer.ai/llm-websocket):

  • Emit transfer_number earlier in the stream — ideally on the very first content chunk of the transfer response, or on a frame that also carries content. Don’t put it only on a trailing empty frame after a long farewell sentence.
  • Keep the farewell preceding the transfer short (or omit it). The longer TTS plays after transfer_number is captured, the larger the window for a turn flip + new response_required to wipe out the pending transfer.

Thank You