Skip to main content

SMS Delivery Reports

SMS reports provide visibility into the delivery lifecycle of every message sent through Exotel. Track delivery success rates, identify DLT compliance issues, and troubleshoot failed deliveries.

Viewing SMS Reports in the Dashboard​

  1. Log in to my.exotel.com
  2. Navigate to Reports > SMS Logs
  3. The default view shows the last 24 hours of SMS activity

SMS Report Fields​

FieldDescription
SMS SIDUnique identifier for the message
Date/TimeWhen the SMS was submitted
FromSender ID (header)
ToRecipient phone number
BodyMessage content
StatusCurrent delivery status
Detailed StatusGranular delivery status from the operator
DLT Template IDRegistered DLT template identifier
DLT Entity IDRegistered DLT entity identifier
PriceSMS cost
UnitsNumber of SMS units consumed (long messages use multiple units)

SMS Status Values​

Primary Status​

StatusMeaning
queuedMessage accepted and queued for sending
sendingMessage dispatched to the carrier
submittedMessage submitted to the operator gateway
sentMessage sent successfully to the carrier network
deliveredMessage confirmed delivered to the handset
failedMessage delivery failed
failed-dndMessage blocked -- recipient is on the Do Not Disturb list

Detailed Status Codes​

Detailed StatusDescription
DELIVERED_TO_HANDSETSuccessfully delivered to the recipient's phone
PENDINGAwaiting delivery confirmation from the operator
SENT_TO_OPERATORDispatched to the mobile operator
FAILED_DNDBlocked by DND (Do Not Disturb) registry
FAILED_INVALID_NUMBERInvalid or unreachable phone number
FAILED_OPERATOR_ERROROperator-side delivery failure
FAILED_EXPIREDMessage TTL expired before delivery
FAILED_DLT_SCRUBBINGBlocked by DLT template/entity validation
FAILED_CONTENT_MISMATCHMessage body does not match registered DLT template

DLT Status Tracking​

For messages sent to Indian numbers, DLT compliance is mandatory. The SMS report includes DLT-specific status information.

DLT Compliance Fields​

FieldDescription
DltEntityIdYour registered DLT entity ID
DltTemplateIdThe DLT template ID used for the message
DltContentCategoryTemplate category (transactional, promotional, service)
DltScrubStatusWhether the message passed DLT scrubbing

Common DLT Failures​

IssueCauseResolution
Template mismatchMessage body does not match registered templateEnsure message exactly matches the DLT-registered template, including variables
Entity ID invalidDLT entity ID not recognizedVerify your entity ID is correct and active on the DLT portal
Template not approvedTemplate pending approval or rejectedCheck template status on your DLT portal (Jio, Airtel, Vi)
Header mismatchSender ID not registered for the templateRegister the sender header on your DLT portal
warning

DLT scrubbing failures result in permanent message rejection. The message will not be retried. Always validate your DLT template content before sending production messages.

Filtering SMS Reports​

Available Filters​

FilterOptions
Date rangeToday, Yesterday, Last 7 days, Last 30 days, Custom
StatusDelivered, Failed, Queued, Sent
Phone numberSearch by recipient number
Sender IDFilter by sender header
DLT Template IDFilter by specific template

Search by Phone Number​

Enter the recipient's number to view all messages sent to that number:

+919876543210

or without country code:

09876543210

Accessing SMS Reports via API​

Check Single SMS Status​

curl "https://$EXOTEL_API_KEY:$EXOTEL_API_TOKEN@$EXOTEL_SUBDOMAIN/v1/Accounts/$EXOTEL_ACCOUNT_SID/SMS/Messages/YOUR_SMS_SID.json"

Response:

{
"SMSMessage": {
"Sid": "a1b2c3d4e5f6",
"AccountSid": "your_sid",
"From": "EXOTEL",
"To": "+919876543210",
"Body": "Your OTP is 123456",
"Status": "sent",
"DetailedStatus": "DELIVERED_TO_HANDSET",
"DateCreated": "2026-03-05 14:30:00",
"DateSent": "2026-03-05 14:30:02",
"DateUpdated": "2026-03-05 14:30:05",
"Price": "0.25",
"Units": 1
}
}

See SMS Details API for full reference.

Bulk SMS Status​

For bulk sends, retrieve status for all messages in a batch:

curl "https://$EXOTEL_API_KEY:$EXOTEL_API_TOKEN@$EXOTEL_SUBDOMAIN/v1/Accounts/$EXOTEL_ACCOUNT_SID/SMS/Messages.json?DateCreated=gte:2026-03-05%2000:00:00;lte:2026-03-05%2023:59:59&PageSize=100"

Delivery Webhooks​

Instead of polling, configure a StatusCallback URL when sending SMS to receive real-time delivery notifications:

curl -X POST "https://$EXOTEL_API_KEY:$EXOTEL_API_TOKEN@$EXOTEL_SUBDOMAIN/v1/Accounts/$EXOTEL_ACCOUNT_SID/Sms/send" \
-d "From=EXOTEL" \
-d "To=+919876543210" \
-d "Body=Your OTP is 123456" \
-d "StatusCallback=https://your-server.com/sms-status"

See SMS Webhooks for payload format.

SMS Delivery Metrics​

Key Metrics to Track​

MetricFormulaHealthy Range
Delivery ratedelivered / (total - queued) * 100>95%
DND block ratefailed_dnd / total * 100<5% (varies by use case)
DLT failure ratefailed_dlt / total * 1000% (fix templates)
Average delivery timeAVG(DateUpdated - DateCreated)<10 seconds
tip

A sudden increase in DLT failure rates usually indicates a template change that no longer matches the registered DLT template. Compare your current message format against the registered template on your DLT portal.

Exporting SMS Reports​

Dashboard Export​

  1. Apply your filters in the SMS Logs view
  2. Click Export > CSV or Excel
  3. Download includes all visible fields plus DLT metadata

Automated Export​

Set up Scheduled Reports to receive daily SMS delivery summaries via email.