Skip to main content

Webhook Events

Event types

EventTrigger
message.queuedMessage accepted and placed in the delivery queue
message.sentMessage handed off to the provider
message.deliveredProvider confirmed delivery to the device
message.readRecipient opened the message
message.failedAll delivery attempts exhausted

Subscribe to * to receive all events.

Payload shape

Every event POSTed to your endpoint has this JSON body:

{
"event": "message.delivered",
"messageId": "msg_01j...",
"tenantId": "ten_01j...",
"provider": "whatsapp",
"to": "+905551234567",
"status": "delivered",
"externalId": "waid.123456",
"error": null,
"timestamp": "2025-01-01T12:05:00.000Z"
}
FieldTypeDescription
eventstringEvent name
messageIdstringYour Notifo message ID
tenantIdstringYour tenant ID
providerstringChannel provider (whatsapp, telegram, sms)
tostringRecipient
statusstringCurrent message status
externalIdstring | nullProvider-assigned message ID
errorobject | nullError details on message.failed
timestampISO 8601Event time (UTC)

Request headers

Each webhook delivery includes these headers:

HeaderDescription
X-Notifo-Signaturesha256=<hmac> — use this to verify authenticity
X-Notifo-EventEvent name (e.g. message.delivered)
X-Notifo-Delivery-IdUnique UUID for this delivery attempt
Content-Typeapplication/json