How to Receive WhatsApp Delivery Reports via Webhook (New)
Please follow the steps below to configure the Webhook to receive real-time delivery reports (logs) on your Webhook (callback URL).
1. Go to MSG91 Dashboard » WhatsApp » Click on Webhook (New) » Click on Create Webhook.
2. Configure Your Webhook.
Step 1: Give your webhook a name for easy identification.
Step 2: Select WhatsApp Service & Event Type
On Request Received: Triggers when a message request is sent from your account. Includes "Sent" status logs, but does not share any data on delivery/failure status.
On Report Received: Sends real-time delivery reports, including delivery status (Sent, Failed, Delivered, and Read) and other details.
Note: Both event types send data for inbound and outbound messages.
Step 3: Enter Your Webhook (Callback) URL
When you send bulk WhatsApp messages, the webhook will still send one log (payload) per recipient number. This means for each mobile number, you will receive a separate webhook event, even if all messages are sent in a single batch.
The value of a few parameters ( such as messages, content, button etc) is a stringified JSON array so make sure your Webhook is capable of receiving such data.
Step 4: The content type will be JSON. Make sure your endpoint can parse JSON data.
Step 5. Customize Parameters
Include only the fields that you want to receive on your Webhook. Below is the sample payload, which has all the parameters; you can remove the parameters that are not of your use.
{
"CRQID": "{{CRQID}}",
"companyId": "{{companyId}}",
"requestedAt": "{{requestedAt}}",
"mobile": "{{mobile}}",
"content": "{{content}}",
"requestId": "{{requestId}}",
"failureReason": "{{failureReason}}",
"status": "{{status}}",
"uuid": "{{uuid}}",
"integratedNumber": "{{integratedNumber}}",
"messageType": "{{messageType}}",
"direction": "{{direction}}",
"templateName": "{{templateName}}",
"campaignName": "{{campaignName}}",
"campaignRequestId": "{{campaignRequestId}}",
"nodeId": "{{nodeId}}",
"templateLanguage": "{{templateLanguage}}",
"replyMsgId": "{{replyMsgId}}",
"accountManagerEmailId": "{{accountManagerEmailId}}",
"oneApiRequestId": "{{oneApiRequestId}}",
"emailId": "{{emailId}}",
"conversationExpTimestamp": "{{conversationExpTimestamp}}",
"moengageMsgId": "{{moengageMsgId}}",
"webengageMsgId": "{{webengageMsgId}}",
"clevertapMsgId": "{{clevertapMsgId}}",
"telecomCircle": "{{telecomCircle}}",
"circleDescription": "{{circleDescription}}",
"customerName": "{{customerName}}",
"contentType": "{{contentType}}",
"text": "{{text}}",
"latitude": "{{latitude}}",
"longitude": "{{longitude}}",
"caption": "{{caption}}",
"filename": "{{filename}}",
"url": "{{url}}",
"button": "{{button}}",
"contacts": "{{contacts}}",
"reaction": "{{reaction}}",
"interactive": "{{interactive}}",
"order": "{{order}}",
"messages": "{{messages}}",
"price": "{{price}}",
"origin": "{{origin}}",
"statusUpdatedAt": "{{statusUpdatedAt}}"
}
Description of the parameters:
requestId
Unique ID generated for each message request.
Example: "requestId": "87b3c7e4d9914fffa8ccb85ca13e6c8e"mobile
User’s mobile number.
Example: "mobile": "91774884090"status
Message status – Sent / Delivered / Failed / Read.
Example: "status": "delivered"content
Content of the message.Inbound: You will receive the complete message text.
Example: "content": "{\"text\":\"Hi, I have a query\"}"Outbound: You will receive the data you passed in the variables.
Example: "content": "{\"header_1\":{\"type\":\"document\",\"document\":{\"link\":\"https://files.msg91.com/377775/nronwttaaa\",\"filename\":\"Test1\"}},\"body_1\":{\"type\":\"text\",\"text\":\"Test2\"},\"body_2\":{\"type\":\"text\",\"text\":\"Test3\"},\"body_3\":{\"type\":\"text\",\"text\":\"Test4\"}}"
messages
Provides inbound message details such as the sender number, WhatsApp message ID, content type, and actual text received. It will be blank for outbound messages.
Example: "messages": "[{\"context\":{\"from\":\"917316914325\",\"id\":\"wamid.HBgMOTE3NzQ4ODQ3OTkwFQIAERgSQ0Q1MDZGMDQ4OEZBNjRGRTE5AA==\"},\"from\":\"917748847990\",\"id\":\"wamid.HBgMOTE3NzQ4ODQ3OTkwFQIAEhggN0M0MzBBRTg3NjAyQ0E4RDhDQTU5MDA1QkJFQzI2NEMA\",\"timestamp\":\"1751878238\",\"type\":\"button\",\"button\":{\"payload\":\"Stop\",\"text\":\"Stop\"}}]"
failureReason
If a message fails, this field shows the reason including error code and description.
Example: "failureReason": "131049: This message was not delivered to maintain healthy ecosystem engagement."button
Response text for quick reply buttons.
Example: "button": "{\"payload\":\"Stop\",\"text\":\"Stop\"}"integratedNumber
Your integrated WhatsApp business number.
Example: "integratedNumber": "917316914325"direction
Message direction – 1 for Outbound, 0 for Inbound.
Example: "direction": "0"templateName
Name of the WhatsApp message template used.
Example: "templateName": "order_status"CRQID
A custom parameter you can pass in the API payload. You will receive the same value in the webhook.
Example: "CRQID": "Inactive_users"companyId
Unique ID of your company for identifying your MSG91 account.
Example: "companyId": "384905"requestedAt
Timestamp of when the message request was initiated from your end.
Example: "requestedAt": "2025-07-08 08:20:26.259000"statusUpdatedAt
Timestamp of the latest message status update.If the status is Delivered, this is the delivery time.
Example: "statusUpdatedAt": "2025-07-08 07:41:13"
If the status is Sent, this reflects the sent time.
Example: "statusUpdatedAt": "2025-07-08 07:41:13"
messageType
Type of message received – text, interactive, or template.
Example: "messageType": "text"Uuid
Unique ID for every message generated by Meta.
Example: "Uuid": "wamid.HBgMOTE3NzQ4ODQ3OTkwFQIAERgSMEE4MjFCNkI5QkU4RTY5NEM5AA=="campaignName
Name of your campaign if sent via MSG91’s Campaign service.
Example: "campaignName": "jul8test1"campaignRequestId
Unique request ID of your campaign.
Example: "campaignRequestId": "1751960463_0b863cfb12a2293657f1f46ebf1cc546"templateLanguage
Language of your WhatsApp template.
Example: "templateLanguage": "en_US"accountManagerEmailId
Email ID of your MSG91 account manager.
Example: "accountManagerEmailId": "[email protected]"telecomCircle
The telecom circle of the customer’s mobile number.
Example: "telecomCircle": "Madhya Pradesh & Chhattisgarh"circleDescription
Description of the telecom circle.
Example: "circleDescription": "State of Madhya Pradesh and State of Chhattisgarh"customerName
Name of the customer who has sent the message.
Example: "customerName": "Manas"price
Charge deducted for sending the template.
Example: "price": "0.115"origin
Category of your WhatsApp template.
Example: "origin": "utility"replyMsgId
Unique WhatsApp message ID of the template the user replied to or interacted with.
Example: "replyMsgId": "wamid.HBgMOTE3NzQ4ODQ3OTkwFQIAERgSRUJGN0JCOTBBMUY5RUJGMEY3AA=="contentType
Type of content received in inbound messages – text, image, interactive, etc.contacts
Contact details of the user stored in your Segmento phonebook.
Example: "contacts": "[{\"profile\":{\"name\":\"Manas\"},\"wa_id\":\"91774884730\"}]"text
Exact text of the message received on your number.
Example: "text": "Contact store"latitude
Latitude of the location shared in an inbound message.
Example: "latitude": "22.7252947"longitude
Longitude of the location shared in an inbound message.
Example: "longitude": "75.8905714"
filename
The file name of the attachment.
Example: "filename": Invoice June 2025"
nodeId
Node ID of your MSG91 campaign.
Example: "nodeId": "88353"
reaction
The user’s reaction to your message or template.The Emoji will be sent in Unicode, so please ensure your webhook is capable of receiving
such data.
Example: "reaction": "👍🏻"
emailId
Registered email ID of your MSG91 account
Example: ”emailId": "[email protected]"
oneApiRequestId
Request ID if you sent it via One API.
webengageMsgId
Unique ID of the message if the message was sent via WebEngageclevertapMsgId
Unique ID of the message if the message was sent via Clevertap.moengageMsgId:
Unique ID of the message if the message was sent via MoEngage.
Sample Webhook payload of an Outbound message:
{
"CRQID": "",
"companyId": "384905",
"requestedAt": "2025-07-08 07:41:12.697000",
"mobile": "9179993700",
"content": "{\"body_1\":{\"type\":\"text\",\"text\":\"Aniket\"}}",
"requestId": "e0168ppab9e4c80b7bbb7705ad915c5",
"failureReason": "",
"status": "Delivered",
"uuid": "wamid.HBgMOTE3OTk5MzcwODU4FQIAERgSNkI2RjBCQTk1QTc5Mjc0N0U5AA==",
"integratedNumber": "917316914325",
"messageType": "template",
"direction": "1",
"templateName": "order_status",
"campaignName": "jul8test1",
"campaignRequestId": "1751960463_0b863cfb12a2293657f1f46ebf1cc546",
"nodeId": "88353",
"templateLanguage": "en_US",
"replyMsgId": "",
"accountManagerEmailId": "[email protected]",
"oneApiRequestId": "",
"emailId": "[email protected]",
"conversationExpTimestamp": "",
"moengageMsgId": "",
"webengageMsgId": "",
"clevertapMsgId": "",
"telecomCircle": "Madhya Pradesh & Chhattisgarh",
"circleDescription": "State of Madhya Pradesh and State of Chhattisgarh",
"customerName": "",
"contentType": "",
"text": "",
"latitude": "",
"longitude": "",
"caption": "",
"filename": "",
"url": "",
"button": "",
"contacts": "",
"reaction": "",
"interactive": "",
"order": "",
"messages": "",
"price": "0.115",
"origin": "utility",
"statusUpdatedAt": "2025-07-08 07:41:13"
}
Sample Webhook payload for an Inbound message:
{
"CRQID": "",
"companyId": "384905",
"requestedAt": "2025-07-08 08:06:38.064000",
"mobile": "91774841190",
"content": "{\"button_reply\":\"Contact store\"}",
"requestId": "87b3c7e4d9914fffa8ccb85ca13e6c8e",
"failureReason": "",
"status": "delivered",
"uuid": "wamid.HBgMOTE3NzQ4ODQ3OTkwFQIAEhggNENGQzYxMDk5NTg2MUQ5NjQ1REMzQzNBODRBMDM1RkMA_hello",
"integratedNumber": "917316914325",
"messageType": "interactive",
"direction": "0",
"templateName": "",
"campaignName": "",
"campaignRequestId": "",
"nodeId": "",
"templateLanguage": "",
"replyMsgId": "wamid.HBgMOTE3NzQ4ODQ3OTkwFQIAERgSNDQ1N0RCRjJGRTA3NThEMzE3AA==",
"accountManagerEmailId": "",
"oneApiRequestId": "",
"emailId": "",
"conversationExpTimestamp": "",
"moengageMsgId": "",
"webengageMsgId": "",
"clevertapMsgId": "",
"telecomCircle": "Madhya Pradesh & Chhattisgarh",
"circleDescription": "State of Madhya Pradesh and State of Chhattisgarh",
"customerName": "Manas ",
"contentType": "interactive",
"text": "Contact store",
"latitude": "",
"longitude": "",
"caption": "",
"filename": "",
"url": "",
"button": "",
"contacts": "[{\"profile\":{\"name\":\"Manas \"},\"wa_id\":\"917748847990\"}]",
"reaction": "",
"interactive": "",
"order": "",
"messages": "[{\"context\":{\"from\":\"917316914325\",\"id\":\"wamid.HBgMOTE3NzQ4ODQ3OTkwFQIAERgSNDQ1N0RCRjJGRTA3NThEMzE3AA==\"},\"from\":\"917748847990\",\"id\":\"wamid.HBgMOTE3NzQ4ODQ3OTkwFQIAEhggNENGQzYxMDk5NTg2MUQ5NjQ1REMzQzNBODRBMDM1RkMA\",\"timestamp\":\"1751961996\",\"type\":\"interactive\",\"interactive\":{\"type\":\"button_reply\",\"button_reply\":{\"id\":\"0670fbb8-46c7-4bca-9c2f-687243ee751c\",\"title\":\"Contact store\"}}}]",
"price": "",
"origin": "",
"statusUpdatedAt": ""
}
You can also add the Headers in the key-value pairs, and then we will send all the reports including these Headers:

Step 6: Click Create to save your webhook configuration.
Still have questions?
Feel free to reach us at +91 8818888733 via call or WhatsApp or drop an email to [email protected].