Webhook Events
Orbit emits 176 event types across messaging, voice, agents, flows, contacts, billing, and account activity. Subscribe to specific events when registering a webhook, or pass["*"] to
receive everything.
This page is the canonical catalog — every event listed here is
emitted by the platform and accepted by the subscription validator.
For full payload examples, see the
Webhook Events Reference.The catalog is generated from
WEBHOOK_EVENT_TYPES in
packages/shared/src/constants.ts; the same constant powers the
server-side Zod enum that validates webhook_endpoints.events[], so
any name not in this catalog cannot be subscribed to.Message Events
Outbound + inbound message lifecycle across every channel (SMS, WhatsApp, RCS, email, Telegram, Messenger, Viber, etc.).| Event | Description |
|---|---|
message.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
message.sent | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
message.delivered | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
message.failed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
message.read | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
message.received | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
message.recipient_deactivated | Carrier number deactivation sweep (R16FIX 2026-05-30) — fires once per deactivated MSISDN the nightly carrier-feed sweep flips to DNC. |
message.replied | MESSAGE_REPLIED — fires when an INBOUND message is received in response to an OUTBOUND message (i.e. there is at least one prior outbound message in the same conversation). |
Contact Events
Contact CRUD, bulk-import lifecycle, opt-in/out signals, and predictive-segment transitions.| Event | Description |
|---|---|
contact.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
contact.updated | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
contact.deleted | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
contact.trait_changed | Computed-trait value transition for a single contact (DECISION — CDPAAS_REAL_TIME_TRAIT_RECOMPUTE_2026_05_28). |
contact.bulk_imported | Fired once per bulk CSV import after all rows are processed. |
contact.merged | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
contact.opted_out | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
contact.opted_in | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
contact.recertification_due | Reassigned Number Database (RMD) annual recertification due. |
contact.segment_changed | Predictive-scoring events (migration 077). |
Campaign Events
Campaign lifecycle + drip-step granularity. Use these to drive CRM journeys when a campaign starts, pauses, completes, or fans out a single drip step.| Event | Description |
|---|---|
campaign.started | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
campaign.completed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
campaign.paused | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
campaign.resumed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
campaign.drip_step.sent | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
campaign.drip_step.completed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
campaign.drip.completed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
campaign.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
campaign.updated | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
campaign.deleted | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Voice Events
Voice call lifecycle (inbound + outbound), DTMF, recording, transcription, AI summary, conference lifecycle, and voicemail.| Event | Description |
|---|---|
call.initiated | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
call.answered | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
call.completed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
call.failed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
call.transferred | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
call.dtmf_sent | Mid-call DTMF inject (B-237). |
call.recording.paused | Mid-call recording pause (B-242). |
call.recording.resumed | Mid-call recording resume (B-242). |
call.hit_voicemail | Outbound call hit a voicemail / fax (Telnyx AMD result = machine|fax). |
call.ringing | Inbound INVITE seen at the SIP edge but call not yet answered. |
conference.created | Conference lifecycle events (audit #BUG-R65). |
conference.participant_joined | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
conference.participant_left | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
conference.ended | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
recording.started | Recording lifecycle events (audit #BUG-R65). |
recording.completed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
recording.failed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
recording.qc_failed | Post-finalize QC failure (RTC-PaaS competitor-parity gap, 2026-05-29). |
voicemail.received | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
voicemail.transcript_updated | Late-arriving transcript: fires when a voicemail’s transcript was NULL at receipt (Deepgram inline failure) and a subsequent retry recovered it. |
call.transcript_ready | Telephony-aware CDP — CDP-016 parity wedge (2026-05-29). |
call.recording.ready | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
call.transcription.ready | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
call.synthesis.ready | AI summary / action-items / sentiment extracted from the transcript (opt-in). |
call.synthesized | Phase 4.4 — Post-call synthesis pipeline (scheduler-driven). |
recording.retention_deleted | Fired ahead of a retention-driven GCS purge so tenants can mirror the recording/attachment to their own archive before it is deleted. |
recording.chapters.ready | RTC-PaaS auto-chaptering (2026-05-28). |
voice_eval.run_started | Voice eval regression suite (migration 282, 2026-05-22). |
voice_eval.run_completed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
voice_eval.regression_detected | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Agent Events
AI-agent lifecycle, conversation transitions, human + agent-to-agent handoffs, calendar-tool fires, and structured agent responses.| Event | Description |
|---|---|
agent.conversation.started | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
agent.conversation.ended | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
agent.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
agent.updated | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
agent.deleted | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
agent.deployed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
agent.handoff.requested | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
agent.handoff_occurred | Phase 4.2 — Fired by agent-runtime the moment one agent delegates a conversation to another specialist agent via the enhanced transfer_to_agent tool. |
agent.response | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
agent.calendar_event.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
agent.dnc.marked | AIaaS-P0-BUG fix (2026-05-30): fired by POST /agents/dnc when an AI voice / text agent invokes the mark_dnc MCP tool and the platform persists the suppression to suppression_list (+ dnc_list mirror for voice/S… |
agent.handed_off | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Flow Events
Visual-flow lifecycle (create / publish / delete) and granular per-run execution telemetry.| Event | Description |
|---|---|
flow.execution.started | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
flow.execution.completed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
flow.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
flow.updated | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
flow.deleted | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
flow.published | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
flow.executed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
flow.execution.failed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Verification Events
OTP / verification lifecycle including the async multi-channel fallback engine.| Event | Description |
|---|---|
verification.sent | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
verification.approved | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
verification.failed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
verification.checked | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
verification.fallback_triggered | Fired by the scheduler-verify-fallback tick each time the async fallback engine advances to a new channel. |
verification.fallback_exhausted | Fired when the async fallback engine has tried every channel in the fallbackConfig.channels array without obtaining a verified status. |
Number / Porting Events
Phone-number purchase, release, port-in / port-out, and customer port cancellation.| Event | Description |
|---|---|
number.purchased | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
number.released | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
number.ported | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
number.updated | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
porting.request.cancelled | Number porting customer-cancellation event. |
porting.request.manual_review_required | Port-IN fell back into manual-review mode (GAP2_NaaS_115, 2026-05-29). |
porting.request.loa_signed | Port-IN LOA signed in-platform (cpaasparity2-porting-loa-workflow, 2026-05-29). |
number.port_out.requested | Number port-OUT lifecycle events (NaaS-005 capability-gap fix, 2026-05-29). |
number.port_out.cancelled | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Conversation Events
Conversation thread lifecycle (start / close / disposition / QM-score) — useful for cross-channel inbox automation.| Event | Description |
|---|---|
conversation.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
conversation.disposed | Fired by the auto-disposition service when a conversation is automatically closed/resolved by an AI or rule-based disposition engine. |
conversation.scored | Fired by the QM-scoring service when a conversation receives a quality-management score. |
conversation.deflected | CSPaaS Intercom Fin / Zendesk parity gap (2026-05-30) — CRM/CDP needs to distinguish AI-resolved volume from human-resolved volume. |
conversation.started | Conversation lifecycle — fired by the inbox/handoff pipeline. |
conversation.closed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
List / Segment Events
Static-list and dynamic-segment CRUD.| Event | Description |
|---|---|
list.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
list.deleted | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
segment.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
segment.deleted | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Webhook Endpoint Events
Meta-events about webhook subscriptions themselves — wire these to your tenant-admin audit pipeline.| Event | Description |
|---|---|
webhook_endpoint.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
webhook_endpoint.updated | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
webhook_endpoint.deleted | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Billing Events
Wallet balance lifecycle (low, top-up) and Stripe invoice / payment-failure mirror events.| Event | Description |
|---|---|
subscription.updated | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
balance.topped_up | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
credits.purchased | Use BALANCE_TOPPED_UP instead Deprecated. |
balance.low | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
credits.low | Use BALANCE_LOW instead Deprecated. |
invoice.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
payment.failed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Channel Failover Events
Emitted when a messaging channel auto-failed-over from its primary provider to its backup.| Event | Description |
|---|---|
channel.failover | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Push Events
Push-SDK acknowledgements (rendered / opened on-device) so tenant CRMs can mark engagement without polling.| Event | Description |
|---|---|
push.delivered | Push notification SDK ack events. |
push.opened | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Number Masking (Proxy) Events
Two-party proxy-session lifecycle + per-message forwarding events.| Event | Description |
|---|---|
proxy.session.created | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
proxy.session.closed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
proxy.message.forwarded | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
WhatsApp Events
Mirrors of Meta WABA webhook fields (account, phone, template, calls, GDPR, v25 fields).| Event | Description |
|---|---|
whatsapp.account.update | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.account.banned | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.account.restricted | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.phone.quality_update | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.phone.name_update | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.capability.update | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.security.alert | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.flow.status_change | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.template.approved | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.template.rejected | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.template.quality_update | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.template.category_update | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.template.components_update | Meta auto-edits a template’s components for compliance (e.g. inserts the standard opt-out hint into a MARKETING body). |
whatsapp.quality.changed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.call.received | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.call.connected | WhatsApp Business Calling lifecycle events (Phase 2 — 2026-05-09). |
whatsapp.call.accepted | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.call.terminated | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.call.permission_granted | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.call.permission_revoked | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
whatsapp.account.alert | Meta-issued operational alert about the WABA (e.g. policy violation, pricing change effective date, payment method failed). |
whatsapp.account.review_update | WABA went through a Meta-side review that updated its compliance status (e.g. moved to RESTRICTED / FLAGGED). |
whatsapp.business.status_update | Business profile status changed at Meta (verification badge, official business account flag, business status). |
whatsapp.user.preferences | User-level marketing preference signal. |
whatsapp.data.export_request | GDPR Article 15 (data subject access request) — user invoked “Request my data” inside the conversation. |
whatsapp.data.delete_request | GDPR Article 17 (right to erasure) — user invoked “Delete my data”. |
whatsapp.account.settings_update | WABA-level settings changed (commerce/profile/etc.). |
whatsapp.automatic_events | Meta’s auto-detected business events (cart abandoned, etc.). |
whatsapp.group.lifecycle_update | WA Group lifecycle (created/deleted). |
whatsapp.group.participants_update | WA Group participants joined/left. |
whatsapp.group.settings_update | WA Group renamed/description changed. |
whatsapp.group.status_update | WA Group activated/archived. |
whatsapp.history | Initial-connection backfill of historical messages. |
whatsapp.partner_solutions | Partner integration events. |
whatsapp.payment_configuration_update | Payment setup state changed (WA Pay). |
whatsapp.smb.app_state_sync | SMB app state sync events. |
whatsapp.smb.message_echoes | Echoes of messages sent from the SMB app (hybrid setups). |
whatsapp.template.correct_category_detection | Meta detected the template’s category was wrong vs. its actual intent. |
whatsapp.tracking_events | Per-message tracking events (link clicks, etc.). |
Supervisor Events
Supervisor warm-handoff lifecycle (request / complete / fail / cancel).| Event | Description |
|---|---|
supervisor.takeover_requested | Fired when a supervisor initiates a warm-handoff takeover of a live call. |
supervisor.takeover_failed | Fired when a supervisor takeover attempt fails (e.g. Jambonz REST error during the leg-swap). |
supervisor.takeover_completed | Fired when the supervisor successfully takes over the call and becomes the active party. |
supervisor.takeover_cancelled | Fired when a takeover is cancelled (call ended before handoff completed, or supervisor explicitly aborted). |
SIP Trunk Events
SIP-trunk registration-status transitions.| Event | Description |
|---|---|
sip_trunk.status_changed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
CDP Events
Customer-data-platform ingestion: server-to-server track/identify with identity-resolution.| Event | Description |
|---|---|
cdp.event.ingested | CDP inbound — fired after a Segment-shaped /cdp/track or /cdp/identify payload is verified, persisted to tenant_*.cdp_events, and identity- resolved against tenant_*.contacts. |
cdp.identity.resolved | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
Other
Events whose name prefix does not yet map to a documented surface group. Surface them in the catalog so they remain discoverable, then updateSURFACES in the generator.
| Event | Description |
|---|---|
email.opened | Email engagement events (Resend webhook surface). |
email.clicked | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
video.recording.degraded | PARITY-RTC-R1 (2026-05-29) — video room recording QC verdict. |
video.room.started | GAP-RTC-R2 (2026-05-29) — video room + participant + recording lifecycle webhook fan-out. |
video.room.ended | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
video.participant.joined | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
video.participant.left | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
video.recording.completed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
video.recording.failed | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
ticket.deflected | Platform-defined webhook event. See source comment in packages/shared/src/constants.ts for context. |
wallboard.sla_warning | Voice-queue wallboard SLA early-warning (CCaaS). |
Subscribing to Events
When creating a webhook, specify which events to receive:"events": ["*"] to subscribe to all event types. Subscribing to
a name not in the catalog above returns a 422 with code
VALIDATION_ERROR.
See also
- Webhook Events Reference — full payload examples per event
- Webhook Overview — delivery, signing, and retry semantics
- Webhook Security — verifying signatures