> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.chatbridge.mx/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.chatbridge.mx/_mcp/server.

# Message status

POST 

Notification of the status of an outbound message (`type: status`).

A single message can generate several events in order: `SENT`, `DELIVERED`, `READ`. The `FAILED` status is terminal (no more events are received after it) and carries Meta's `errors` array with the failure detail.

Not all messages reach `READ`; it depends on whether the user has read receipts enabled. The order may vary: in some cases `DELIVERED` and `READ` are received almost simultaneously.

Reference: https://docs.chatbridge.mx/whats-app/webhooks/message-status-webhook

## Request

### Payload

- `phone_number_id` (string, optional)
- `message_id` (string, optional) — Message identifier (wamid.xxx). For sends queued by the API before reaching Meta, it is the `message_id` returned in the synchronous response.
- `type` ("status", optional)
- `status` (enum, optional)
  - Allowed values: `SENT`, `DELIVERED`, `READ`, `FAILED`
- `timestamp` (string, optional) — Unix timestamp of the event.
- `campaign_id` (string, optional) — Optional. Only present when the message belongs to a bulk campaign.
- `errors` (list of map from string to any, optional) — Optional. Only present on `FAILED`: Meta's error detail for the failure (e.g. code 131026 — Unconfirmed Number).