Revenue per recipient: how to calculate it and why it beats open rate
One number, calculated the same way every time, that lets you compare a campaign to a flow to a channel. What to include, what to leave out, and the two variants worth reporting alongside it.
Open rate stopped meaning anything when Apple began pre-fetching images for Mail Privacy Protection, and click rate only tells you the email was interesting, not that it worked. What survives is money divided by people.
Revenue per recipient — RPR — is attributed revenue divided by the number of people you sent to. It is boring, it is hard to game, and it is the only figure that lets you compare a Tuesday newsletter to an abandoned cart flow to an SMS.
How to calculate it
Attributed revenue ÷ messages delivered. The two halves both need decisions written down.
- Delivered, not sent. Bounces never had a chance to buy and including them flatters nothing consistently.
- Revenue net of refunds and returns. A campaign that sells twelve dresses and takes eight back did not earn what the dashboard says on the day.
- Goods total, not order total. Shipping is not revenue you earned from the message, and it varies by destination.
- One attribution window, chosen once. Seven days post-click is a reasonable default for email. The number matters far less than never changing it.
Report it in cents. A campaign at €0.34 per recipient and one at €0.11 is a decision; 34 % versus 31 % open rate is not.
Why it beats the alternatives
- It punishes list bloat. Sending to 40,000 instead of 8,000 has to earn its extra 32,000 denominators. Usually it does not.
- It is comparable across channels. An SMS at €0.28 per recipient against a per-message cost of €0.05 is a business case. An SMS "click rate" against an email one is not.
- It resists device and privacy changes. Mail Privacy Protection moved open rates by tens of points and did not move RPR at all.
The two variants worth reporting beside it
Revenue per email sent, over a period. Total attributed revenue divided by total messages across a month. This catches the shop that hits its revenue target by sending eleven campaigns a fortnight — the total goes up, this goes down, and the second number is the one that predicts next quarter.
Profit per recipient, where you can get at margin. A campaign built on a 30 % discount can lead on RPR and lose money. If your product data carries cost, use it; if not, at least flag discounted campaigns so they are not compared with full-price ones.
It still needs a holdout to mean anything
Attributed revenue is not caused revenue. Some of the people who clicked and bought were going to buy anyway, and for flows aimed at people already in a purchase — cart recovery especially — that share is large.
- Hold back 10 % of each flow's audience permanently, and report the difference in revenue per person between held-out and sent.
- For campaigns, hold back once a quarter rather than every send.
- Expect the honest number to be meaningfully lower than the attributed one. That is the point, and a smaller true number you trust is worth more than a large one you do not.
Three ways it gets quietly wrong
- Counting an order twice because a webhook was delivered twice. Idempotency on the ingest side, or every popular campaign looks better than it was.
- Currency. A shop selling in two currencies needs a fixed conversion at order time, stored, not recalculated at report time against today's rate.
- Tax. Two shops charging €100 mean different things by it depending on whether prices include tax. Decide whether you report gross or net, and keep it the same forever.
Sources and further reading (3)
- Apple — Protect Mail activity
- Google — Email sender guidelines
- European Commission — VAT rules and rates
Checked on 23 September 2026. Provider prices, mailbox rules and legal guidance change — verify anything you plan to act on.
One number, calculated the same way every time
Auralata attributes revenue from the orders themselves — refunds and returned parcels removed, shipping excluded, currency and tax read from your shop — so a campaign's number does not change meaning between two stores.