Skip to content
Allin

Open Rate Is a Measurement of Your Audience's Mail Client

Published 11/28/2025 · 12 min read · Marketing & SEO tools

Camille Laurent

Camille LaurentFinance writer at Allin

Tax · Personal finance

Checked against 5 sources

View profile
In short

An open is recorded when a tracking pixel is requested, so the metric measures a mail client's behaviour and only sometimes a person's. Three fixes make it usable. First, divide by delivered, not sent: on a 100,000-message send with 1,200 hard bounces and 2,300 soft bounces, 96,500 were delivered, so 28,950 unique opens are 30.00% and not 28.95% — the sent denominator understates by 3.50% relative. RFC 3463 gives the real definitions: a 5.X.X code is a permanent failure, a 4.X.X code a persistent transient one, which is exactly the hard-versus-soft distinction. Second, keep unique and total opens apart; here they are 28,950 and 54,300, or 1.88 opens per opener. Third, decompose. If a share m of your list sits behind a proxy that prefetches images about 95% of the time, a reported rate R implies a true rate of (R − 0.95m)/(1 − m) among everyone else. A reported 45% means 32.50% at m = 20% and 11.67% at m = 40%, and at m = R/0.95 = 47.37% the reported figure is fully explained by machines. Instrument instead: a seed panel, a holdout, and clicks as the segmentation signal.

The denominator should be delivered, not sent — which means defining hard and soft bounces properly. Unique and total opens are different numbers. And a reported open rate has a computable null point: past a certain share of prefetching clients it carries no information about humans at all. The instrumentation that replaces it.

Divide by delivered, and know what did not arrive

A message that never arrived cannot be opened, so counting it in the denominator guarantees an understatement. Delivered equals sent minus bounces, and the size of the correction is exactly the bounce rate. On a send of 100,000 with 1,200 hard bounces and 2,300 soft bounces, 96,500 were delivered — 96.50%. The 28,950 unique opens are therefore an open rate of 30.00% against delivered and 28.95% against sent. Those look close, but the second is 3.50% lower in relative terms, and the gap grows with every point of bounce rate.

The hard-versus-soft distinction is not marketing jargon; it is a protocol classification. RFC 3463 defines a 5.X.X status as a permanent failure — one "not likely to be resolved by resending the message in the current form" — and a 4.X.X status as a persistent transient failure, where "sending in the future may be successful". A hard bounce is a 5.X.X: no such mailbox, domain does not exist, address permanently rejected. A soft bounce is a 4.X.X: mailbox full, server temporarily unavailable, greylisting, rate limiting.

The operational consequence differs sharply. A hard bounce means the address is gone and must be suppressed immediately; continuing to send to it is the single clearest signal to a mailbox provider that you are not maintaining a list. A soft bounce means retry, with a limit — most senders convert an address to permanently suppressed after a run of consecutive soft failures, and the exact threshold matters less than having one. An open rate computed without suppressing hard bounces is being dragged down every send by addresses that no longer exist.

Unique opens and total opens are two different measurements

Total opens counts pixel requests. Unique opens counts recipients with at least one request. In the worked send those are 54,300 and 28,950, which is 1.88 opens per opener. Only the unique figure belongs in an open rate, because the denominator is people; the total belongs nowhere near a percentage, since it can exceed the number of recipients and produce a rate above 100%.

The ratio between them is genuinely informative, but not about interest. Repeated pixel requests come from scrolling back to a message, from a client reloading images, from a preview pane redrawing, and from forwarding — an email forwarded to a colleague registers as an extra open on the original recipient's row. A sudden jump in opens per opener with no change in clicks is almost always a client-side artefact, and treating it as engagement is how a broken send gets celebrated.

Decomposing an inflated open rate, and its null point

A sibling article in this series covers why Apple's Mail Privacy Protection broke the metric and why click-through survived it, so the mechanism is not repeated here. What is not covered anywhere is the arithmetic that lets you read a number that is now structurally inflated. Split the delivered list into two populations: a share m behind a proxy that prefetches images regardless of human behaviour, and the remaining 1 − m whose opens are still opens. If the proxy registers an open a fraction q of the time, the reported rate is R = qm + t(1 − m), where t is the true rate among everyone else.

Rearranged, t = (R − qm)/(1 − m). At a reported 45% and a prefetch rate of 95%, that gives 39.44% if a tenth of the list is proxied, 32.50% at a fifth, 23.57% at three tenths, 11.67% at two fifths and 4.09% at 45%. The same reported number is compatible with a healthy programme and a nearly dead one; which it is depends entirely on a quantity that is not in the report.

