What is DLR (Delivery Reports) in SMS API messaging?

A DLR (delivery report) in SMS API messaging is an automatic receipt from the mobile carrier to your system. It tells you whether your SMS reached the recipient’s phone successfully or if an error occurred along the way.

What do the different DLR statuses mean?

When you send an SMS via GatewayAPI, the message changes status along the way:

  • WAITING: The message is saved in the system and ready to be sent.
  • ENROUTE: The message has been forwarded to the mobile carrier.
  • DELIVERED: The message arrived safely. The recipient’s phone has confirmed receipt via the cell tower.
  • EXPIRED: The message could not be delivered within the mobile carrier’s time limit (e.g., if the phone was turned off for too long).
  • UNDELIVERABLE / REJECTED: The message failed permanently (e.g., if the number does not exist or if the carrier blocked it).

In addition, there are a number of specific DLR statuses that can be triggered in different contexts.

By monitoring statuses via the traffic log in the dashboard or via webhooks, your application can automatically react to errors, resend important messages or clean up inactive phone numbers in your database.

How do webhooks work with DLRs?

Webhooks are the technical method that automatically delivers delivery reports to your system. This saves your system from repeatedly asking whether the message arrived – instead, GatewayAPI sends a message directly to your server whenever an update occurs.

This is crucial for, e.g., a SaaS booking system that can update its UI in real time with a green checkmark for Delivered.

About fake delivery reports

A genuine “Delivered” status is only triggered when the recipient’s device confirms receipt. However, some industry players unfortunately use status updates where the message is marked as delivered – even if it is subsequently discarded without arriving. This can create a misleading delivery report, which in the worst case results in being billed for incomplete deliveries. GatewayAPI uses strictly direct and validated DLRs from mobile carriers so you can always trust your data.

From delivery to read

In traditional SMS, a DLR tells you when the message is delivered – meaning it has arrived safely on the recipient’s phone.

If you send via modern channels such as RCS, WhatsApp, or Messenger, the reporting is expanded with a “Read” status. Where “Delivered” confirms that the phone received the message, Read (the familiar blue checkmarks) confirms that the recipient actually opened the app and saw your message. This allows you to build even more precise automations and resend rules.