Skip to main content
These webhook events are triggered when using the Ringing flow — where a caller initiates a call and the recipient receives an incoming call notification with accept/reject options. This is the standard calling experience for 1-on-1 and group calls initiated through the Chat SDK.
For calls started via direct session join (without ringing), see Call Session Events.

call_initiated

Triggered when a user initiates a call to another user or group. Idempotency Key: webhook + trigger + data.call.id + data.call.sentAt

call_started

Triggered when the call session begins (first participant joins after accepting). Idempotency Key: webhook + trigger + data.sessionId + data.created_at

call_participant_joined

Triggered when a participant joins the active call. Idempotency Key: webhook + trigger + data.sessionId + data.occupant.joined_at

call_participant_left

Triggered when a participant leaves the active call. Idempotency Key: webhook + trigger + data.sessionId + data.occupant.left_at

call_ended

Triggered when the call session ends (all participants have left). Idempotency Key: webhook + trigger + data.sessionId + data.destroyed_at

call_busy

Triggered when a 1-on-1 call cannot connect because the recipient is already on another call.
This event is exclusive to 1-on-1 calls. In group calls, all participants can join at any time, so a “busy” state does not apply.
Idempotency Key: webhook + trigger + data.call.id + data.call.sentAt

call_cancelled

Triggered when the caller cancels the call before it is answered. Idempotency Key: webhook + trigger + data.call.id + data.call.sentAt

call_rejected

Triggered when the recipient explicitly rejects a 1-on-1 call.
In group calls, this event is not triggered — the call remains active as long as at least one member joins.
Idempotency Key: webhook + trigger + data.call.id + data.call.sentAt

call_unanswered

Triggered when a call goes unanswered. For group calls, this fires only if no members join at all. Idempotency Key: webhook + trigger + data.call.id + data.call.sentAt