The formula has a null point, and it is the most useful thing in this article. Set t to zero and solve: m = R/q. At a reported 45% and a 95% prefetch rate, m = 47.37%. Once roughly 47% of your delivered list is behind a prefetching client, the entire reported open rate is explained by machines and is consistent with not one human having opened anything. You do not need to know your actual proxy share to use this; you only need to know whether it is plausibly above the threshold, and for most consumer lists in 2026 it is.

The instrumentation that replaces it: seeds, a holdout, and clicks

A seed panel is a set of addresses you own across the major mailbox providers, included in every send, and checked afterwards for where the message landed. It answers the question the open rate used to answer badly: is this reaching inboxes. Its power is easy to compute. If true inbox placement is p, the chance of seeing at least one seed in a spam folder is 1 − p raised to the number of seeds. With thirty seeds that is 26.03% at 99% placement, 78.54% at 95%, 95.76% at 90% and 99.88% at 80%. With ten seeds the same four cases are 9.56%, 40.13%, 65.13% and 89.26% — a ten-address panel misses a real problem more often than it catches one.

A seed panel is an alarm, not a meter. Three of thirty seeds in spam gives an estimated placement of 90%, but the standard error on that proportion is 5.48 points, so the 95% interval runs roughly eleven points either side. Use it to detect that something changed, then investigate authentication, complaint rate and content — do not report the seed percentage as your inbox placement rate, because at that sample size it cannot distinguish 80% from 100%.

The second instrument is a holdout: a randomly chosen slice of the audience that receives nothing, so the difference in behaviour between them and everyone else is the programme's effect rather than its correlation with being the sort of person who buys. That arithmetic belongs to the companion article on what an email programme actually returns, and it is where the real measurement lives once opens stop meaning anything.

Clicks as the segmentation signal, and the complaint budget

Once opens cannot separate the engaged from the indifferent, clicks have to. A click requires a deliberate action that no privacy proxy performs on a recipient's behalf, so "clicked in the last ninety days" is a defensible definition of an engaged subscriber where "opened in the last ninety days" no longer is. The cost of the switch is that the engaged segment gets much smaller, and that is the point: it is smaller because the old definition was counting machines.

The reason this matters is not tidiness, it is a hard threshold published by a mailbox provider. Gmail's sender guidelines say to keep spam rates reported in Postmaster Tools below 0.10% and to avoid ever reaching 0.30% or higher, and the enhanced requirements apply to anyone sending more than five thousand messages a day to Gmail accounts, together with SPF, DKIM, DMARC and one-click unsubscribe. That 0.10% is a budget, and it is spent almost entirely by people who no longer want to hear from you.

The arithmetic is worth doing once. Take a list of 200,000 in which 28,000 have clicked in the last ninety days and 172,000 have not. If the non-clickers complain at 0.150% and the clickers at 0.020%, the whole-list send produces 263.6 complaints on 200,000 messages — 0.1318%, above Gmail's 0.10% target. Send only to the clickers and you produce 5.6 complaints on 28,000 messages, or 0.0200%: a sixth of the rate, inside the budget, on a seventh of the volume. That is the trade, and it should be made deliberately rather than discovered after a deliverability incident. How fast the engaged segment refills is a separate question, and the leaky-bucket arithmetic of list growth is worked out in its own article in this series.

Points of the 45% contributed by prefetching
One reported open rate of 45%, decomposed: what it implies at each share of prefetching clients (prefetch rate 95%)
Share of the delivered list behind a prefetching clientPoints of the 45% contributed by prefetchingImplied true open rate among everyone elseWhat the 45% is worth as a signal
10%9.5039.44%Still mostly human; usable with care
20%19.0032.50%Two fifths of the metric is machinery
30%28.5023.57%Most of the reported rate is not behaviour
40%38.0011.67%Trend readings are now noise
45%42.754.09%Almost nothing left to measure
47.37% — the null point45.000.00%Consistent with no human opening anything

Worked with our own calculator

Email open rate calculator

Given

Opens
350
Delivered emails
1,000

Result

Open rate
35%

These figures are produced by the calculator below, not typed in by hand — they are recomputed whenever the tool changes.

Run it on your own figures

Frequently asked questions

