Mobile Delivery Receipts

What is a delivery receipt (DLR)?

A delivery receipt (DLR) is a status update that indicates the progress or outcome of an SMS message after it has been submitted for delivery. DLRs are used to understand whether a message was accepted by the carrier, delivered to a handset, or could not be delivered. Not all statuses represent handset delivery outcomes. Some statuses are generated internally by the platform, while others are provided by the carrier after message submission. When messages are submitted for delivery, they are sent to the carrier’s Short Message Service Centre (SMSC), which is responsible for attempting delivery to the destination handset and returning delivery receipts where supported.

Message Delivery and Reporting Behaviour

How Message Delivery Works

When messages are submitted for delivery, they are sent to the carrier’s Short Message Service Centre (SMSC). The SMSC is responsible for attempting delivery to the destination handset and, where supported, returning delivery receipts back to the platform. For mobile-terminated (MT) messages, a status of Sent means the message has been successfully handed off from the platform to the delivery system that will attempt submission to the carrier. This is an internal platform status, not a carrier acknowledgement. For mobile-originated (MO) messages:

  • For most Gateway APIs, Sent indicates the message has been successfully delivered to the configured callback URL
  • For SMPP integrations, MO messages are delivered back via the relevant SMPP bind, rather than a HTTP callback

Retries and Frozen Messages

If a message cannot be delivered immediately, the platform will retry delivery once per minute. Messages are retried for a defined period. If delivery continues to fail after repeated attempts, the message will be marked as Frozen and no further retries will occur. This retry behaviour applies to message delivery in general and helps balance timely delivery with avoiding indefinite retry loops.

Message Status Overview

Messages progress through a combination of platform-generated and carrier-generated states.

info
  • Campaign Manager Reports focus on the final logical state of a message
  • Mobile Reports reflect the latest confirmed delivery state received from the carrier

As a result, the same message may appear with different labels in different reports while still representing the same underlying condition.

Typical Successful MT Message Flow

A successful message will typically progress through:

Queued → Sent → Submitted → Received

In Mobile Reports, these statuses are displayed in chronological order and are timestamped from bottom to top.

Status matrix

Platform-Generated Statuses

Generated by Modica before or during submission to the carrier

Status Description
Queued The message is queued within the platform and has not yet left the gateway.
Sent The message has left the platform gateway but has not yet been acknowledged by the carrier SMSC.
Failed / Frozen The message could not be sent to the carrier (e.g. opted-out number, invalid formatting, connectivity or system issue). Messages that fail repeatedly may be frozen and are no longer retried.
Deficient The account credit or message limit has been exhausted.
Blocked The message was blocked due to an invalid or protected sender ID or mask.
Diverted Message processing was paused, delaying send.
Deleted Message processing was stopped before the message could be sent.

Carrier-Generated Statuses

Provided by the carrier after the message leaves the gateway

Status Description
Submitted The carrier has acknowledged receipt of the message from the platform. This is not a handset delivery confirmation.
Received The carrier has confirmed delivery to the destination handset.
Rejected The carrier attempted delivery but rejected the message (e.g. invalid number, unsupported sender ID).
Expired The carrier was unable to deliver the message within the validity period and stopped retrying.

Campaign Manager Reporting – Status Behaviour

Campaign Manager Only Status: Unknown

In Campaign Manager reports, a message may appear with the status Unknown when:

  • The message has been successfully submitted to the carrier, and
  • No final delivery receipt (such as Received, Rejected, or Expired) has been returned by the carrier This status does not indicate a failure. It simply means that the final delivery outcome is not known because the carrier did not provide an updated delivery receipt. In many cases, the message may still have been delivered to the handset, but the carrier did not return a final confirmation to the platform.

Important Clarification: “Pending” in Campaign Manager

  • Pending is not a carrier-generated delivery receipt
  • Pending does not appear in Mobile Reports
  • Pending is an internal, transitional concept used only within Campaign Manager If no final delivery receipt is received, the message will ultimately appear as Unknown in Campaign Manager. Pending should not be interpreted as a handset delivery status.

Why Statuses May Differ Between Campaign Manager and Mobile Reports

For the same message, you may observe different statuses across reports:

  • Campaign Manager may display Unknown because it focuses on the final delivery outcome
  • Mobile Reports may display Submitted because this is the latest confirmed state returned by the carrier Both views are correct and represent the same message from different reporting perspectives.

Carrier Limitations

Delivery receipt availability depends entirely on the destination carrier. Some carriers do not provide final delivery receipts.

For example, in certain regions carriers may only acknowledge message submission and not return handset delivery confirmations. In these cases, messages may remain in a Submitted or Unknown state.

Summary

  • Mobile Reports show the latest confirmed carrier state
  • Campaign Manager Reports show the final logical state
  • Differences between reports are expected and normal
  • Unknown does not mean failed — it means no final delivery receipt was received