Webhook

Message hook delivery

Landbot POSTs this payload to every registered message hook URL when a message moves through the channel (Web/WhatsApp; APIchat customer messages do NOT fire — see the APIchat webhook reference).

Authenticity: if you set a token on the hook, it is echoed as Authorization: Token <token> (a static shared secret — compare the full value; there is no HMAC). User-Agent: landbot/webhooks. Ordering: bursts can arrive out of order (~10–50 ms); sort by timestamp. Dedupe: the sentry-trace header is unique per message and stable across retries. Retries: non-2xx is retried on linear backoff (deltas ~5/10/15/20/25 s, ≥6 attempts). Return any 2xx (body ignored) to acknowledge.

Body·
required
application/json

Webhook delivery body. Always exactly one entry in messages — Landbot never batches.

  • messages
    Type: array ·
    required
Responses
  • 200

    Acknowledged. Return any 2xx within your timeout; the body is ignored.

Request Example for postmessage
{
  "messages": [
    {
      "type": "text",
      "timestamp": 1,
      "data": {
        "body": ""
      },
      "sender": {
        "id": 1,
        "name": "",
        "type": "customer"
      },
      "customer": {
        "id": 1,
        "agent_id": null,
        "archived": true,
        "name": "",
        "is_external": "",
        "country": "",
        "webchat_type": "",
        "url": "",
        "phone": "",
        "additionalProperty": "anything"
      },
      "channel": {
        "id": 1,
        "name": "",
        "type": "landbot"
      },
      "_raw": {
        "samurai": 1,
        "author_type": "user",
        "author_uuid": null,
        "uuid": "",
        "seq": null,
        "rich_text": null,
        "read": true,
        "additionalProperty": "anything"
      }
    }
  ]
}
No Body