Webhook about Changing Message Status
This webhook enables you to receive updates on changes to message processing and delivery statuses. Whenever a message status changes, edna Pulse sends an HTTP POST request to your system's specified URL. This article describes the webhook format and transmitted data.
Configuring the URL
To set the URL for a webhook about a change in the status of a message, send a POST request to the URL https://app.edna.io/api/callback/set .
Your URL should be genuine and accessible to the public via the internet. Only use the secure HTTPS protocol — the default is TCP port 443. URLs can contain a maximum of 500 characters.
If a webhook delivery fails, edna Pulse will attempt to resend it up to three times using a backoff scheme: 4, 128, and 2048 seconds after the previous attempt.
You can also specify the webhook URL in your edna Pulse account: Integration → Settings → Main profile → Webhook URL for statuses.
General Information about edna Pulse API Keys and Webhooks Managing edna Pulse WebhooksWebhook example
{
"requestId": "test-00135",
"messageId": 8681748,
"cascadeId": 11,
"cascadeStageUUID": "001-test001",
"subject": "test_subject",
"subjectId": 2,
"status": "DELIVERED",
"statusAt": "2025-01-30T11:07:55Z",
"error": null,
"comment": null,
"paymentData": {
"@type": "WhatsAppConversationPaymentData",
"conversationId": "test0001",
"conversationType": "marketing",
"chargeable": true,
"type": "WHATSAPP_CONVERSATION"
}
}
Webhook parameters
| Parameter | Data type | Character | Description |
|---|---|---|---|
requestId | string | Required | The ID of the request based on which the message is generated and sent. |
cascadeId | long | Required | The cascade ID. |
cascadeStageUUID | string | Required | null or data. |
subject | string | Required | The name of the channel. |
subjectId | long | Required | The channel ID. You can find out through the channel list method. Receiving List of Channels |
status | string | Required | The message status. |
statusAt | string | Required | The time of the last update of the message status. Specified in the ISO 8601 format. For example: 2023-10-31T11:07:56Z. |
error | string | Optional | null or data. Error in message delivery. |
comment | string | Optional | The text comment. Specified when sending the message. The parameter value is also displayed in the detailed report. It can be used for routing chatbots. |
paymentData | object | Required | The set of parameters for the WhatsApp channel that transmit information about the conversation. |
conversationId | string | Required | The conversation ID. Transmitted for the WhatsApp channel. |
conversationType | string | Required | The conversation category. Transmitted for the WhatsApp channel. |
chargeable | boolean | Optional | The conversation type: paid or free. Transmitted for the WhatsApp channel for the statuses DELIVERED and READ. |
messageId | integer | Required | The internal ID of the message. |
Expected response format
In response to a request from your server, the status of its execution with the code 200 should be returned.
Message delivery statuses
| Status | Description |
|---|---|
SENT | The message has been sent to the recipient. |
DELIVERED | The message has been delivered to the recipient. |
READ | The message has been read by the recipient. |
UNDELIVERED | The message was sent, but not delivered to the recipient. |
CANCELLED | Sending the message has been canceled. |
EXPIRED | The message did not receive the DELIVERED status because: - the time specified when configuring the cascade has expired; - the time for message delivery (TTL), determined by the default channel, has expired. Message Delivery Time in Channels (TTL) |
FAILED | Error processing the message. |
The list of statuses can be expanded when integrating.
Errors when receiving message statuses
| Error | Description |
|---|---|
not-WhatsApp-user | The specified recipient is not registered in WhatsApp. |
no-template-match | The message does not match a valid template. |
session-not-started | The message is not sent within the 24-hour dialog and does not match a valid template. |
daily-rate-limit | WhatsApp's daily limit for sending template messages has been exceeded. Only for WhatsApp channel. |
too-long-message | The message length exceeds the allowed limit. |
chat-window-closed | Error opening the dialog box on the WhatsApp side. |
media-request-failed | File upload error. |
error-subject-unknown | The specified signature is not allowed to the client. All signatures must be activated beforehand. |
error-address-format | Incorrect subscriber number format. |
duplicated | Attempt to send a duplicate message within 5 minutes. |
message-undeliverable | The message could not be delivered to the recipient. Possible reasons: -The recipient's phone number is not in WhatsApp.- The recipient has not accepted the new versions of the WhatsApp user agreement and privacy policy. - The recipient uses an old version of WhatsApp. Use WhatsApp version 2.21.15.15 (Android) or 2.21.170.4 (iOS) and higher.- Sending authorization messages to recipients with the code +91 (India) is not available. |
spam-rate-limit-hit | The message could not be delivered to the recipient because many previous messages were blocked or marked as spam. |
marketing-template-undeliverable | The message could not be delivered to the recipient. The delivery limit for marketing messages has been reached for the recipient. Try to send a message later. |