How to Receive Email Delivery Reports via Webhook (New)
You can use the Webhook (New) feature on the MSG91 platform to receive delivery reports for your Emails. Please follow the steps below to set it up.
1. Log in to your MSG91 Dashboard » Email » Webhook (New) » Click on Create Webhook.
2. Configure Your Webhook.
Step 1: Provide a name to your webhook.
Step 2. Select Email and the event type you wish to receive:
On Enqueued:
Triggers when an email request is sent from your account.
It does not include a delivery report.
On Report Received:
Provides real-time delivery reports, including success/failure status, its reason, and additional details.
On Opened/Unsubscribed/Clicked/Complaints Received:
Triggers when an action (such as Clicked, Opened, Unsubscribed, URL clicked) happens or if any complaint is received for your delivered email.
Note: To receive all event types, you must create a separate webhook for every event.
Step 3: Enter your Webhook URL (Callback URL) where data should be sent.
When you send bulk emails, the webhook will still send one log (payload) per recipient email. This means for each email, 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.
Example JSON payload:
{
"requestId": "{{requestId}}",
"uuid": "{{uuid}}",
"crqid": "{{crqid}}",
"requestedAt": "{{requestedAt}}",
"sender": "{{sender}}",
"recipient": "{{recipient}}",
"eventId": "{{eventId}}",
"eventName": "{{eventName}}",
"templateName": "{{templateName}}",
"campaignRequestId": "{{campaignRequestId}}",
"campaignName": "{{campaignName}}",
"domain": "{{domain}}",
"isSmtp": "{{isSmtp}}",
"templateVersionId": "{{templateVersionId}}",
"sendTo": "{{sendTo}}",
"cc": "{{cc}}",
"bcc": "{{bcc}}",
"subject": "{{subject}}",
"variables": "{{variables}}",
"replyTo": "{{replyTo}}",
"inReplyTo": "{{inReplyTo}}",
"msgId": "{{msgId}}",
"attachments": "{{attachments}}",
"statusCode": "{{statusCode}}",
"enhancedStatusCode": "{{enhancedStatusCode}}",
"reason": "{{reason}}",
"statusUpdatedAt": "{{statusUpdatedAt}}"
}
Description of the parameters:
requestId
Timestamp indicating when the email request was initiated from your end.
Example: "requestId": "2025-07-10T11:59:47.000Z"
uuid
Unique ID of the email request.
Example: "uuid": "Your Mystic Cosmos OTP"
crqid
A custom parameter you can pass in the API payload. You will receive the same value in the webhook.
Example: "crqid": "MSG91_Email"
requestedAt
Timestamp indicating when the message request was initiated from your end..
Example: "requestedAt": "2025-07-21T05:39:54.000Z"
sender
Email address through which you sent the mail.
Example: "sender": "[email protected]"
recipient
Email address of the recipient.
Example: ""recipient": "[email protected]"
eventId
This ID indicates the status of your email.
1= Queued.
2= Accepted.
4= Delivered.
5= Opened
9= Failed
Example: "eventId": "1”
eventName
Status of your email.
Example: "eventName": "Queued"
templateName
Name of the template that you used to send the email.
Example: "templateName": "template_02_06_2025_16_06_3"
campaignName
Name of your campaign if sent via MSG91’s Campaign service.
Example: "campaignName": "JulyfirstSale”
campaignRequestId
Unique request ID of your campaign.
Example: "campaignRequestId": "f437yhghutyi4379r8rot439"
domain
The domain through which you sent the email.
Example: "domain": "7whs3y.mailer91.com"
isSmtp
Indicates if the email was sent via SMTP. "1" means it was, "0" means it wasn't.
Example: "isSmtp": "0"
templateVersionId
ID of the version of the template that you used to send mail.
Example: "templateVersionId": "38986",
sendTo
Email address on which the email was sent.
Example: "sendTo": "{\"email\":\"[email protected]\"}"
cc
The email address that you kept in CC.
Example: "cc": "[email protected]"
bcc
The email address that you kept in BCC.
Example: "bcc": "[email protected]"
subject
Subject of the email that you sent.
Example: ""subject": "Embrace Positivity - A Message from Mystic Cosmos"
variables
Variable values you passed for the variables in your email template.
Example: "variables": "{\"name\":\"User\"}"
replyTo
The email address you passed in the replyTo field.
Example: ""replyTo": "[email protected]"
attachments
The details of the attachments you passed in your email request.
Example: "attachments": "{\"name\":\"Guidelines\",\"extension\":\"jpeg\",\"path\":\"https://files.msg91.com/454228/bfxkieca\",\"type\":\"url\"},{\"name\":\"Resume\",\"extension\":\"png\",\"path\":\"https://files.msg91.com/454228/lffasyzq\",\"type\":\"url\"}"
reason
The reason for the failure of your email. If the email was delivered, this field will display the value 'OK'.
Example: "reason": "The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. For more information, go to https://support.google.com/mail/?p=NoSuchUser 00721157ae682-7195310c395si72021867b3.89 - gsmtp"
statusUpdatedAt
Timestamp indicating when the latest status of your email was updated (Queued/ Accepted/Delivered/ Failed/ Opened)
Example: "statusUpdatedAt": "2025-07-23T05:15:52.000Z"
statusCode
The statusCode is a standard SMTP response code (3-digit number) returned by the recipient's mail server. It indicates the overall result of the attempted email delivery.
Example: "statusCode": "250"
enhancedStatusCode
Provides a structured, detailed status returned by the mail server in response to the delivery attempt. It uses a standardized format (X.Y.Z) to categorize the nature of the response, offering more specific insight into the delivery status.
Example: "enhancedStatusCode": "2.0.0"
msgId
Unique ID generated at our end for every email request sent.
Example: "msgId": "<1753076397-9f70fd93-c471-46e8-8e3b-e01e164c2212-0@7whs3y.mailer91.com>"
inReplyTo
Indicates the message ID of the original email to which the current email is a reply. This parameter helps maintain the email thread structure by linking related messages in conversation views.
Example: "inReplyTo": "<16282926397-9f70fd93-c471-46e8-8e3b-e01e164c2212-0@7whs3y.mailer91.com>"
Sample payload of the data received on Webhook:
{
"requestId": "9f72f7d5-dfc3-4e0b-93ce-9f350b0abc7a",
"uuid": "",
"crqid": "MSG91_email",
"requestedAt": "2025-07-22T05:15:30.000Z",
"sender": "[email protected]",
"recipient": "[email protected]",
"eventId": "5",
"eventName": "Opened",
"templateName": "template_02_06_2025_16_06_3",
"campaignRequestId": "1753161321_6e21faccac0762b9051d47ce0285f365",
"campaignName": "july22",
"pluginsource": "1700",
"domain": "7whs3y.mailer91.com",
"isSmtp": "0",
"templateVersionId": "38986",
"sendTo": "{\"name\":null,\"email\":\"[email protected]\"}",
"cc": "{\"email\":\"[email protected]\"}",
"bcc": "",
"subject": "Embrace Positivity - A Message from Mystic Cosmos",
"variables": "{\"name\":\"Manas\"}",
"replyTo": "{\"name\":\"Manas\",\"email\":\"[email protected]\"}",
"inReplyTo": "",
"msgId": "<1753161332-9f72f7d5-dfc3-4e0b-93ce-9f350b0abc7a-2@7whs3y.mailer91.com>",
"attachments": "{\"name\":\"Guidelines\",\"extension\":\"jpeg\",\"path\":\"https://files.msg91.com/454228/bfxkieca\",\"type\":\"url\"},{\"name\":\"Resume\",\"extension\":\"png\",\"path\":\"https://files.msg91.com/454228/lffasyzq\",\"type\":\"url\"}",
"statusCode": "250",
"enhancedStatusCode": "2.0.0",
"reason": "OK",
"statusUpdatedAt": "2025-07-22T05:27:59.000Z",
}
You can also add the Headers in the key-value pairs, and we will send all the reports along with these Headers:

Step 5. Click Create to save the Webhook.
Still have questions?
Feel free to reach us at +91 8818888733 via call or WhatsApp, or drop an email to [email protected].