Docs
Esc

Suggested

QuickstartGet started
Webhooks and signaturesMessaging
Create a messagemessages.create · POST /v1/accounts/{AC}/messages
RATE_LIMITED429 · Rate limit exceeded.
message.deliveredMessage resource
Contents

Messaging

Event catalogue

The 152 event types a webhook endpoint can receive. Every event shares one envelope (id, type, apiVersion, occurredAt, sequence, livemode, accountSid, data); data holds the resource listed below. This list is generated from the same schemas the platform validates events against.

Subscribe with exact types or wildcards such as message.*. How to receive them: webhooks.

Event types

Generated event catalogue descriptions, resource labels, fields and types are shown in their original contract language.

EventWhat happened
message.acceptedToutye accepted the message and queued it.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"queued"yes
message.scheduledThe message is waiting for its sendAt time.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"scheduled"yes
message.deferredSending was postponed on purpose (pacing, a recipient cap or quiet hours); queuedReason and readyAt say why and until when.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstringyes
readyAtstring (date-time)yes
status"queued"yes
message.meta_acceptedWhatsApp accepted the request to send the message.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"sending"yes
message.held_for_qualityWhatsApp is holding the message while it assesses its quality.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"sending"yes
message.sentWhatsApp sent the message.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"sent"yes
message.deliveredThe message reached the customer's phone.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"delivered"yes
message.readThe customer opened the message.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"read"yes
message.playedThe customer played the voice message.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"played"yes
message.warningWhatsApp reported a non-fatal problem with the message.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"queued" | "scheduled" | "sending" | "sent" | "delivered" | "read" | "played" | "failed" | "canceled" | "expired" | "unknown"yes
message.deletedThe customer deleted the message.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound" | "inbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"queued" | "scheduled" | "sending" | "sent" | "delivered" | "read" | "played" | "failed" | "canceled" | "expired" | "unknown"yes
message.failedThe message will not be delivered; data.error says why.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobjectyes
queuedReasonstring | null
readyAtstring (date-time) | null
status"failed"yes
message.expiredThe message's validity period ended before it could be sent.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobjectyes
queuedReasonstring | null
readyAtstring (date-time) | null
status"expired"yes
message.canceledThe message was canceled before it was sent.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"canceled"yes
message.recipient_opted_outThe recipient opted out of this kind of message, so it was not sent.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"failed"yes
message.unknownWhatsApp has not reported what happened to the message.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"unknown"yes
message.duplicate_detectedA second send of the same message was detected and not sent again.data: Message resource
6 fields of its own
FieldTypeAlways present
direction"outbound"yes
duplicateOfAttemptinteger (1–)
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"queued" | "scheduled" | "sending" | "sent" | "delivered" | "read" | "played" | "failed" | "canceled" | "expired" | "unknown"yes
message.redactedThe message's content was erased (retention or a deletion request).data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound" | "inbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"queued" | "scheduled" | "sending" | "sent" | "delivered" | "read" | "played" | "failed" | "canceled" | "expired" | "unknown"yes
message.receivedA customer sent you a message.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"inbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"delivered"yes
message.echoedA message was sent from the WhatsApp Business app on a shared (coexistence) number.data: Message resource
5 fields of its own
FieldTypeAlways present
direction"outbound"yes
errorobject
queuedReasonstring | null
readyAtstring (date-time) | null
status"sent"yes
conversation.openedconversation opened.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.routedconversation routed.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)yes
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.assignedconversation assigned.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstringyes
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.releasedconversation released.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstringyes
reasonstringyes
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.closedconversation closed.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstringyes
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstringyes
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.reopenedconversation reopened.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstringyes
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstringyes
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.snoozedconversation snoozed.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstringyes
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstringyes
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)yes
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.unsnoozedconversation unsnoozed.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstringyes
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticbooleanyes
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.collaborator_addedconversation collaborator added.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstringyes
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstringyes
collaboratorRole"COLLABORATOR" | "FOLLOWER"yes
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.collaborator_removedconversation collaborator removed.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstringyes
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstringyes
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.bot_handoff_requestedconversation bot handoff requested.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)yes
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)yes
handoffSidstring (BH… SID)yes
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)yes
conversation.bot_handoff_unavailableconversation bot handoff unavailable.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)yes
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackbooleanyes
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstringyes
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.bot_handoff_acceptedconversation bot handoff accepted.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)yes
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"yes
tagstring
webhookEndpointSidstring (WH… SID)
conversation.bot_handoff_completedconversation bot handoff completed.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)yes
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"yes
tagstring
webhookEndpointSidstring (WH… SID)
conversation.bot_handoff_failedconversation bot handoff failed.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)yes
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"yes
tagstring
webhookEndpointSidstring (WH… SID)
conversation.bot_handoff_timed_outconversation bot handoff timed out.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)yes
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"yes
tagstring
webhookEndpointSidstring (WH… SID)
conversation.bot_handoff_taken_overconversation bot handoff taken over.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)yes
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"yes
tagstring
webhookEndpointSidstring (WH… SID)
conversation.note_createdconversation note created.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)yes
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.tag_addedconversation tag added.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstringyes
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstringyes
webhookEndpointSidstring (WH… SID)
conversation.tag_removedconversation tag removed.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstringyes
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstringyes
webhookEndpointSidstring (WH… SID)
conversation.sla_warningconversation sla warning.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"yes
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)yes
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.sla_breachedconversation sla breached.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"yes
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)yes
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
message.inboundAn inbound message was added to an inbox conversation.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
message.outboundAn outbound message was added to an inbox conversation.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.window_openedconversation window opened.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.window_expiringconversation window expiring.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)yes
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.window_expiredconversation window expired.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)yes
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.csat_dispatchedconversation csat dispatched.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)yes
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstring
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
conversation.csat_skippedconversation csat skipped.data: Conversation resource
19 fields of its own
FieldTypeAlways present
actingPrincipalRefstring
applicationSidstring (BA… SID)
assigneePrincipalRefstring
automaticboolean
clock"first_response" | "next_response" | "resolution"
collaboratorPrincipalRefstring
collaboratorRole"COLLABORATOR" | "FOLLOWER"
dueAtstring (date-time)
expiresAtstring (date-time)
handoffSidstring (BH… SID)
humanFallbackboolean
noteSidstring (NT… SID)
priorAssigneePrincipalRefstring
reasonstringyes
routingRuleIdstring | null (uuid)
snoozedUntilstring (date-time)
state"open" | "idle" | "closed" | "archived"
tagstring
webhookEndpointSidstring (WH… SID)
api_key.createdapi key created.data: API key resource
1 fields of its own
FieldTypeAlways present
status"active"yes
api_key.disabledapi key disabled.data: API key resource
1 fields of its own
FieldTypeAlways present
status"disabled"yes
api_key.revokedapi key revoked.data: API key resource
1 fields of its own
FieldTypeAlways present
status"revoked"yes
api_key.rotatedapi key rotated.data: API key resource
1 fields of its own
FieldTypeAlways present
status"active"yes
api_key.inactive_flaggedapi key inactive flagged.data: API key resource
1 fields of its own
FieldTypeAlways present
status"active"yes
user.inviteduser invited.data: User resource
1 fields of its own
FieldTypeAlways present
status"invited"yes
user.updateduser updated.data: User resource
1 fields of its own
FieldTypeAlways present
status"invited" | "active" | "locked" | "disabled"yes
user.disableduser disabled.data: User resource
1 fields of its own
FieldTypeAlways present
status"disabled"yes
account.suspendedaccount suspended.data: Account resource
1 fields of its own
FieldTypeAlways present
status"suspended"yes
account.reinstatedaccount reinstated.data: Account resource
1 fields of its own
FieldTypeAlways present
status"active"yes
message.batch.completedA batch send finished.data: Event data
2 fields in data
FieldTypeAlways present
object"message_batch"yes
sidstringyes
contact.createdcontact created.data: Event data
2 fields in data
FieldTypeAlways present
object"contact"yes
sidstringyes
contact.updatedcontact updated.data: Event data
2 fields in data
FieldTypeAlways present
object"contact"yes
sidstringyes
contact.identifier_addedcontact identifier added.data: Event data
2 fields in data
FieldTypeAlways present
object"contact"yes
sidstringyes
contact.user_id_updatedcontact user id updated.data: Event data
2 fields in data
FieldTypeAlways present
object"contact"yes
sidstringyes
contact.opted_outcontact opted out.data: Event data
2 fields in data
FieldTypeAlways present
object"contact"yes
sidstringyes
contact.opted_incontact opted in.data: Event data
2 fields in data
FieldTypeAlways present
object"contact"yes
sidstringyes
consent.recordedconsent recorded.data: Event data
2 fields in data
FieldTypeAlways present
object"consent"yes
sidstringyes
consent.withdrawnconsent withdrawn.data: Event data
2 fields in data
FieldTypeAlways present
object"consent"yes
sidstringyes
suppression.addedsuppression added.data: Event data
2 fields in data
FieldTypeAlways present
object"suppression"yes
sidstringyes
suppression.removedsuppression removed.data: Event data
2 fields in data
FieldTypeAlways present
object"suppression"yes
sidstringyes
sender.createdsender created.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.connectedsender connected.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.status_changedsender status changed.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.health_changedsender health changed.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.quality_changedsender quality changed.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.throughput_changedsender throughput changed.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.limit_changedsender limit changed.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.restrictedsender restricted.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.disconnectedsender disconnected.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.reconnectedsender reconnected.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.name_status_changedsender name status changed.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.migratedsender migrated.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
sender.ownership_changedsender ownership changed.data: Event data
12 fields in data
FieldTypeAlways present
activeRegionstringyes
actorstring
epochIssuedAtstring (date-time)yes
executionEpochinteger (0–)yes
fromAccountSidstring (AC… SID)
homeRegionstringyes
object"sender"yes
operationSidstring (OP… SID)
senderSidstring (WA… SID)
sidstringyes
toAccountSidstring (AC… SID)
wabaIdstring
waba.connectedwaba connected.data: Event data
2 fields in data
FieldTypeAlways present
object"waba"yes
sidstringyes
waba.disconnectedwaba disconnected.data: Event data
2 fields in data
FieldTypeAlways present
object"waba"yes
sidstringyes
waba.review_changedwaba review changed.data: Event data
2 fields in data
FieldTypeAlways present
object"waba"yes
sidstringyes
waba.billing_mode_changedwaba billing mode changed.data: Event data
2 fields in data
FieldTypeAlways present
object"waba"yes
sidstringyes
onboarding.abandonedonboarding abandoned.data: Event data
5 fields in data
FieldTypeAlways present
currentStepstringyes
embeddedSignupSessionIdstring | null
event"CANCEL"yes
object"onboarding_session"yes
sidstringyes
template.submittedtemplate submitted.data: Event data
2 fields in data
FieldTypeAlways present
object"template"yes
sidstringyes
template.status_changedWhatsApp approved, rejected, paused or disabled a template.data: Event data
2 fields in data
FieldTypeAlways present
object"template"yes
sidstringyes
template.category_changedtemplate category changed.data: Event data
2 fields in data
FieldTypeAlways present
object"template"yes
sidstringyes
template.quality_changedtemplate quality changed.data: Event data
2 fields in data
FieldTypeAlways present
object"template"yes
sidstringyes
template.pausedtemplate paused.data: Event data
2 fields in data
FieldTypeAlways present
object"template"yes
sidstringyes
template.disabledtemplate disabled.data: Event data
2 fields in data
FieldTypeAlways present
object"template"yes
sidstringyes
template.components_updatedtemplate components updated.data: Event data
2 fields in data
FieldTypeAlways present
object"template"yes
sidstringyes
template.deletedtemplate deleted.data: Event data
2 fields in data
FieldTypeAlways present
object"template"yes
sidstringyes
campaign.state_changedcampaign state changed.data: Event data
2 fields in data
FieldTypeAlways present
object"campaign"yes
sidstringyes
campaign.pending_approvalcampaign pending approval.data: Event data
2 fields in data
FieldTypeAlways present
object"campaign"yes
sidstringyes
campaign.startedcampaign started.data: Event data
2 fields in data
FieldTypeAlways present
object"campaign"yes
sidstringyes
campaign.pausedcampaign paused.data: Event data
2 fields in data
FieldTypeAlways present
object"campaign"yes
sidstringyes
campaign.resumedcampaign resumed.data: Event data
2 fields in data
FieldTypeAlways present
object"campaign"yes
sidstringyes
campaign.completedcampaign completed.data: Event data
2 fields in data
FieldTypeAlways present
object"campaign"yes
sidstringyes
campaign.canceledcampaign canceled.data: Event data
2 fields in data
FieldTypeAlways present
object"campaign"yes
sidstringyes
campaign.failedcampaign failed.data: Event data
2 fields in data
FieldTypeAlways present
object"campaign"yes
sidstringyes
campaign.batch.plannedcampaign batch planned.data: Event data
2 fields in data
FieldTypeAlways present
object"campaign_batch"yes
sidstringyes
campaign.batch.completedcampaign batch completed.data: Event data
2 fields in data
FieldTypeAlways present
object"campaign_batch"yes
sidstringyes
operation.state_changedoperation state changed.data: Event data
2 fields in data
FieldTypeAlways present
object"operation"yes
sidstringyes
operation.completedoperation completed.data: Event data
2 fields in data
FieldTypeAlways present
object"operation"yes
sidstringyes
media.readymedia ready.data: Event data
2 fields in data
FieldTypeAlways present
object"media"yes
sidstringyes
media.rejectedmedia rejected.data: Event data
2 fields in data
FieldTypeAlways present
object"media"yes
sidstringyes
media.expiringmedia expiring.data: Event data
2 fields in data
FieldTypeAlways present
object"media"yes
sidstringyes
flow.status_changedflow status changed.data: Event data
2 fields in data
FieldTypeAlways present
object"flow"yes
sidstringyes
flow.endpoint_unhealthyflow endpoint unhealthy.data: Event data
2 fields in data
FieldTypeAlways present
object"flow"yes
sidstringyes
approval.requestedapproval requested.data: Event data
2 fields in data
FieldTypeAlways present
object"approval"yes
sidstringyes
coexistence.sync_deadlinecoexistence sync deadline.data: Event data
2 fields in data
FieldTypeAlways present
object"coexistence"yes
sidstringyes
mfa.changedmfa changed.data: Event data
2 fields in data
FieldTypeAlways present
object"mfa"yes
sidstringyes
security.new_device_loginsecurity new device login.data: Event data
5 fields in data
FieldTypeAlways present
authenticationMethod"password" | "magic_link" | "oidc" | "saml"yes
devicestring (max 120 chars)yes
object"user"yes
sessionIdstring (uuid)yes
sidstringyes
security.account_lockedsecurity account locked.data: Event data
4 fields in data
FieldTypeAlways present
failedLoginCountinteger (1–)yes
lockedUntilstring (date-time)yes
object"user"yes
sidstringyes
security.password_resetsecurity password reset.data: Event data
4 fields in data
FieldTypeAlways present
mfaRevokedbooleanyes
object"user"yes
sessionsRevokedinteger (0–)yes
sidstringyes
risk.review_requiredrisk review required.data: Event data
2 fields in data
FieldTypeAlways present
object"risk_decision"yes
sidstringyes
call.permission_repliedcall permission replied.data: Event data
2 fields in data
FieldTypeAlways present
object"call"yes
sidstringyes
call.startedcall started.data: Event data
2 fields in data
FieldTypeAlways present
object"call"yes
sidstringyes
call.endedcall ended.data: Event data
2 fields in data
FieldTypeAlways present
object"call"yes
sidstringyes
call.failedcall failed.data: Event data
2 fields in data
FieldTypeAlways present
object"call"yes
sidstringyes
webhook.endpoint.verifiedwebhook endpoint verified.data: Event data
2 fields in data
FieldTypeAlways present
object"webhook_endpoint"yes
sidstringyes
webhook.endpoint.pausedwebhook endpoint paused.data: Event data
2 fields in data
FieldTypeAlways present
object"webhook_endpoint"yes
sidstringyes
webhook.endpoint.resumedwebhook endpoint resumed.data: Event data
2 fields in data
FieldTypeAlways present
object"webhook_endpoint"yes
sidstringyes
webhook.endpoint.suspendedwebhook endpoint suspended.data: Event data
2 fields in data
FieldTypeAlways present
object"webhook_endpoint"yes
sidstringyes
webhook.endpoint.secret_rotatedwebhook endpoint secret rotated.data: Event data
2 fields in data
FieldTypeAlways present
object"webhook_endpoint"yes
sidstringyes
webhook.endpoint.failingwebhook endpoint failing.data: Event data
2 fields in data
FieldTypeAlways present
object"webhook_endpoint"yes
sidstringyes
test.pingThe endpoint verification challenge or a test event; answer with data.challenge.data: Event data
2 fields in data
FieldTypeAlways present
object"webhook_endpoint"yes
sidstringyes
credential.invalidatedcredential invalidated.data: Event data
2 fields in data
FieldTypeAlways present
object"credential"yes
sidstringyes
delegated_access.granteddelegated access granted.data: Event data
2 fields in data
FieldTypeAlways present
object"delegated_access"yes
sidstringyes
delegated_access.endeddelegated access ended.data: Event data
2 fields in data
FieldTypeAlways present
object"delegated_access"yes
sidstringyes
account_alertsaccount alerts.data: Event data
2 fields in data
FieldTypeAlways present
object"sender"yes
sidstringyes
payment_configuration_updatepayment configuration update.data: Event data
2 fields in data
FieldTypeAlways present
object"waba"yes
sidstringyes
wallet.low_balancewallet low balance.data: Event data
2 fields in data
FieldTypeAlways present
object"wallet"yes
sidstringyes
invoice.createdinvoice created.data: Event data
2 fields in data
FieldTypeAlways present
object"invoice"yes
sidstringyes
invoice.paidinvoice paid.data: Event data
2 fields in data
FieldTypeAlways present
object"invoice"yes
sidstringyes
invoice.overdueinvoice overdue.data: Event data
2 fields in data
FieldTypeAlways present
object"invoice"yes
sidstringyes
billing_mode.changedbilling mode changed.data: Event data
2 fields in data
FieldTypeAlways present
object"waba"yes
sidstringyes
deletion.requesteddeletion requested.data: Event data
2 fields in data
FieldTypeAlways present
object"deletion_request"yes
sidstringyes
deletion.completeddeletion completed.data: Event data
2 fields in data
FieldTypeAlways present
object"deletion_request"yes
sidstringyes
export.readyexport ready.data: Event data
2 fields in data
FieldTypeAlways present
object"export"yes
sidstringyes
platform.incidentplatform incident.data: Event data
2 fields in data
FieldTypeAlways present
object"incident"yes
sidstringyes
platform.provider_changeplatform provider change.data: Event data
2 fields in data
FieldTypeAlways present
object"provider_change"yes
sidstringyes
platform.api_deprecationplatform api deprecation.data: Event data
2 fields in data
FieldTypeAlways present
object"provider_change"yes
sidstringyes
contact.conflictcontact conflict.data: Event data
8 fields in data
FieldTypeAlways present
conflictIdstring (uuid)yes
contactIdstring (uuid)yes
identifierType"PHONE_E164" | "BSUID" | "USERNAME"yes
object"contact"yes
owningContactIdstring (uuid)yes
scopeRefstring | nullyes
sidstringyes
sourcestringyes
contact.mergedcontact merged.data: Event data
10 fields in data
FieldTypeAlways present
contactIdstring (uuid)yes
mergeIdstring (uuid)yes
mergedContactIdstring (uuid)yes
mergedContactSidstring (CT… SID)yes
movedIdentifiersinteger (0–)yes
object"contact"yes
reasonstringyes
reversibleForDaysinteger (0–)yes
sidstringyes
survivorContactSidstring (CT… SID)yes
contact.unmergedcontact unmerged.data: Event data
5 fields in data
FieldTypeAlways present
contactIdstring (uuid)yes
mergeIdstring (uuid)yes
object"contact"yes
sidstringyes
survivorContactIdstring (uuid)yes
invoice.openedinvoice opened.data: Event data
5 fields in data
FieldTypeAlways present
artifactSha256string (pattern ^[0-9a-f]{64}$)yes
invoiceSidstring (IN… SID)yes
object"invoice"yes
providerInvoiceRefstringyes
sidstringyes
notification.creatednotification created.data: Event data
6 fields in data
FieldTypeAlways present
categorystringyes
object"notification"yes
resourceRefstringyes
severitystringyes
sidstringyes
targetRolestringyes

Resources carried in data

Fields shared by every event that carries the same resource.

Message resource 16 fields
FieldTypeAlways present
attemptinteger (1–)
createdAtstring (date-time)yes
deliverBeforestring (date-time) | null
deliveredAtstring (date-time) | null
fromstring (WA… SID)yes
livemodebooleanyes
metadataobject
object"message"yes
priority"critical" | "transactional" | "normal" | "marketing"
providerMessageIdstring | null
readAtstring (date-time) | null
sentAtstring (date-time) | null
sidstring (SM… SID)yes
toobjectyes
typestringyes
updatedAtstring (date-time)
Conversation resource 7 fields
FieldTypeAlways present
attemptinteger (1–)
contactSidstring (CT… SID)
inboxSidstring (IB… SID)
object"conversation"yes
senderSidstring (WA… SID)
sidstring (CO… SID)yes
versioninteger (1–)
API key resource 2 fields
FieldTypeAlways present
object"api_key"yes
sidstring (SK… SID)yes
User resource 2 fields
FieldTypeAlways present
object"user"yes
sidstring (US… SID)yes
Account resource 3 fields
FieldTypeAlways present
object"account"yes
operationSidstring (OP… SID)yes
sidstring (AC… SID)yes