Call webhooks: events and when they arrive

Last updated: 9 October 2026 · 5 min read

A call webhook has four events. Each is sent once per call: a calling service repeating a status does not produce a second request.

Steps

  1. 1

    The four events

    • call_started: an incoming call starts ringing. For an outgoing call, an agent places it.
    • call_answered: the call is picked up in the dashboard, in the app, or in WhatsApp itself (on the phone).
    • call_ended: the call is over, whatever the outcome: a conversation, no answer, declined, failed.
    • call_recording_ready: the recording, the transcript and the summary are ready. Only for calls with a recording.

    A call nobody answers has no call_answered: call_started is followed by call_ended.

  2. 2

    Order

    The order in which events reach you is not guaranteed: call_ended can arrive before call_answered. Order them by started_at, answered_at and ended_at. Store the call by id and update it on each event.

  3. 3

    A WhatsApp (QR) call placed from the dashboard or the app

    call_answered arrives when the customer picks up and call_ended as soon as the call is over. The length is counted from the answer. The recording, transcript and summary follow a few minutes later in a separate call_recording_ready.

  4. 4

    A WhatsApp (QR) call answered on the phone

    WhatsApp tells a linked device nothing when the call ends; only the phone's call log has it. The phone usually sends the log a few seconds after the call, with the call's length, so call_ended waits for it. If no log arrives within 10 minutes, call_ended comes without a length: duration_seconds: null, duration_known: false, ended_at: null. The log is only sent for numbers linked by QR after 22 September 2026.

  5. 5

    A call made from the phone itself

    Clomni learns of such a call only from the phone's call log, once it is over. All its events arrive together, after the call.

Document