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:
{
"requestedAt": "{{requestedAt}}",
"status": "{{status}}",
"deliveryTime": "{{deliveryTime}}",
"requestId": "{{requestId}}",
"telNum": "{{telNum}}",
"credit": "{{credit}}",
"senderId": "{{senderId}}",
"campaignName": "{{campaignName}}",
"scheduleDateTime": "{{scheduleDateTime}}",
"msgData": "{{msgData}}",
"route": "{{route}}",
"DLT_TE_ID": "{{DLT_TE_ID}}",
"campaign_pid": "{{campaign_pid}}",
"nodeId": "{{nodeId}}",
"userIp": "{{userIp}}",
"clientId": "{{clientId}}",
"UUID": "{{UUID}}",
"INMSID": "{{INMSID}}",
"CRQID": "{{CRQID}}",
"countryName": "{{countryName}}",
"failureReason": "{{failureReason}}",
"smsLength": "{{smsLength}}",
"telecomCircle": "{{telecomCircle}}",
"circleDescription": "{{circleDescription}}",
"user_pid": "{{user_pid}}"
}
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 of when the SMS was delivered from your end.
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": "txtapicampaignName
Name of your campaign. It will show the Sender ID if there is no campaign name.
Example: "campaignName": "TXTAPI"scheduleDateTime
The date and time of the message when it was scheduled. You will receive this field only when the message has been scheduled.
Example: "scheduleDateTime": "2025-07-09 11:57:34"route
The route of the message through which the message was sent. 4 is for Transactional and 1 for Promotional
Example: "route": "4"DLT_TE_ID
DLT Template ID of your message.
Example: "DLT_TE_ID": "1748558999665865"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"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"countryName
Name of the country to which the SMS was sent.
Example: "countryName": "India"user_pid
Unique company ID of your MSG91 account.
Example: "user_pid": "390635"campaign_pid
Unique ID generated at our end for every campaign name.
Example: "campaign_pid": "63ede36abb011b34dd35800c"msgData
It is only for the event type “Request Received” (Request Sent), it will show all the details related to the message.
Example: "msgData": "{\n \"requestedAt\": \"\",\n \"status\": \"1\",\n \"deliveryTime\": \"2025-07-09 11:27:17\",\n \"requestId\": \"686e04777d6fc0577de5d4462\",\n \"telNum\": \"91774817990\",\n \"credit\": \"0.01\",\n \"senderId\": \"txtapi\",\n \"campaignName\": \"\",\n \"scheduleDateTime\": \"\",\n \"msgData\": \"\",\n \"route\": \"931\",\n \"DLT_TE_ID\": \"\",\n \"campaign_pid\": \"\",\n \"nodeId\": \"\",\n \"userIp\": \"\",\n \"clientId\": \"\",\n \"UUID\": \"0\",\n \"INMSID\": \"0\",\n \"CRQID\": \"0\",\n \"countryName\": \"India\",\n \"failureReason\": \"\",\n \"smsLength\": \"1\",\n \"telecomCircle\": \"Madhya Pradesh & Chhattisgarh\",\n \"circleDescription\": \"State of Madhya Pradesh and State of Chhattisgarh\",\n \"user_pid\": \"390635\"\n}"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": ""nodeId
Node ID of the campaign if you used the Campaign service to launch the campaign.
Example: "nodeId": "88449"userIp
IP address from which the request was sent.
Example: "userIp": "2600:1700:0:3002::900"
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": "",
"scheduleDateTime": "",
"msgData": "",
"route": "4",
"DLT_TE_ID": "17558945588965886",
"campaign_pid": "",
"nodeId": "",
"userIp": "",
"clientId": "",
"UUID": "0",
"INMSID": "0",
"CRQID": "0",
"countryName": "India",
"failureReason": "",
"smsLength": "1",
"telecomCircle": "Madhya Pradesh & Chhattisgarh",
"circleDescription": "State of Madhya Pradesh and State of Chhattisgarh",
"user_pid": "390635"
}
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]