The single most useful thing to understand about SMS reporting is that sent and delivered are different events, reported at different times by different systems. Treating them as the same number is how people conclude their campaign worked when a tenth of it never arrived.
What each status means
| Status | What actually happened |
|---|---|
| Queued | Accepted by the platform, waiting its turn. Normal for large sends. |
| Sent | Handed to the mobile network, which accepted it. Nothing yet says a phone received it. |
| Delivered | The handset confirmed arrival. This is the only status that means the message landed. |
| Failed | The network could not deliver it — usually a dead or invalid number. |
| Rejected | Refused before delivery was attempted, typically a malformed number or a blocked sender. |
Calculating a delivery rate that means something
Use only the messages that reached a final state:
delivery rate = delivered ÷ (delivered + failed + rejected)
Messages still sitting at sent or queued belong in neither half. Including them drags the figure down while they are simply unresolved, and you end up investigating a problem that does not exist. Wait for them to settle, then measure.
Reading the failures
- A handful of failures scattered through a send is ordinary — phones get switched off and numbers get disconnected.
- Failures concentrated on one network usually mean a routing problem rather than anything about your list. Worth reporting to us.
- Failures concentrated in one batch of contacts almost always means how those contacts were collected or formatted. Check the source.
- Everything rejected instantly points at the sender ID or the number format, not the recipients.
Turn the report into an action
After each significant send, take the failed and rejected numbers out of your contact list. They cost you on every future send and will not start working on their own. This one habit does more for your long-run delivery rate than anything you can change about the message itself.