How to receive delivery reports · Fyno Documentation
How to receive delivery reports
Learn how to configure allowlisted endpoints and receive notification delivery reports (DLRs) from Fyno through APIs, Campaigns, and Workflows.
This tutorial will guide you through setting up delivery status reports from Fyno to your system, as shown in the highlighted section below.
To receive delivery reports in your system, you need to follow the below steps
Add an Allowlist URL/SQS and get it verified.
Configure the delivery data points you want to receive
Configure the Allowlist URL/SQS to receive delivery report
Through API
Through Campaign
Through Workflow
1. Add an Allowlist URL and get it verified
Allowlist (also commonly called as Webhooks) is a list of URLs or SQS that you would need to add to the Fyno platform and verify before you use it on the application and in your workflows.
You need to add Allowlist URL or SQS in 2 cases.
When you want to receive a delivery report from Fyno to your system
When you want to call your API from Fyno's Workflow
The need for an Allowlist
Allowlists were designed for Fyno's app users to ensure security for the information that is being plugged into the system, by having verified URLs/SQS and thus help avoid unnecessary security hassles.
2. Configure the delivery data points you want to receive
A Delivery Webhook is nothing but an Allowlist URL that can receive updates from Fyno regarding the delivery status of the notifications sent out and easily share the delivery details with you, to any verified endpoint, pre-decided by you.
An Allowlist URL can be converted anytime to a Delivery Webhook, once it is successfully verified by following the below steps while adding Allowlist URL/SQS.
The first Delivery Endpoint you create will be considered as 'Default' and you will start receiving your delivery reports in that URL. At any point of time, there will be only one default Allowlist URL. If you want to receive delivery reports in other URLs other than default URLs, you need to specify it in the payload as explained in the next section.
1
Select the 'Configure as Delivery Endpoint' by clicking the ellipsis as shown.
2
In the window that opens, you can select the checkbox 'Set as default endpoint to receive delivery endpoints'
3
Select the Method as 'POST'
4
Optionally you can add any Header params
5
Choose Content Type from one of the options : application/json | multipart/form-data | application/x-www-form-urlencoded
6
You can add the data points you want to receive in the Payload section and click 'Confirm'.
If you didn't include any parameters in the payload, Fyno will send the following default parameters.
IMPORTANT NOTE:
Custom fields (custom_id, custom1, custom2, and custom3) can now be used independently of delivery webhooks (Allowlist URLs).
What changed:
Earlier, custom fields were only available when configuring delivery reports, which made it mandatory to set up an Allowlist URL.
Now, custom fields are available in a separate section in the UI and can be configured without enabling delivery callbacks.
What this means:
You can use custom_id, custom1, and custom2 even if you are not using delivery webhooks.
Allowlist configuration is no longer required to use these fields.
These fields will still be captured and made available in campaign reports and analytics downloads.
Supported fields for reporting:
custom_id: Supported
custom1: Supported
custom2: Supported
custom3: Not supported for reporting (only available when configuring delivery callbacks)
Note: Support for custom3 in reporting may be added in future.
IMPORTANT NOTE:
Custom fields (custom_id, custom1, and custom2) can now be used independently of delivery webhooks (Allowlist URLs).
What changed:
Earlier, custom fields were only available when configuring delivery reports, which made it mandatory to set up an Allowlist URL.
Now, custom fields are available in a separate section in the UI and can be configured without enabling delivery callbacks.
What this means:
You can use custom_id, custom1, and custom2 even if you are not using delivery webhooks.
Allowlist configuration is no longer required to use these fields.
These fields will still be captured and made available in campaign reports and analytics downloads.
Supported fields for reporting:
custom_id: Supported
custom1: Supported
custom2: Supported
custom3: Not supported for reporting (only available when configuring delivery callbacks)
Note: Support for custom3 in reporting may be added in future.
IMPORTANT NOTE:
Custom fields (custom_id, custom1, and custom2) can now be used independently of delivery webhooks (Allowlist URLs).
What changed:
Earlier, custom fields were only available when configuring delivery reports, which made it mandatory to set up an Allowlist URL.
Now, custom fields are available in a separate section in the UI and can be configured without enabling delivery callbacks.
What this means:
You can use custom_id, custom1, and custom2 even if you are not using delivery webhooks.
Allowlist configuration is no longer required to use these fields.
These fields will still be captured and made available in campaign reports and analytics downloads.
Supported fields for reporting:
custom_id: Supported
custom1: Supported
custom2: Supported
custom3: Not supported for reporting (only available when configuring delivery callbacks)
Note: Support for custom3 in reporting may be added in future.
Default Parameters
Parameter Name
Type & Value
custom_id
String or Number; an alpha-numeric or numeric unique identifier that is provided in the callback object during the submission request
msg_id
String; Fyno message id that is generated during submission request. example : 17f7e491-f51f-4e1e-881c-794f838c7c3c:s8a5
status
String; It holds the delivery status information of the triggered message id. Example: DELIVERED, FAILED, READ, OPEN, etc
Below is a list of all the parameters that Fyno can send you as data points. However, each one of these will need to be specified if you need them.
Parameter Name
Type & Value
request_id
string; request_id parameter in response which is generated during the submission request example: 17f7e491-f51f-4e1e-881c-794f838c7c3c.
custom_id
String or Number; an alpha-numeric or numeric unique identifier that is provided in the callback object during the submission request.
msg_id
String; Fyno message id that is generated during submission request. example : 17f7e491-f51f-4e1e-881c-794f838c7c3c:s8a5.
status
String; It holds the delivery status information of the triggered message id. Example: DELIVERED, FAILED, READ, OPEN, etc.
destination
String; destinations like email, mobile no sent during submission request. example : abc@gmail.com, 919876543210.
distinct_id
String; It holds the distinct_id of the user, if specified in the request.
message
String; This is an error message given by the provider if any delivery failure occurs. Note: all provider does not give this information.
senttime
String; Submission time of the request, YYYY-MM-DD HH:mm:ss UTC.
senttime_epoch
String; Submission time of the request in epoch format (Unix time).
dlrtime
String; The time when the delivery report status was received, YYYY-MM-DD HH:mm:ss UTC.
dlrtime_epoch
String; The time when the delivery report status was received in epoch format (Unix time).
integration_name
String; Integration account name through which the notification was sent.
channel
String; the name of the channel through which the notification was sent.
provider
String; the name of the provider via which the notification was sent.
provider_msg_id
String; the msg ID (if available) of the provider via which the notification was sent.
provider_template_id
String; the provider template ID that was sent. For SMS, the DLT template ID is sent (for Indian businesses). For WhatsApp, the template name and language is sent (templatename_lang). For RCS, the template name is sent.
event_name
String; the name of the Notification Event that is being triggered.
template
String; the name of the Template, whose content is sent out delivery and ideally it is being configured in the notification event.
msg_content
JSON Object; Contains information of the template sent. For SMS, it will include the SMS text and template ID (if available). For WhatsApp, it will include the template_name, language, and placeholder mapping. For Email, it will include the subject line, body content, and attachments (only if Presigned/Public URLs are used).From Name, From Email and Reply To data points also will be received only if they are configured in the Email template. Note: This variable is enabled on request and is available only for SMS, WhatsApp and Email. If enabled, only the first webhook call will contain this variable.
version
String: API version that is used to trigger a notification event test or live.
custom1
String: custom1 value that is submitted callback object in submission request. If it does not pass in the request then it will be an empty string.
custom2
String: custom2 value that is submitted callback object in submission request. If it does not pass in the request then it will be an empty string.
custom3
String: custom3 value that is submitted callback object in submission request. If it does not pass in the request then it will be an empty string.
Once this is done, all the delivery statuses for every notification triggered will be automatically updated at this location.
Not all Providers and Channels give you delivery notifications and updates. Check here for a detailed list.
3. Configure the Allowlist URL to receive delivery report
You can configure delivery callback when you are triggering through
API
Campaign
Workflow
How to configure delivery callback through API
When you are triggering a notification event using API, you need to pass additional parameters in the payload
Sample Notification Event API with delivery callback details
Length: 200 characters if string. No special characters allowed.
Length: 20 digits if numeric
custom1pathstring
Additional information to tag your notification
Length: 50 characters. No special characters allowed.
Example:order-id
custom2pathstring
Additional information to tag your notification
Length: 50 characters. No special characters allowed.
Example:category
custom3pathstring
Additional information to tag your notification
Length: 50 characters. No special characters allowed.
Example:message-id
enablepathenumdefault: true
true: enable delivery status over callback.
false: disable delivery status over callback
The default value is true if custom_id is specified.
allowlist_urlpathstring
Specify one or more allowlisted URL names (up to 3) where you want to receive delivery reports.
If no URL name(s) are specified here, the system will use your default URL (if one exists).
If no URL name(s) are specified here AND no default URL is set, delivery reports cannot be sent.
Example: ["DynamicWebhookSite", "Mixpanel"]
Example: DynamicWebhookSite
How to configure delivery callback in Campaign
To enable receiving delivery reports from Fyno, select the checkbox 'Receive delivery report from Fyno to my allowlisted endpoint(s)'. This enables the callbacks for the channels and essentially sends back the delivery updates about each notification triggered. On checking this box, 3 additional placeholder details will need to be configured.
Allowlisted Endpointspathstring
Specify one or more allowlisted URL names (up to 3) where you want to receive delivery reports.
If no URL name(s) are specified here, the system will use your default URL (if one exists).
If no URL name(s) are specified here AND no default URL is set, delivery reports cannot be sent.
Example: ["DynamicWebhookSite", "Mixpanel"]
Example: DynamicWebhookSite
Custom IDpathstring
Unique identifier of your notification
Length: 200 characters if string. No special characters allowed.
Length: 20 digits if numeric
Custom Value 1pathstring
Additional information to tag your notification
Length: 50 characters. No special characters allowed.
Example:campaign-name
Custom Value 2pathstring
Additional information to tag your notification
Length: 50 characters. No special characters allowed.
Example:category
Custom Value 3pathstring
Additional information to tag your notification
Length: 50 characters. No special characters allowed.
Example:message-id
More values can be added in the callback. For a list of additional available values, please see: Callback Response
How to configure delivery callback in Workflow
1
To configure callbacks to receive delivery reports, click the Settings icon while configuring notification event within a workflow as shown below.
2
It opens the page as shown below. Select the 'Do you want to receive a delivery report?' checkbox.
3
This option allows you to receive Delivery reports of each notification triggered in any URL you have allowlisted in Fyno. It can be done in 2 ways.
From Allowlist - Selecting Delivery Report Endpoint(s) from Verified Allowlist URLs (Maximum 3 can be selected).
Custom - Selecting Delivery Report Endpoint from payload or a simplified custom variable. (Only 1 can be selected).
You can also configure custom parameters to be sent along with delivery reports. The supported fields are: custom_id, custom1, custom2, and custom3. These can be passed via the workflow payload or mapped using variables, and will be included in the delivery callback for downstream tracking and reporting.
Once the Delivery Endpoint URL(s) is selected, 3 additional placeholder details need to be configured.
Custom IDpathstring
Unique identifier of your notification
Unique identifier of your notification
Length: 200 characters if string
Length: 20 digits if numeric
Custom Field 1pathstring
Additional information to tag your notification
Length: 50 characters
Example:order-id
Custom Field 2pathstring
Additional information to tag your notification
Length: 50 characters
Example:category
Custom Field 3pathstring
Additional information to tag your notification
Length: 50 characters
Example:message-id
More values can be added in the callback. For a list of additional available values, click here.
Testing Callback Delivery from Playground
First, allowlist your endpoint(s), then configure delivery callbacks. After completing these steps, validate the setup on the /notification-events/playground/ page.
This helps ensure that:
Your endpoint is reachable
The payload structure is correct
Custom parameters (custom_id, custom1, custom2, etc.) are being sent as expected
Steps to Test
Navigate to a specific notification event, then access the Notification Events Playground page from there.
Trigger a test notification event.
Before sending the test event, ensure that:
You are working with the intended event (for example, OTP or Marketing) and that the correct version (test or live) is selected
The Receive delivery report from Fyno to my allowlisted endpoint(s) option is enabled
Send the test event.
What to Verify
The callback is received at your allowlisted endpoint
The payload includes:
Default delivery report fields
Any configured custom parameters (custom_id, custom1, custom2, etc.)
Troubleshooting Tips
If no callback is received:
Verify that the allowlisted endpoint configuration is correct (method, content type, headers, and payload)
Check that the payload key mappings are correctly defined so the required data is sent to your endpoint