MessageWebhookEvent
Possible values: [message]
payload objectrequired
Normalized message event for WhatsApp, Instagram, Messenger, Telegram, SMS and Web chatt2.me. The message is persisted and its session is created or reused before this payload is delivered, including outbound-first and provider echo flows. Sandbox events carry the free Sandbox session identifier. An inbound Instagram or Messenger message containing multiple attachments that are all images produces one persisted message event per image. Each event has its own message ID and a single mediaUrl; all images share the same session ID and original provider timestamp. Only the first image event retains caption/reply context. Inbound sender is the visitor and recipient is the channel; outbound sender is the channel and recipient is the visitor. Envelope timestamp is ISO; payload timestamp is the original Unix milliseconds. Echo/bot/sandbox/automation/edit flags are sparse.
Possible values: [whatsapp, instagram, messenger, telegram, sms, web_chatt2me]
Possible values: [IN, OUT]
Original message time in Unix milliseconds. For Coexistence history imports this is the timestamp supplied by Meta, not the import time.
message objectrequired
Session correlated with this message. Created on the first inbound or outbound when no active session exists.
Case-sensitive normalized values such as Text, Image, Video, Audio, File, Location, Contact, Button, Poll and Reaction. Legacy paths may preserve provider strings.
True for Agent replies, including inactivity follow-up and closure notices.
True only for a configured Hub automation outbound.
content objectrequired
Provider-independent inbound normalization. Fields are sparse and depend on the received content. Outbound content may include the original supported send fields. contacts can preserve provider-shaped records; send DTO contacts use flat camelCase names.
Possible values: [ig_reel, ig_post, ig_mention]
attachments object[]
location object
contact object
poll object
reaction object
buttons object[]
Possible values: [reply, list, postback]
context object
Provider-independent inbound normalization. Fields are sparse and depend on the received content. Outbound content may include the original supported send fields. contacts can preserve provider-shaped records; send DTO contacts use flat camelCase names.
sender objectrequired
Stable channel routing identifier.
Optional visitor-provided, unverified phone number. Present only on Web Chatt inbound and operational-event senders; it is not a routing identifier.
Possible values: Value must match regular expression ^\d{8,15}$
Optional visitor-provided, unverified email. Present only on Web Chatt inbound and operational-event senders; it is not a routing identifier.
recipient objectrequired
Stable channel routing identifier.
Optional visitor-provided, unverified phone number. Present only on Web Chatt inbound and operational-event senders; it is not a routing identifier.
Possible values: Value must match regular expression ^\d{8,15}$
Optional visitor-provided, unverified email. Present only on Web Chatt inbound and operational-event senders; it is not a routing identifier.
Session expiry if available. Absent before the first inbound private-reply response.
{
"eventType": "message",
"timestamp": "2026-10-06T15:00:00.000Z",
"payload": {
"provider": "whatsapp",
"direction": "IN",
"timestamp": 1791298800000,
"message": {
"id": "2d07a67f-d410-46a4-95b0-7b1952a1fcfa",
"sessionId": "3892f9da-202f-4b90-9d4d-85c779211b8e",
"type": "Button",
"content": {
"buttons": [
{
"id": "confirm",
"label": "Confirm",
"type": "reply"
}
]
}
},
"sender": {
"id": "5511999999999"
},
"recipient": {
"id": "5511888888888",
"applicationChannelId": "7c37a280-708c-46d5-b1fe-8c20a372df32"
}
}
}