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
{
    "trigger": "call_initiated",
    "data": {
        "call": {
            "id": "52",
            "conversationId": "cometchat-uid-1_user_cometchat-uid-5",
            "sender": "cometchat-uid-1",
            "receiverType": "user",
            "receiver": "cometchat-uid-5",
            "category": "call",
            "type": "audio",
            "data": {
                "action": "initiated",
                "entities": {
                    "by": {
                        "entity": {
                            "uid": "cometchat-uid-1",
                            "name": "Andrew Joseph",
                            "status": "available",
                            "role": "default",
                            "lastActiveAt": 1696933934
                        },
                        "entityType": "user"
                    },
                    "on": {
                        "entity": {
                            "sessionid": "<sessionId>",
                            "status": "initiated",
                            "type": "audio",
                            "initiatedAt": 1696934199
                        },
                        "entityType": "call"
                    }
                }
            },
            "sentAt": 1696934199,
            "updatedAt": 1696934199
        }
    },
    "appId": "<appId>",
    "region": "<region>",
    "webhook": "<webhookID>"
}

call_started

Triggered when the call session begins (first participant joins after accepting). Idempotency Key: webhook + trigger + data.sessionId + data.created_at
{
    "trigger": "call_started",
    "data": {
        "created_at": 1696934572,
        "sessionId": "<sessionId>"
    },
    "type": "call",
    "appId": "<appId>",
    "region": "<region>",
    "webhook": "<webhookID>"
}

call_participant_joined

Triggered when a participant joins the active call. Idempotency Key: webhook + trigger + data.sessionId + data.occupant.joined_at
{
    "trigger": "call_participant_joined",
    "data": {
        "occupant": {
            "joined_at": 1696934573,
            "audio_call": "true",
            "name": "Andrew Joseph"
        },
        "initial_config": {
            "is_video_muted": "false",
            "start_recording_on_call_start": "false",
            "call_version": "2.3.0",
            "is_audio_muted": "false",
            "sdk": "react",
            "mode": "DEFAULT",
            "platform": "web",
            "is_audio_only": "true"
        },
        "sessionId": "<sessionId>"
    },
    "type": "call",
    "appId": "<appId>",
    "region": "<region>",
    "webhook": "<webhookID>"
}

call_participant_left

Triggered when a participant leaves the active call. Idempotency Key: webhook + trigger + data.sessionId + data.occupant.left_at
{
    "trigger": "call_participant_left",
    "data": {
        "occupant": {
            "joined_at": 1696934501,
            "audio_call": "true",
            "left_at": 1696934553,
            "name": "George Alan"
        },
        "sessionId": "<sessionId>"
    },
    "type": "call",
    "appId": "<appId>",
    "region": "<region>",
    "webhook": "<webhookID>"
}

call_ended

Triggered when the call session ends (all participants have left). Idempotency Key: webhook + trigger + data.sessionId + data.destroyed_at
{
    "trigger": "call_ended",
    "data": {
        "all_occupants": [
            {
                "joined_at": 1696934501,
                "audio_call": "true",
                "left_at": 1696934553,
                "name": "George Alan"
            },
            {
                "joined_at": 1696934501,
                "audio_call": "true",
                "left_at": 1696934551,
                "name": "Andrew Joseph"
            }
        ],
        "destroyed_at": 1696934553,
        "created_at": 1696934501,
        "sessionId": "<sessionId>"
    },
    "type": "call",
    "appId": "<appId>",
    "region": "<region>",
    "webhook": "<webhookID>"
}

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
{
    "trigger": "call_busy",
    "data": {
        "call": {
            "id": "43414",
            "conversationId": "superhero1_user_superhero3",
            "sender": "superhero3",
            "receiverType": "user",
            "receiver": "superhero1",
            "category": "call",
            "type": "audio",
            "data": {
                "action": "busy"
            },
            "sentAt": 1744960250,
            "updatedAt": 1744960250
        }
    },
    "appId": "<appId>",
    "region": "<region>",
    "webhook": "<webhookId>"
}

call_cancelled

Triggered when the caller cancels the call before it is answered. Idempotency Key: webhook + trigger + data.call.id + data.call.sentAt
{
    "trigger": "call_cancelled",
    "data": {
        "call": {
            "id": "43408",
            "conversationId": "superhero3_user_superhero4",
            "sender": "superhero4",
            "receiverType": "user",
            "receiver": "superhero3",
            "category": "call",
            "type": "audio",
            "data": {
                "action": "cancelled"
            },
            "sentAt": 1744960111,
            "updatedAt": 1744960111
        }
    },
    "appId": "<appId>",
    "region": "<region>",
    "webhook": "<webhookId>"
}

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
{
    "trigger": "call_rejected",
    "data": {
        "call": {
            "id": "43406",
            "conversationId": "superhero3_user_superhero4",
            "sender": "superhero3",
            "receiverType": "user",
            "receiver": "superhero4",
            "category": "call",
            "type": "audio",
            "data": {
                "action": "rejected"
            },
            "sentAt": 1744960092,
            "updatedAt": 1744960092
        }
    },
    "appId": "<appId>",
    "region": "<region>",
    "webhook": "<webhookId>"
}

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
{
    "trigger": "call_unanswered",
    "data": {
        "call": {
            "id": "43410",
            "conversationId": "superhero3_user_superhero4",
            "sender": "superhero4",
            "receiverType": "user",
            "receiver": "superhero3",
            "category": "call",
            "type": "audio",
            "data": {
                "action": "unanswered"
            },
            "sentAt": 1744960170,
            "updatedAt": 1744960170
        }
    },
    "appId": "<appId>",
    "region": "<region>",
    "webhook": "<webhookId>"
}