# message.status

A message's status moved forward

Sent with your delivery and read receipts: each time an outgoing message is delivered, read or fails. Use it to show ticks in your own tools, or to retry a send that failed. The `sent` status comes as `message.sent`. A late or repeated status from WhatsApp sends nothing.

In the app: Message status changed. Plan feature `webhooks.messages`. To subscribe over the API: `messages:read`.

## data

- `message_id` (string, uuid)
- `contact_id` (string, uuid)
- `number_id` (nullable string, uuid)
- `broadcast_id` (nullable string, uuid): The broadcast the message belongs to, or `null`.
- `status` (string): The status the message moved to. The `sent` status comes as `message.sent`. More values may be added. One of `sent`, `delivered`, `read`, `failed`.
- `at` (string, date-time): When WhatsApp reported the status. Order events by this, not by when they arrive.
- `error` (nullable object): Why the message failed.
  - `code` (integer): WhatsApp's error code, or 0 when it isn't known.
  - `message` (string)

## Example event

```json
{
  "id": "evt_15572b9fc8c1f0f2892d5db95b252814",
  "type": "message.status",
  "api_version": "2026-10-14",
  "created_at": "2026-10-14T09:30:16.116Z",
  "workspace_id": "2b7e4c1a-9d3f-4a85-b6e2-5f0c8d1a7e34",
  "data": {
    "message_id": "8c2e4f6a-1d3b-4a5c-9e7f-2b4d6f8a0c1e",
    "contact_id": "4ea0d485-435d-407f-837a-c7d67095f23a",
    "number_id": "0f6d3c1e-5b7a-4c52-9a55-3f6a2d5c8b10",
    "broadcast_id": null,
    "status": "delivered",
    "at": "2026-10-14T09:30:15.902Z",
    "error": null
  }
}
```