---
title: "Delivery rate is not a result"
summary: "It is the metric most often reported and the least often useful. What to measure instead, and why the funnel is steeper than anyone's dashboard suggests."
canonical: https://cpaas.co/en/insights/delivery-rate-is-not-a-result
kind: explainer
depth: foundation
origin: original
published: 2026-08-13T11:34:07.986Z
updated: 2026-09-08T11:34:08.082Z
topics: ["Analytics", "Messaging", "Fundamentals"]
language: en
---
# Delivery rate is not a result

Every messaging platform leads with delivery rate, and it is almost always above 95%. This is not because the programmes are working. It is because delivery rate measures the network, and networks are good.

> **Interactive figure — delivery-funnel.** Set delivery at 97% and read the last bar. The two numbers are describing the same campaign.
> Available at https://cpaas.co/en/insights/delivery-rate-is-not-a-result

## What the number actually means

"Delivered" means an intermediary acknowledged the handoff. It does not mean the handset displayed it, the person saw it, or anything followed.

Between delivery and outcome sit at least three collapses: the message is not seen, the message is seen and ignored, and the message is read and acted on. Each stage loses most of what the previous one had.

That is not pessimism, it is arithmetic — and it is why a 97% delivery rate and a 2% outcome rate routinely describe the same send.

```diagram:stats
# One send, four numbers
97% | Delivered | An intermediary acknowledged the handoff
62% | Seen | Of those delivered, the share that reached a screen
4% | Acted on | Of those seen, the share that did something
2.4% | Outcome per hundred sent | The only figure the business recognises
> Every stage loses most of what the previous one had. Report the last number against sent, not against delivered.
```

## What to measure instead

**Outcome per thousand sent.** Whatever the message was for — an appointment confirmed, a payment completed, a reply received — divided by the number sent, not the number delivered. Using delivered as the denominator quietly hides your worst failures, because the messages that never arrived are exactly the ones that could not succeed.

**Unsubscribe rate per send, tracked over time.** The clearest early warning that a programme is being over-used. It moves before revenue does.

**Reply rate**, on any channel where replies are possible. It is the only metric on this list that tells you whether the message felt like a message rather than a broadcast.

**Complaint and block rate.** Low absolute numbers with a rising trend is the shape that precedes a channel being taken away from you.

## The counterfactual problem

The hardest part is not measurement, it is attribution. A customer who received a reminder and then paid may have paid anyway.

The only honest answer is a holdout: a randomly selected group who receive nothing, measured on the same outcome. It is uncomfortable — you are deliberately not sending to people who might have converted — and it is the difference between knowing your programme works and believing it does.

Keep the holdout small, keep it random, and keep it permanently. A holdout that only runs during a test tells you about the test.

## The one thing delivery rate is good for

Detecting a break. A delivery rate that drops from 97% to 71% overnight is a real signal — a registration lapsed, a template was rejected, a route changed. Alert on the derivative, not the value.

## The status codes that actually matter

Delivery rate is an average over statuses, and the average hides the diagnosis. What you want is the distribution.

**Rejected at submission** is your problem: a malformed number, a missing registration, a template that was never approved. It is also the easiest to fix, because it fails immediately and loudly.

**Accepted then failed downstream** is the interesting one. An unreachable handset, a barred number, a carrier that took it and dropped it. The cause code is the whole value here, and a provider that returns "failed" without one is a provider you cannot debug against.

**Accepted and never resolved** is the worst category, and every large programme has some. The message left, nothing came back, and the record sits in limbo. Track it explicitly rather than letting it round into the delivered figure.

## Segments, and why your bill surprises you

For SMS specifically, delivery is not the only number that misleads.

A message longer than one segment is billed as several, and the segment length depends on the encoding. Non-Latin scripts drop the per-segment character count sharply, so the same sentence in Arabic costs a multiple of its English equivalent. A single stray character can push a message from one segment to two — and a variable in a template means you often do not know the length until send time.

Measure cost per *outcome*, not per message, and the problem shrinks to its proper size.

## Building a holdout that survives scrutiny

The holdout is the only honest attribution, and it is easy to build one that does not work.

**Randomise per person and persist the assignment.** If someone is in the holdout, they stay in it. Re-randomising every campaign means every person eventually receives something, and the group stops being a control.

**Exclude nobody for convenience.** The temptation is to pull high-value customers out of the holdout. That is exactly the population you most need to measure, and removing them makes the result unusable.

**Report the confidence interval, not just the difference.** A 3% lift on two hundred people is noise. Saying so in the report is what makes the report trustworthy the next time it shows a real number.

## What good reporting looks like

One page. Outcome per thousand sent, with the holdout beside it. The funnel underneath. Unsubscribe and complaint rates as a trend, not a snapshot. A sentence naming what the numbers cannot settle.

If it takes more than a page, it is being padded with things that move without meaning.

## What to take away

- Delivery rate measures the network. Alert on its derivative, not its value.
- Use *sent* as the denominator; delivered hides your worst failures.
- Keep a permanent, persisted, unexcepted holdout or you are guessing.
- Watch unsubscribes and complaints as trends — they move before revenue does.

---

Published by the company behind five products in this category. Those products appear in this site's directory alongside competitors under the same published criteria and are labelled as its own. Editorial content does not recommend them.
