Skip to main content

Events

eventType has 18 possible values in total (12 outbound + 6 inbound). This page is the reference for when each eventType fires.

info

All events share the same payload structure (see Payload Spec). The only differences are the eventType value and the presence/absence of body.errors[] on error.

Outbound events (OUTBOUND, 12 types)

eventTypeLabelWhen it fires
OUTBOUND_CALL_PENDINGPendingImmediately after an outbound call is queued
OUTBOUND_CALL_REQUESTEDRequestedA call request was accepted and the dial instruction was issued to the telephony provider
OUTBOUND_CALL_CALLINGOutbound CallingRinging the recipient, or the call is being connected
OUTBOUND_CALL_CLOSINGOutbound ClosingPost-call wrap-up phase after disconnection
OUTBOUND_CALL_COMPLETEDOutbound CompletedCall completed normally. If errors is non-empty, it completed with errors
OUTBOUND_CALL_EXPIREDExpiredThe scheduled outbound dial window was exceeded
OUTBOUND_CALL_NO_RESPONSENo ResponseThe recipient did not answer the ringing call
OUTBOUND_CALL_CANCELEDCanceledCanceled from the PENDING state by a user action
OUTBOUND_CALL_BUSYBusyThe recipient's line was busy
OUTBOUND_CALL_UNREACHABLEUnreachableThe recipient could not be reached (out of service area, powered off, etc.)
OUTBOUND_CALL_MAX_ATTEMPTS_REACHEDMax Attempts ReachedThe redial attempt count, including retries, reached its upper limit
OUTBOUND_CALL_ERROROutbound ErrorAn error occurred during an outbound call (details in body.errors[])

Inbound events (INBOUND, 6 types)

eventTypeLabelWhen it fires
INBOUND_CALL_CONNECTINGConnectingAn incoming call was received and internal processing started
INBOUND_CALL_CALLINGInbound CallingThe inbound call was established and conversation is in progress
INBOUND_CALL_CLOSINGInbound ClosingPost-call wrap-up phase after disconnection
INBOUND_CALL_COMPLETEDInbound CompletedThe inbound call completed normally
INBOUND_CALL_CONCURRENCY_LIMIT_EXCEEDEDConcurrency Limit ExceededThe project's concurrent-call limit was reached
INBOUND_CALL_ERRORInbound ErrorAn error occurred during an inbound call (details in body.errors[])

Whether an event is delivered

Toggle individual events on/off in the Notification Triggers section of the dashboard. Events turned off are not delivered at all.

Receiver-side implementation pattern

function onWebhook(payload: WebhookPayload) {
const { eventType, body } = payload;

// 1. Detect errors via body.errors
if (body.errors?.length) {
handleError(eventType, body);
return;
}

// 2. Branch on eventType
switch (eventType) {
case 'OUTBOUND_CALL_COMPLETED':
case 'INBOUND_CALL_COMPLETED':
onCompleted(body);
break;
case 'OUTBOUND_CALL_NO_RESPONSE':
case 'OUTBOUND_CALL_BUSY':
case 'OUTBOUND_CALL_UNREACHABLE':
onUnreachable(body);
break;
// ... handle other eventTypes similarly
default:
// Don't crash on unknown eventType values
console.log(`Unknown eventType: ${eventType}`);
}
}

For full implementations see Sample Receivers.