Skip to main content

Back to the list

Your SMS arrived, your dashboard says nothing. Delivery receipts explained

Three different facts, often confused

When you send an SMS, three separate things can be known about it, and they arrive at three different moments from three different places.

It left. Your phone handed the message to the radio. This is the only one your own hardware can confirm on its own, and it is confirmed within seconds.

It was accepted. The carrier took it. Usually implied by the first, sometimes reported separately.

It was delivered. The recipient's phone acknowledged it, and the carrier sent that acknowledgement back down to the sender. This one travels the furthest and is the one that often never arrives.

Most dashboards, ours included, show the first and the third side by side. It is easy to read the gap between them as a failure. It usually is not one.

Why the third fact goes missing

A delivery receipt is a small message the recipient's network sends back through the chain. Every link has to cooperate, and several routinely do not.

  • Some carriers do not return receipts at all, or return them only on certain routes, or only for certain kinds of traffic.
  • Receipts arrive late. Minutes is common, hours happens. A phone that was switched off gets the message when it comes back on, and the receipt follows then.
  • Roaming breaks the chain. A recipient abroad may receive the message perfectly while the receipt never makes the return trip.
  • The receipt can be wrong. A "delivered" can mean the message reached the operator's own store, not the handset.

So the absence of a receipt tells you very little. The presence of one is good news. The absence is simply an absence.

A campaign after sending: every target left, and the received column fills up afterwards as the carrier acknowledges.
A campaign after sending: every target left, and the received column fills up afterwards as the carrier acknowledges.

How to read the numbers without being misled

Three habits are enough.

Read what left, not what was confirmed. The count of messages that left your phones is a fact your own hardware established. Treat it as the real send figure, and treat confirmations as a bonus.

Expect the confirmed count to keep rising after the send is over. A campaign that reports finished has nothing left to send, which is not the same as nothing left to happen. Receipts keep arriving for a while, and each one moves a message from "left" to "received". If a number changes on a finished campaign, that is receipts landing, not a fault.

Watch failures, not silence. A message that actually failed says so with a reason: no service, radio off, carrier refusal, quota reached. That is the column that deserves your attention. Silence is not failure.

What this means for a one-time code

If you send login codes, the receipt is the wrong thing to wait for. It is too slow and too unreliable to gate a user experience on. Send the code, show the input field, and let the user tell you it arrived by typing it. If it does not arrive, the retry is a cheaper and more honest mechanism than a receipt you might never get.

The same holds for order confirmations and reminders. Nothing you send should depend on a confirmation the telephone network never promised to send you.