Message status
WABA delivery and read receipts sent as message_status webhooks.
2 min read
Event message_status is WABA only. Kirisan POSTs when Meta reports a delivery or read status for an outbound WABA message.
Enable Message status (or the equivalent WABA status event) on Webhooks → Webhook for linked WABA numbers. WhatsApp devices and Telegram do not use this event on the webhooks page.
Header:
X-Kirisan-Event: message_status Payload fields
| Field | Type | Meaning |
|---|---|---|
event | string | message_status |
channel | string | waba |
device | string | WABA device token |
recipient | string | Customer phone number |
message_id | string | Meta message id (wamid.…) |
status | string | Meta status — for example sent, delivered, read, failed |
metadata | object | message_id, status, optional errors array |
timestamp | integer | Unix seconds |
production | boolean | true for live traffic |
When Meta reports an error, metadata.errors may list objects with code, title, and message.
Example — delivered
{
"event": "message_status",
"channel": "waba",
"device": "your-waba-device-token",
"recipient": "6281234567890",
"message_id": "wamid.HBgLNjI4MTIzNDU2Nzg5MBUCABIYFDN...",
"status": "delivered",
"metadata": {
"message_id": "wamid.HBgLNjI4MTIzNDU2Nzg5MBUCABIYFDN...",
"status": "delivered"
},
"timestamp": 1735689600,
"production": true
} Example — failed
{
"event": "message_status",
"channel": "waba",
"device": "your-waba-device-token",
"recipient": "6281234567890",
"message_id": "wamid.HBgLNjI4MTIzNDU2Nzg5MBUCABIYFDN...",
"status": "failed",
"metadata": {
"message_id": "wamid.HBgLNjI4MTIzNDU2Nzg5MBUCABIYFDN...",
"status": "failed",
"errors": [
{
"code": 131026,
"title": "Message undeliverable",
"message": "Receiver is incapable of receiving this message"
}
]
},
"timestamp": 1735689600,
"production": true
} Related
- Incoming message — WABA customer replies
- Webhooks overview — WABA-only events
- WABA devices — connect numbers first
- Send API — outbound WABA sends that trigger status updates