queued or sent, it means one
thing: the provider accepted your request. Not that a carrier took it. Not that a handset received
it. The SMS delivery receipt (the DLR) is the asynchronous callback that reports what actually
happened, and it can arrive seconds or minutes later. Treating the send response as delivery is the single most
common mistake in SMS integrations, and it hides every real delivery problem you have. For the authoritative
reference, see A2P 10DLC registration.Why 'sent' tells you almost nothing
When an SMS API returns queued or sent, it means one thing: the provider accepted
your request. Not that a carrier took it. Not that a handset received it. The SMS delivery
receipt (the DLR) is the asynchronous callback that reports what actually happened, and it can arrive
seconds or minutes later. Treating the send response as delivery is the single most common mistake in SMS
integrations, and it hides every real delivery problem you have. For the authoritative reference, see A2P 10DLC registration.
Get DLR handling right and you gain the one thing that makes SMS operable at scale: ground truth. Get it wrong and you are flying blind, believing a 99% 'sent' rate while a chunk of it never lands.
The status lifecycle
| Status | Means | Action |
|---|---|---|
| queued / accepted | Provider took the message | Store the id; start the delivery timer |
| sent | Handed to the carrier | In flight. Wait, do not resend yet |
| delivered | Handset confirmed receipt | Success; record latency (delivered minus sent) |
| undelivered | Carrier tried and failed | Validate the number, consider an alternate channel |
| failed | Rejected before delivery | Check error code: bad number, blocked, or no route |
| expired | Validity period elapsed undelivered | Route congestion or handset long-offline; investigate patterns |
The two that teach you the most are expired and undelivered. A cluster of either on
one destination is your early warning of a route problem or a number-quality problem. That is exactly the signal
the firewall and grey-route articles describe from the carrier side. Single fa
Handling callbacks without shooting yourself
DLRs arrive by webhook, out of order, sometimes twice, sometimes late. Four rules keep the handler correct. The same ones the Node.js tutorial implements in code.
- Be idempotent. Key every update on the message id. Duplicate DLRs are normal; a non-idempotent handler double-counts them.
- Acknowledge fast, process async. Return 200 immediately, then do the work. A slow endpoint gets your callbacks throttled or dropped by the provider.
- Respect ordering. A late
sentcan arrive afterdelivered. Never let an older status overwrite a newer terminal one. Track a state machine, not a last-write-wins field. - Record the timestamps.
deliveredminussentis your real latency distribution. Graph it per country. It is the metric users actually feel, per our OTP latency method.
Spotting fake DLRs
Here is the uncomfortable part: not every 'delivered' is true. Grey-route operators and low-quality aggregators
sometimes fabricate delivery receipts, because a fake delivered hides their real failure rate and
keeps you paying. A DLR you cannot trust is worse than no DLR — it is a lie with a green checkmark.
- Seed real SIMsKeep a panel of prepaid SIMs you control in your key destinations. They are your source of truth.
- Compare DLR to handset realitySend to the panel; a message the provider marks 'delivered' that never appears on the handset is a fabricated receipt. This is the core check in our delivery benchmark method.
- Watch impossible timingSub-second 'delivered' receipts across every message, or delivery rates that never dip regardless of destination, are statistically implausible. Real networks have variance.
- Cross-check against verification rateIf DLRs say 99% delivered but your OTP entry rate is far lower than usual, the receipts and the users disagree — trust the users.
SMSRoute is a no-KYC SMS API with crypto billing (BTC, ETH, USDT, XMR, LTC, and SOL) on direct routes, and our position on DLRs is the one this article argues for: we return real carrier-sourced receipts you can audit against your own seed SIMs, and we would rather you run that test than take our word. Fund the $5 credit, send to phones you control, and compare. Honest DLRs survive that check; fabricated ones do not.
SMSRoute's published route pages list delivery from $0.004/message (premium direct-carrier corridors up to $0.035) with sub-100ms median submission and ~98.6% delivered success (smsroute.cc route pages, 2026).
Related reading
FAQ
What is an SMS delivery receipt (DLR)?
Why does my message show 'sent' but not 'delivered'?
How do I handle DLR webhooks correctly?
Can delivery receipts be faked?
Send your first SMS in 5 minutes
No KYC. Pay with BTC, ETH, USDT, XMR, LTC, and SOL. Live routes to 149 countries.
Get an API key →