Email Module Performance: Why Revenue Per Mille Is the Metric That Wins CFO Meetings
Block-level RPM gives email module performance the same impression-level revenue metric paid media has used for decades, and it’s the number that finally makes email competitive in a CFO budget conversation.
Every email marketer has heard the stat: email returns $36 for every $1 spent. Litmus has published variations of that number for years, and according to their State of Email ROI research, most companies see returns somewhere between 10:1 and 36:1. That sounds great in a blog post. It does not sound great in a budget meeting, because a CFO hearing “$36 per dollar” will immediately ask: which dollar? Which email? Which part of the email? And you won’t have answers. That gap between channel-level ROI and email module performance data is where budget conversations go to die.
Paid search teams report revenue per click. Paid social teams report ROAS per impression. Both of those metrics are specific enough to compare, rank, and optimize individual units of content. Email teams, by contrast, have been stuck reporting revenue per send (a volume metric) or open and click rates (engagement metrics that tell you nothing about money). According to Litmus, 21% of marketing leaders still don’t measure email ROI at all. The rest mostly measure it at the campaign level, which is like knowing your store is profitable without knowing which department drives the margin.
There’s a better way to measure email module performance, and it’s a metric paid media teams have used for decades: RPM, or revenue per mille. Applied to individual content blocks inside an email rather than the email as a whole, RPM finally gives email a unit-level efficiency number that belongs in the same conversation as paid media KPIs.
The CFO Problem: Why “$36 Per $1 Spent” Wins No Budget Meetings
The “$36 ROI” stat has a structural problem. It divides total email-attributed revenue by ESP platform cost. That’s useful for justifying the existence of an email channel, but useless for justifying incremental investment in personalization, creative testing, or new technology. A CFO comparing email to paid search doesn’t want a channel average. They want to know: if I give you another $50,000, which specific content investment will return what specific amount of revenue?
Paid search can answer that question at the keyword level. Paid social can answer it at the ad set level. Email, historically, cannot answer it at all. The best most teams can do is point to a campaign that performed well and hope the CFO doesn’t ask too many follow-up questions. That measurement gap is why email often gets treated as a cost center even when it outperforms paid channels. Ecommerce email traffic typically converts at 4-5%, compared to paid social at roughly 0.7-1.5%. The performance is there. The measurement to prove it, at a granular enough level, usually is not.
What Revenue Per Mille Actually Means in Email
RPM stands for “revenue per mille” (mille being Latin for thousand). In display advertising, it measures publisher revenue per 1,000 page impressions. Google AdSense built its entire reporting interface around it. In email, RPM has historically meant revenue per 1,000 emails sent, a campaign-level metric. But there’s a third application that changes the measurement game entirely: content block RPM, which measures the revenue attributed to 1,000 impressions of a specific content module inside the email.
These three definitions sound similar but answer completely different questions. Campaign-level email RPM tells you how efficiently your sends drive revenue overall. Content block RPM tells you which specific piece of content (a Smart Banner, a product grid, a promotional kicker) is earning its real estate. That distinction matters, because two emails with identical campaign RPM can have wildly different block-level performance. One might have a single high-performing module carrying the whole email. The other might have consistent moderate performance across every block. You can’t optimize what you can’t see, and campaign-level RPM hides the details that matter.
Block-Level Email Module Performance: How the Math Works
The formula for content block RPM is straightforward: (attributed revenue / block impressions) × 1,000. “Block impressions” means the number of times a subscriber opened an email containing that block and the block rendered. “Attributed revenue” means purchase revenue credited to that block through a click-based attribution window (typically 7 days).
Here’s a concrete example. Say your abandoned cart Smart Banner was seen by 50,000 subscribers last month, and subscribers who clicked it generated $15,000 in purchases within 7 days. That block’s RPM is ($15,000 / 50,000) × 1,000 = $300. You now know that every 1,000 impressions of that specific content block generates $300 in attributed revenue. That is an impression-level efficiency metric. It sounds and behaves exactly like the eCPM numbers your paid media team reports on. For a full walkthrough of the measurement mechanics, see our guide to email block analytics and how to measure revenue from every module in your email.
Why RPM and CTC Diverge, and What That Tells You
RPM measures revenue efficiency. Click-to-conversion (CTC) measures audience quality, the percentage of people who click a block and then purchase. You need both, and they don’t always agree.
Consider two abandoned cart variants from Zembula’s Q4 2025 Benchmark Report (based on 6.2 billion email opens across 100+ use cases, normalized to $100 AOV). A “Cart + Coupon + Countdown” variant had a CTC of 27.9%, the highest click-to-conversion rate in the category. But a “Cart + Loyalty + Price Drop” variant had an RPM of $469.65, the highest revenue per thousand impressions. The coupon variant converted a higher percentage of clickers. The loyalty variant drove more total revenue per impression because it attracted higher-value buyers or larger basket sizes.
If you optimized only for CTC, you’d lean into the coupon variant and leave revenue on the table. If you optimized only for RPM, you might ignore a variant that converts better for certain audience segments. The two metrics together give you a complete picture of email module performance: who’s buying, and how much.
The 15x Performance Gap Inside One Use Case Category
Here’s where the data gets uncomfortable. Within the single category of abandoned cart content, block-level RPM ranged from $31.42 (Cart + BNPL) to $469.65 (Cart + Loyalty + Price Drop) in Zembula’s Q4 2025 benchmarks. That’s a 15x spread, inside one use case. Same intent signal (abandoned cart). Same email position. Different data combinations, different creative, wildly different revenue outcomes.
This gap is invisible at the campaign level. An email team reporting on “abandoned cart email performance” would blend all those variants into a single average and miss the fact that one combination earns 15 times more per impression than another. For broadcast email programs especially, where 95% of send volume goes out with little content-level personalization, this kind of variant-level visibility is the difference between guessing and knowing.
Four weeks of consistent RPM data at the block level is enough to make optimization decisions. You don’t need to wait for a formal holdout test to tell you what the numbers already show.
From Email-Level ROI to Module-Level Dials
When you can measure email module performance at the block level, optimization changes shape. Instead of asking “should we A/B test the subject line?” you’re asking questions like: which content block has the lowest RPM relative to the real estate it occupies? Which variant combination drives the highest revenue per impression for loyalty-tier subscribers? Should this Smart Kicker run an abandoned cart message or a price drop alert for this audience segment?
These are the same kinds of questions paid search teams ask about keywords and bid strategies. The difference is email teams haven’t had the data to ask them until now. Combining Smart Banners and Smart Blocks across positions in the email gives you multiple measured modules per send, each with its own RPM and CTC. Every module is a dial you can turn.
This shift from campaign-level reporting to module-level measurement is what defines Level 2 in the email maturity model. It’s where programs transition from measuring activity (sends, opens, clicks) to measuring content economics (RPM, CTC, attributed revenue per block).
The Business Case: RPM Puts Email on Equal Footing With Paid Media
The reason block-level RPM matters for budget conversations is simple: it gives email a metric that finance teams already understand. Your paid media team reports eCPM (effective cost per mille) and ROAS at the ad level. Block-level RPM is structurally identical, just applied to email content. When you can say “this abandoned cart module generates $300 per 1,000 impressions” in the same meeting where paid social reports a $15 eCPM, the comparison speaks for itself.
ROAS and RPM answer different questions, and both matter. ROAS measures return on platform spend (what you get back for every dollar you spend on your ESP or personalization technology). RPM measures return on content impressions (what each piece of content earns per exposure). Together they tell a complete return-on-spend story where block-level RPM is the atomic unit that adds up to program-level ROAS.
Email has always been the highest-converting digital channel. It just hasn’t had the measurement precision to prove it at the level of specificity CFOs require. Block-level RPM closes that gap. It turns “email works” into “this content module generates this much revenue per thousand impressions, and here’s how we plan to optimize it next quarter.”
Key Takeaways
- Campaign-level email ROI is too blunt for budget conversations. CFOs comparing channels need impression-level efficiency data, not channel averages.
- Block-level RPM measures revenue per 1,000 impressions of a specific content module, giving email the same unit-level metric paid media has used for years.
- RPM and CTC answer different questions. CTC tells you about audience quality (who converts after clicking). RPM tells you about revenue efficiency (how much money each impression generates). You need both.
- The performance gap within a single use case can be 15x. Abandoned cart block RPM ranged from $31 to $469 in Q4 2025 benchmarks. Campaign-level reporting hides that entirely.
- Four weeks of RPM data at the block level is enough to optimize. You don’t need a holdout test to act on consistent, directional performance signals.
- Block-level RPM is the atomic unit that builds up to program-level ROAS. It’s how you go from “email drives revenue” to “here’s exactly which content drives how much, and here’s our plan to improve it.”
Grow your business and total sales



