Coexist Sent Message replaces message_sent, and delivery ticks arrive as message_status
Two webhook updates: the Coexist echo event is renamed from message_sent to coexist_sent_message, and the new message_status event reports when an outbound message is sent, delivered and read.
What changed
| Change | Before | After |
|---|---|---|
| Coexist mobile-app outbound echo | event: "message_sent" | event: "coexist_sent_message" |
| Delivery ticks (sent, delivered, read) | No dedicated event | event: "message_status", with data.status |
| Webhook settings, Coexist accounts | Checkbox labelled Message Sent | Checkbox labelled Coexist Sent Message |
| Webhook settings, other accounts | Not applicable | The Coexist event is hidden |
Compatibility. Nothing breaks today. If your account still has message_sent enabled, Wetarseel keeps posting the same echo body with "event": "message_sent". Saving the webhook settings stores the new name, coexist_sent_message. Update your handlers when convenient.
1. message_sent is now coexist_sent_message
Fired when a message is sent from the WhatsApp Business mobile app and synced to Wetarseel through Coexist. It carries the message content (text, media and so on). It isn't a delivery tick: for ticks, use message_status.
Only Coexist accounts (WhatsApp Business app connected) see this event in the webhook settings.
data is unchanged. Only the top-level event name is different.
{
"event": "message_sent",
"timestamp": "2026-11-13T10:00:00.000Z",
"accountId": "account_123",
"data": {
"id": "wamid.HBgLM...",
"from": "971501111111",
"to": "971501234567",
"timestamp": "1731484800",
"type": "text",
"text": { "body": "We have dispatched your order!" },
"business_phone_number_id": "1234567890",
"file_url": null
}
}In the Wetarseel app
- Open API & Integrations, then Webhooks.
- Check that your webhook URL is set.
- Tick Coexist Sent Message (
coexist_sent_message). - Save. If Message Sent was ticked before, it shows as Coexist Sent Message, and saving stores the new name.
In your webhook handler
- Accept the new name. Keep the old one for now, for a smooth cutover:
switch (event) {
case 'coexist_sent_message':
case 'message_sent': // legacy: same payload data
await handleCoexistOutboundEcho(data);
break;
// ...
}Once your traffic arrives as coexist_sent_message, you can drop the message_sent case.
2. New event: message_status
Fired when Meta reports a delivery tick for an outbound WhatsApp message. It covers messages from the inbox, the API and automations, not only Coexist. Failures still arrive as message_failed_response.
| data.status | Meaning |
|---|---|
sent | Accepted by WhatsApp |
delivered | Delivered to the recipient's device |
read | Opened by the recipient |
{
"event": "message_status",
"timestamp": "2026-11-13T10:00:00.000Z",
"accountId": "account_123",
"data": {
"id": "wamid.HBgLM...",
"to": "971501234567",
"timestamp": "1731484800",
"type": "text",
"text": { "body": "We have dispatched your order!" },
"status": "sent",
"file_url": null
}
}data.idis the same WhatsApp message id on every tick for one message.- Media messages have
typeimage,audio,videoordocument, and may carryfile_urlinstead oftext. - Meta may report delivered and read together as a single
read, with no separatedelivered. - There is no
seenstatus: useread.
To turn it on
- Open API & Integrations, then Webhooks.
- Tick Message Status.
- Save, then handle it in your endpoint:
case 'message_status':
// data.status is 'sent' | 'delivered' | 'read'
await handleDeliveryTick(data);
break;coexist_sent_message or message_status?
| coexist_sent_message | message_status | |
|---|---|---|
| Purpose | The content of a message sent from the WhatsApp Business mobile app | Delivery ticks for outbound messages |
| When | Someone sends from the WhatsApp Business app | Meta reports sent, delivered or read |
| Key field | The message body or media in data | data.status |
| Who can subscribe | Coexist accounts only | Every account with webhooks |
Checklist
- Update your handlers to accept
coexist_sent_message, keepingmessage_sentuntil the cutover. - Coexist accounts: tick Coexist Sent Message in the webhook settings and save.
- Optionally, tick Message Status to track delivery.
- Test with a send from the WhatsApp Business app and a send from the inbox or API, and confirm both events arrive.
- Remove the
message_sentcase once you only receivecoexist_sent_message.
Full payloads, headers and signature checks are in the webhooks reference. Questions? Contact your Wetarseel account manager or support.

