Webhook events · messages
message.created/1
Message received. A customer sent a message. Use it to react to replies such as STOP. Version 1 covers messages from customers only: messages your team, bots or broadcasts send, reactions and system messages do not fire it.
Payload
We POST this JSON to your endpoint. Answer any 2xx within 30 seconds. The same id arrives again on a retry — skip ones you have handled.
| Field | Type | What it is |
|---|---|---|
| idrequired | string | Event id. The same on every retry: use it to skip duplicates.pattern ^evt_[0-9A-HJKMNP-TV-Z]{26}$ |
| typerequired | string | Event type.always message.created |
| versionrequired | string | Payload version.always 1 |
| api_versionrequired | string | The endpoint's API version. |
| occurred_atrequired | string | When it happened.date-time |
| company_idrequired | integer | Your workspace id. |
| datarequired | object | |
| idrequired | integer | Message id. |
| company_idrequired | integer | Workspace id. |
| conversation_idrequired | integer | Conversation id. |
| contact | object or null | The contact. |
| idrequired | integer | Id. |
| namerequired | string or null | Name. |
| channel | object or null | The channel. |
| idrequired | integer | Id. |
| namerequired | string or null | Name. |
| directionrequired | string | Always inbound in version 1 (from the customer).one of: inbound, outbound |
| typerequired | string | TEXT, IMAGE, INTERACTIVE, … |
| text | string or null | The text, the title of a button or list reply, or a media caption. At most 4096 bytes; media links are never included. |
| created_atrequired | string | ISO 8601, e.g. 2026-09-24T11:02:00+00:00. |
Example
{
"id": "evt_01J8Z7BZQ4F6G8J2K5N7Q9S1VC",
"type": "message.created",
"version": "1",
"api_version": "2026-10-01",
"occurred_at": "2026-09-24T09:20:00Z",
"company_id": 1001,
"data": {
"id": 5501299,
"company_id": 1001,
"conversation_id": 77410,
"contact": {
"id": 48213,
"name": "Jane Doe"
},
"channel": {
"id": 301,
"name": "Main WhatsApp"
},
"direction": "inbound",
"type": "TEXT",
"text": "STOP",
"created_at": "2026-09-24T11:02:00+00:00"
}
}Headers
Webhook-Signature:t=…,v1=…— how to check itWebhook-Id(alsoWebhook-Event-Id): the event id, the same on every retry — skip ones you have handledWebhook-Delivery-Id: this delivery attempt, new on every try