What is revenue per recipient (RPR)? The flow-health metric beyond open rate
Plain RPR definition, rough formula, vs opens table, drop checklist, Iran SMS cost context, and pairing with holdouts in Leadara.

Reza Ahmadi
SEO and content strategy for organic traffic and brand visibility in search results.
September 14, 2026 · 9 min read
Also available in فارسی

What is revenue per recipient (RPR)?
Revenue per recipient (RPR) is attributed revenue for a flow or campaign divided by unique recipients in the same window. Unlike open rate, RPR asks: “For each person who received the message, how much attributable sales did we create?”
One-line answer: RPR = attributed revenue ÷ unique recipients. For flow health (cart, welcome, win-back) it is usually a sharper diagnostic than open rate — especially when SMS costs money and email opens are no longer trustworthy.
If your team celebrates opens and CTR while incremental orders stay flat, you are probably mixing “message reached inbox” with “message created value.” RPR is how you see whether a flow makes money or only inflates send volume. Keep true lift measurement beside what a marketing holdout group is.
Simple formula and recipient definition
Operationally, lock three things before you calculate:
- Path boundary: which journey or campaign? (e.g. abandoned cart only, not the whole automation stack)
- Recipient definition: unique in-window people who got at least one email or SMS from that path
- Attributed revenue: orders in a fixed window (e.g. 7 days after entry) under a clear attribution rule for that path
| Piece | Practical question | Store example |
|---|---|---|
| Attributed revenue | Which sales do you attach to this path? | Orders within 7 days of cart-journey entry |
| Unique recipients | How many people got at least one touch from this path? | 12,400 in a month |
| RPR | Revenue ÷ recipients | If attributed sales are 280M tomans → about 22,600 tomans per recipient |
| Window | From when to when? | 7 or 14 days; do not move it mid-month |
Important: RPR is not revenue per opener or revenue per click. The denominator must be recipients — or you inflate the metric by gaming opens.
Rough math when attribution is incomplete
Many Iranian teams still lack fancy multi-touch models. A workable v1:
- Pull path entry and
order_completedinside a locked window from events - Sum those orders (or approximate AOV × order count)
- Divide by unique recipients
- Compute flows and campaigns separately
Imperfect — but for scale decisions usually better than opens, if you also keep a holdout or baseline.
Why RPR beats open rate for flow health
| Metric | What it says | What it hides |
|---|---|---|
| Open rate | How many (roughly) saw the subject | Privacy prefetch and “seen but no buy” |
| CTR | How many clicked | Curiosity clicks without orders; broken links |
| Absolute treatment conversion | How many bought | People who would have bought with no message |
| RPR | Value per recipient | Without holdout, incremental lift is still incomplete — but flow health direction is clearer |
| STOP / opt-out | Relationship cost | Looking only at RPR while the list burns |
Simple rule: if opens rise and RPR falls, the subject got prettier but the offer or audience weakened. If both fall, do not scale — diagnose first.
For SMS flow vs blast, an RPR mindset usually favors flows because the signal sits closer to purchase; see SMS flow vs SMS campaign.
When RPR drops, what should you check?
A drop is an alarm, not a final diagnosis. Open four layers in order:
1) Audience
- Did the entry segment loosen? (“all actives” instead of “open cart + consent”)
- Did a weak acquisition wave enter welcome? Check cohort quality separately: cohort analysis in marketing
- Are Champions and recent buyers still getting deep discounts?
2) Offer
- Deeper codes but weaker net RPR after discount cost?
- Offer mismatched to stock or season?
- Welcome and cart stacking the same code?
3) Timing
- Waits longer than the cart signal lifetime?
- SMS at poor Iran shopping hours?
- Attribution window changed so periods are no longer comparable?
4) Overlap
- Multiple journeys hitting one person?
- Friday blast on someone who got cart SMS yesterday?
- Broken suppressions and frequency caps?
| Signal | First hypothesis | Action |
|---|---|---|
| RPR↓ and recipient volume↑ | Segment got wide | Narrow entry |
| RPR↓ and STOP↑ | Channel pressure / collisions | Suppress + caps |
| RPR↓ and opens↑ | Offer or landing | Fix offer and conversion path |
| RPR↓ on one acquisition cohort only | Wave quality | Stop scaling the bad channel |
| Treatment RPR ≈ holdout | No real lift | Change message/priority; do not scale |
Iran SMS cost context
In Iran every SMS spends both rials and list trust. Always read RPR next to:
- Send cost per recipient (or per recovered order)
- STOP rate for the path and channel
- Flow + blast overlap in 24–48 hours
Email can feel “cheap”; SMS does not. If SMS-flow RPR cannot clear message cost plus discount liability, scaling volume burns margin. Keep channel consent separate: email opt-in is not SMS permission.
Practical pattern: stabilize RPR and STOP on high-risk paths (discounted cart, win-back) before you raise volume — not the other way around.
Pair RPR with holdout thinking
RPR without a control says “how much did treated recipients buy.” A holdout says “how much of that was incremental.”
Healthy combo:
- Watch treatment RPR weekly (operational health)
- Keep a stable 10–20% holdout on discounted paths
- Scale only when uplift vs holdout is meaningful and RPR is acceptable and STOP is controlled
- If treatment RPR looks high but matches holdout, you are subsidizing natural buyers
Without that pair, teams can scale a pretty-open, pretty-RPR flow that adds zero lift.
Mapping to Leadara: events, segments, journeys
Leadara runs on events, segments, journeys, email, and SMS. You do not need a branded “RPR engine” feature to run the metric:
- Clean events: path entry,
email_sent/sms_sent,order_completedwith amount, channel consent - Recipient segment for the path in a fixed window (unique)
- Journey exit on conversion so you stop messaging after purchase
- Weekly report: in-window order revenue ÷ recipient segment size — separately per flow/campaign
- Stable holdout segment on high-risk paths beside RPR
- Caps and suppressions across journeys and blasts so overlap does not fake the story
Advanced attribution matrices usually live outside automation; keeping the recipient denominator clean and acting on it is segment/journey work.
Worked scenario: home-goods ecommerce
“Aftabkhaneh” runs a cart journey at 15% off, a welcome with the same code, and a Friday SMS to “all opt-ins.” Cart email opens sit at 28% and the team is happy; incremental orders are not growing.
Diagnosis with RPR
| Path | Unique recipients (month) | Attributed revenue | Approx. RPR | Read |
|---|---|---|---|---|
| Cart email+SMS | 8,200 | 180M tomans | ~21,900 tomans | Mid; welcome overlap |
| Welcome | 6,500 | 95M tomans | ~14,600 tomans | Deep code on everyone |
| Friday SMS blast | 22,000 | 70M tomans | ~3,200 tomans | High volume, low value, STOP↑ |
Fix
- Narrow cart entry to “cart≥X + no order + consent”
- Split welcome vs cart codes; remove Champions from deep Friday discounts
- Narrow the blast and suppress 24h flow recipients
- 10% holdout on discounted cart
- Weekly success = path RPR + SMS cost + STOP + uplift vs holdout
Common mistakes
- Celebrating opens while RPR and orders are flat
- Using openers as the denominator and still calling it RPR
- Attaching all site revenue to one path
- Comparing flow vs campaign RPR without the same recipient/window definition
- Scaling SMS after a one-week RPR spike without reading STOP
- Ignoring multi-journey overlap
- Moving the attribution window after a weak result
Checklist for this month
- For one high-risk flow, write the recipient definition + 7-day window
- Compute approximate RPR for that flow and one campaign separately
- Put SMS cost and STOP next to RPR
- Stable 10% holdout on the discounted path
- One suppress rule for flow/blast collisions
- Weekly review: RPR, uplift, STOP — not opens alone
FAQ
What exactly is RPR in marketing automation?
Attributed revenue for a flow or campaign divided by unique recipients in the same window. It is a path-health metric, not a full substitute for lift tests.
How is RPR different from open rate?
Opens say roughly who saw the subject; RPR says how much attributable sales you created per recipient. For flow scale decisions, RPR is usually more useful.
How should we define a recipient?
Usually a unique person with at least one successful email or SMS send from that path in the window. Do not substitute openers or clickers unless you build a separate metric.
Is RPR useless without perfect attribution?
No. A rough entry-event + in-window order version is enough to prioritize paths; refine the model later.
When RPR drops, where do we look first?
Audience, offer, timing, overlap — in that order. Do not change three things at once.
Is RPR more important for SMS than email?
Often yes, because unit cost and STOP risk are higher. Read RPR next to send cost and opt-outs.
How do RPR and holdouts relate?
RPR shows per-recipient treatment health; holdouts show how much is incremental. For scaling discounts you want both.
How does Leadara help with RPR?
Events, recipient segments, email/SMS journeys with exits, and operational holdouts. You sum and divide in the weekly report; data hygiene and action live in automation.
Bottom line and next step
RPR means moving from open vanity to value per recipient: path revenue ÷ unique recipients, separately for flows and campaigns, with a locked window and preferably beside holdout and SMS cost. This month, measure one high-risk flow with a clear recipient definition; if RPR drops, check audience/offer/timing/overlap before you raise send volume.





