Skip to content
API PlatformDevelopers

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.

Payload fields
FieldTypeWhat it is
idrequiredstringEvent id. The same on every retry: use it to skip duplicates.pattern ^evt_[0-9A-HJKMNP-TV-Z]{26}$
typerequiredstringEvent type.always message.created
versionrequiredstringPayload version.always 1
api_versionrequiredstringThe endpoint's API version.
occurred_atrequiredstringWhen it happened.date-time
company_idrequiredintegerYour workspace id.
datarequiredobject
idrequiredintegerMessage id.
company_idrequiredintegerWorkspace id.
conversation_idrequiredintegerConversation id.
contactobject or nullThe contact.
idrequiredintegerId.
namerequiredstring or nullName.
channelobject or nullThe channel.
idrequiredintegerId.
namerequiredstring or nullName.
directionrequiredstringAlways inbound in version 1 (from the customer).one of: inbound, outbound
typerequiredstringTEXT, IMAGE, INTERACTIVE, …
textstring or nullThe text, the title of a button or list reply, or a media caption. At most 4096 bytes; media links are never included.
created_atrequiredstringISO 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 it
  • Webhook-Id (also Webhook-Event-Id): the event id, the same on every retry — skip ones you have handled
  • Webhook-Delivery-Id: this delivery attempt, new on every try