Skip to main content

October 7, 2026

Behavior Changes

  • Call attempts on online conversations now report direction: "ONLINE". A browser session used to be reported as OUTBOUND, as if we had dialled the contact. It now reads ONLINE everywhere a call attempt appears: the conversation endpoints and every webhook payload that carries callAttempts. Existing online attempts were updated too, so earlier conversations read the same way. Phone calls are unchanged. If you validate direction against a fixed list, add ONLINE. A parser that rejects unknown values will reject these attempts. See Conversations.
  • A human_handoff block’s message is now heard on every transfer to its number. On phone calls, the transfer used to start with a fixed English “Transferring the call now”, whatever the call’s language, and neither the block’s message nor the default line was heard. The caller now hears the block’s message, or InstaView’s neutral line in the call’s language if the block has none. That line is attached to the destination number, so it can also be heard when a caller asks for a person before the flow reaches the step, and is transferred there. Until now that case always used the neutral line. Check your message texts: a line that refers to what happened earlier in the flow (“Your card is blocked now, I’ll put you through”) would then be said to someone it is not true for. Move that part into the step before the handoff and keep message about the transfer itself. See human_handoff.
  • Whatever the agent is told to say in the step right before a handoff is now said before the transfer starts. The agent used to fold it into the turn that started the transfer, and on phone calls that turn was never played, so the caller did not hear it. It is now said in a turn of its own, so the caller hears it and replies before being transferred. That adds one turn to those handoffs.

October 5, 2026

Behavior Changes

  • analysis.completed now carries every call attempt’s transcript, not only the latest one’s. The event’s callAttempts lists every attempt on the conversation, but until now only the attempt that triggered the event had its transcript. On a conversation that took two calls, the first event carried call 1 with its transcript and the second carried both calls with call 1’s transcript missing. An integration that stores callAttempts as a snapshot of the conversation lost call 1’s transcript when the second event arrived. Each attempt now carries its own transcript, the same as on GET /conversations/{id}. An attempt that produced no transcript still omits it. Payloads get larger on conversations with several answered calls, since every transcript is resent with each event.