Should I calculate open rate on sent or on delivered?
On delivered, always, because a message that bounced could not have been opened. Delivered is sent minus bounces, so the size of the correction is exactly your bounce rate: on 100,000 sent with 1,200 hard and 2,300 soft bounces, 96,500 were delivered and 28,950 unique opens are 30.00% rather than 28.95%. That is a 3.50% relative understatement at a 3.50% bounce rate, and it scales with the bounce rate. Whichever you choose, use the same one every period — a denominator that silently switches between reports is worse than either choice.
What exactly is the difference between a hard and a soft bounce?
It is a protocol distinction, not a marketing one. RFC 3463 classes a 5.X.X status as a permanent failure — "not likely to be resolved by resending the message in the current form" — and a 4.X.X status as a persistent transient failure, where "sending in the future may be successful". So a hard bounce is a nonexistent mailbox or domain and must be suppressed immediately; a soft bounce is a full mailbox, a busy server, greylisting or rate limiting, and should be retried with a cap on consecutive failures. Continuing to send to hard-bounced addresses is one of the clearest negative signals a mailbox provider receives about a sender.
My open rate is 45%. Is that good?
It is unanswerable without knowing what share of your delivered list sits behind a client that prefetches images. Solve the decomposition: the true rate among everyone else is the reported rate minus the prefetch contribution, divided by the rest of the list. At a 95% prefetch rate a reported 45% means 32.50% if a fifth of the list is proxied, 23.57% at three tenths and 11.67% at two fifths. And there is a null point at m = 45%/95% = 47.37%: above that share, the whole 45% is machine-generated and is consistent with nobody having opened anything. If you cannot estimate that share, the honest answer is that the number is uninterpretable and you should be reading clicks.
How many seed addresses does a useful placement test need?
More than most people use. The probability of catching at least one seed in a spam folder is one minus the placement rate raised to the number of seeds. With ten seeds you catch a 95% placement problem only 40.13% of the time; with thirty you catch it 78.54% of the time, and a 90% problem 95.76% of the time. But treat the panel as an alarm rather than a meter: three of thirty seeds in spam estimates placement at 90% with a standard error of 5.48 points, so the 95% interval spans about eleven points either way. Enough to say something changed; nowhere near enough to publish as a placement rate.
Is it safe to stop mailing people who never click?
It is usually safer than the alternative, and the complaint arithmetic shows why. On a 200,000-address list where 172,000 have not clicked in ninety days and complain at 0.150%, against 28,000 clickers complaining at 0.020%, a full-list send generates 263.6 complaints — 0.1318%, above Gmail's stated target of keeping spam rates below 0.10%. Mailing only the clickers generates 5.6 complaints, a rate of 0.0200%. You lose the revenue those non-clickers would have produced, which is real but usually small; you protect the placement of every message to everyone else, which is not small. Run a win-back sequence before suppressing, and measure the trade rather than assuming it.

Articles you may find interesting

All guides
ExplainerWhat an Email Programme Actually ReturnsThe famous email ROI multiples are self-reported survey figures with the labour left out of the denominator and revenue that would have arrived anyway left in the numerator. Build the honest version instead: incremental revenue against full cost, measured with a holdout — and the arithmetic of how big that holdout has to be.ExplainerEmail Open Rate Is Broken. Measure Click-to-Open InsteadApple Mail Privacy Protection pre-fetches tracking pixels, so a share of your opens were never opened by a person. Open rate now moves with your audience's mail client. Here is what survives, worked on a single send.ExplainerThe Lead-to-Customer Rate, and Why It Is Not One NumberThe overall rate is the product of the stage rates, which makes a percentage gain anywhere worth the same percentage overall — and a ten-point gain worth wildly different amounts depending on where you put it. Plus the lag that makes a growing business look worse than it is.ExplainerBounce Rate Is Not What Most People Think It IsA bounce was never a measure of dissatisfaction — it was a session that sent one hit. Google Analytics 4 replaced the definition entirely, and the new one is a configurable timer. Here is the same thousand sessions read five ways.ExplainerCost Per Click, and What You Are Actually Bidding AgainstYour bid decides whether you are eligible; the advertiser below you decides what you pay. Doubling a bid can move the price not at all, quality can halve it for the same position, and the average CPC in your report is a click-weighted mixture that describes no query. The auction arithmetic, worked.ExplainerImpressions, Reach and Frequency Are Three Numbers, and You Need All ThreeImpressions divided by reach is frequency — one identity that decides what a campaign actually is. The same impression budget split five ways, what a frequency cap really costs you, and why the three-exposure rule is a 1970s heuristic rather than a law.

Related tools

Sources

Spotted a mistake in this article?