How to Receive SMS Delivery Reports via Webhook (New)
To receive delivery reports for your SMS, you can use the Webhook (New) feature on the MSG91 platform. Follow the steps below to set it up.
1. Log in to your MSG91 Dashboard » SMS » Webhook (New) » Click on Create Webhook.

2. Configure Your Webhook.
.png)
Step 1: Provide a name to your webhook.
Step 2: Select SMS and the event type you wish to receive:
On Request Received: Triggers when an SMS request is sent from your account.
Provides logs, but does not include delivery status.
On Report Received: Provides real-time delivery reports, including success/failure status and additional details.
Note: To receive both event types, you must create two separate webhooks.
Step 3: Enter your Webhook URL (Callback URL) where data should be sent.
When you send bulk 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 is a stringified JSON array, so make sure your Webhook is capable of receiving such data.
Content-Type: Only JSON is supported. Ensure your endpoint can parse JSON data in any format.
Step 4. Customize Data Parameters
Use { to add fields/ parameters you want to receive.
You can include or exclude fields as needed. Ensure parameters follow valid JSON formatting.
Below is the sample payload, which has all the fields:
{
"requestId": "{{requestId}}",
"requestedAt": "{{requestedAt}}",
"status": "{{status}}",
"deliveryTime": "{{deliveryTime}}",
"telNum": "{{telNum}}",
"credit": "{{credit}}",
"senderId": "{{senderId}}",
"campaignName": "{{campaignName}}",
"route": "{{route}}",
"campaign_pid": "{{campaign_pid}}",
"clientId": "{{clientId}}",
"UUID": "{{UUID}}",
"INMSID": "{{INMSID}}",
"CRQID": "{{CRQID}}",
"failureReason": "{{failureReason}}",
"smsLength": "{{smsLength}}"
}
Description of the parameters:
requestId
Unique ID generated for each message request.
Example: "requestId": "686e0471d6fc0577de5d4462"
telNum
The user’s mobile number.
Example: "telNum": "91774884090"
deliveryTime
Timestamp indicating when the SMS was delivered.
Example: "deliveryTime": "2025-07-09 11:29:46"
requestedAt
Timestamp of when the message request was initiated from your end.
Example: "requestedAt": "2025-07-08 08:20:26.259000"
status
Message status – Sent / Delivered / Failed / Read.
0 = Sent
1 = Delivered
2 = Failed
Example: "status": "1"
credit
Total charges deducted for the SMS sent.
Example: "credit": "0.20"
senderId
Sender ID used to send the SMS.
Example: "senderId": "txtapi
campaignName
Name of your campaign. It will show the Sender ID if there is no campaign name.
Example: "campaignName": "TXTAPI"
route
The route of the message through which the message was sent. 4 is for Transactional and 1 for Promotional
Example: "route": "4"
CRQID
A custom parameter you can pass in the API payload. You will receive the same value in the webhook.
Example: "CRQID": "Inactive_users"
failureReason
The reason for the failure of your SMS.
Example: "failureReason": "Template Id not found on DLT"
smsLength
Number of credits deducted based on the character count of your SMS
Example: "smsLength": "2"
campaign_pid
Unique ID generated at our end for every campaign name.
Example: "campaign_pid": "63ede36abb011b34dd35800c"
UUID
It’s a custom parameter; whatever data you pass in the API under this field, we will deliver the same key-value pair on the webhook.
Example: "UUID": "Campaign_July"
clientId
It’s also a custom parameter; whatever data you pass in the API under this field, the same data will be pushed to the Webhook.
Example: "clientId": "4343878"
INMSID
This parameter is for back-end tracking on our end; kindly ignore this parameter.
Example: "INMSID": ""
Sample payload of the data received on Webhook:
{
"requestedAt": "",
"status": "1",
"deliveryTime": "2025-07-09 11:21:54",
"requestId": "686e0376d6fc0523f4226eb2",
"telNum": "917748847990",
"credit": "0.25",
"senderId": "txtapi",
"campaignName": "",
"route": "4",
"campaign_pid": "",
"clientId": "",
"UUID": "0",
"INMSID": "0",
"CRQID": "0",
"failureReason": "",
"smsLength": "1",
}
Headers:
You can also add the Headers in the key-value pairs, and then we will send all the reports including these Headers. You can also filter the data on your webhook based on a Header.

3. Click Create to save your Webhook configuration.
Still have questions?
Call or WhatsApp: +91 8818888733
Email: [email protected]