RPM, eCPM, and Fill Rate: The Metrics That Actually Matter
Publishers fixate on CPM, but it misleads in isolation. How RPM, eCPM, fill rate, and revenue per session work together, with worked math.
Christian Dobish
Director, Publisher Success · · 10 min read
On this page
Every publisher dashboard shows you CPM. It is the headline number, the one you check first, the one you brag about or worry about. And it is misleading you.
CPM — cost per mille, the price per 1,000 impressions — tells you what advertisers paid for the impressions they bought. It does not tell you how much money you actually made. The gap between those two things is where many gaming publishers lose revenue without realizing it.
Here is how the metrics that actually matter (RPM, eCPM, fill rate, and revenue per session) work together, what they reveal that CPM hides, and how to use them to make better decisions about your ad setup.
CPM: What It Is and What It Is Not
CPM = (Ad Revenue / Paid Impressions) × 1,000
If you earned $500 from 200,000 paid impressions, your CPM is $2.50.
CPM measures the value of impressions that were sold. It tells you the clearing price in the auction. It is useful for evaluating demand quality and comparing SSP performance.
What CPM does not tell you:
- How many impressions went unsold (fill rate)
- How many ad opportunities you created per page (ad density)
- How many pages each user viewed (session depth)
- How much total revenue you generated per user
A $5 CPM with a 40% fill rate generates less money than a $3 CPM with a 90% fill rate. CPM alone cannot show you that.
eCPM and Revenue per 1,000 Requests: The Honest Version
eCPM = (Ad Revenue / Impressions) × 1,000
eCPM is the effective revenue per 1,000 impressions served. It blends every impression you served (open auction, direct deals, backfill) into one number, so you can compare formats, partners and placements on a common footing. It is still an impression-based number: it says nothing about the requests that came back empty.
For that, use a separate metric:
Revenue per 1,000 requests = (Ad Revenue / Total Ad Requests) × 1,000
Note the denominator: total ad requests, not impressions. It includes unfilled requests in the calculation, giving you the effective revenue you earned across all of your inventory, sold and unsold.
Example:
You send 500,000 ad requests. 350,000 are filled (70% fill rate). You earn $1,050 in revenue.
- CPM / eCPM = ($1,050 / 350,000) × 1,000 = $3.00
- Revenue per 1,000 requests = ($1,050 / 500,000) × 1,000 = $2.10
Your eCPM says $3.00. Your revenue per 1,000 requests says $2.10. The difference, $0.90 per thousand, is the cost of your unfilled inventory. The 30% of ad requests that returned nothing is dragging your effective revenue down by 30%.
Why revenue per 1,000 requests matters more than CPM: When you evaluate an SSP, a demand partner, or a header bidding configuration, it shows you the complete picture. A partner with a $4 CPM and 50% fill rate ($2.00 per 1,000 requests) is worth less than a partner with a $2.50 CPM and 95% fill rate ($2.38 per 1,000 requests).
Fill Rate: The Multiplier You Are Ignoring
Fill Rate = (Filled Impressions / Total Ad Requests) × 100
Fill rate tells you what percentage of your ad opportunities actually generate revenue. A fill rate below 100% means you have unsold inventory — ad slots that loaded, sent requests to the ad server, but received no bid or no creative in return.
Why fill rate matters for gaming publishers:
Gaming sites typically have high session depth (users play multiple games, browse categories, read guides) but CPMs below finance and health, though above general content. Gaming players are also loyal, return more often and tend to have higher lifetime value, so your main revenue lever is volume, the number of impressions per session. Every unfilled impression in that volume is a direct loss.
Illustrative fill rates (they vary widely with geo mix and floor prices):
| Setup | Typical Fill Rate |
|---|---|
| Single SSP | 60–75% |
| Google Ad Manager + one SSP | 70–85% |
| Header bidding with 3–5 demand partners | 85–95% |
| Header bidding + Google AdX backfill | 92–98% |
If your fill rate is below 85%, you have a demand problem. Either you need more demand partners competing for your inventory, or your floor prices are too high for portions of your traffic.
The compound effect:
Raising fill rate from 80% to 88% (a 10% relative increase) on a site earning $10,000/month adds about $1,000/month, as long as CPM holds, without any change to traffic or ad layout. Watch that last condition: if you get the extra fill by dropping floors, some of it comes at lower prices. Even so, unfilled requests are often the cheapest revenue to recover.
RPM: What Actually Hits Your Bank Account
Page RPM = (Total Revenue / Total Pageviews) × 1,000
Page RPM (revenue per 1,000 pageviews) is the metric closest to what you actually earn. It incorporates:
- CPM (how much advertisers pay per impression)
- Fill rate (how many impressions actually sold)
- Ad density (how many ad units per page)
- Ad refresh (how many impressions each unit serves per pageview)
Example: two scenarios with the same CPM and very different RPM:
Site A:
- CPM: $3.00
- Fill rate: 70%
- Ad units per page: 2
- No refresh (1 impression per unit per pageview)
- Page RPM = $3.00 × 0.70 × 2 × 1 = $4.20
Site B:
- CPM: $3.00
- Fill rate: 95%
- Ad units per page: 3
- 30-second viewable refresh, with players spending about a minute on each page (2 impressions per unit per pageview: the first load plus one refresh)
- Page RPM = $3.00 × 0.95 × 3 × 2 = $17.10
Same CPM. Very different RPM. Site B earns about 4× more per pageview ($17.10 vs $4.20) because of higher fill rate, one additional ad unit, and refresh.
This is why CPM comparisons between publishers are meaningless without context. A publisher reporting an $8 CPM with 2 units, no refresh, and 70% fill earns a page RPM of $11.20 ($8 × 0.70 × 2), less than Site B's $17.10 at a $3 CPM.
How to increase RPM:
- Increase fill rate: add demand partners, adjust floors, enable backfill
- Optimize ad density: test adding one more unit per page (but measure UX impact)
- Enable refresh: critical for gaming sites with long pageview durations
- Improve viewability: higher viewability = higher bids = higher CPM component of RPM
Revenue Per Session: The Metric That Matters Most
RPM is good. Revenue per session is better, especially for gaming sites.
Revenue Per Session = Total Revenue / Total Sessions (multiply by 1,000 for session RPM, revenue per 1,000 sessions)
Here is why this metric outranks RPM for gaming publishers:
RPM measures revenue per pageview. But some of your changes affect how many pageviews happen per session. If you add aggressive interstitials that increase page RPM by 20% but reduce session depth from 5 pages to 3 pages, your revenue per session drops:
- Before: page RPM $10 → $0.010 per pageview × 5 pages = $0.050 per session
- After: page RPM $12 → $0.012 per pageview × 3 pages = $0.036 per session
RPM went up. Revenue went down. Revenue per session catches this because it accounts for user behavior changes.
Example with full math:
Both scenarios assume one game per pageview and that every unit stays in view, so each unit serves its first impression plus one per completed refresh interval.
Scenario 1: Conservative ad setup
- 3 ad units per page
- 45-second refresh
- No interstitials
- Average session: 6 pageviews, 8 minutes (80 seconds per pageview)
- CPM: $3.50, Fill rate: 92%
- Impressions per pageview: 3 units × 2 (load at 0 s, refresh at 45 s) = 6
- Revenue per pageview: (6 × $3.50 × 0.92) / 1,000 = $0.0193 (page RPM $19.32)
- Revenue per session: $0.0193 × 6 = $0.116
Scenario 2: Aggressive ad setup
- 4 ad units per page
- 30-second refresh
- Interstitial every 3 game plays (1/3 per pageview)
- Average session: 3 pageviews, 4 minutes (80 seconds per pageview; users leave sooner)
- Blended CPM: $2.80 (lower due to clutter discount), Fill rate: 88%
- Impressions per pageview: 4 units × 3 (load at 0 s, refreshes at 30 s and 60 s) + 0.33 interstitials = 12.33
- Revenue per pageview: (12.33 × $2.80 × 0.88) / 1,000 = $0.0304 (page RPM $30.39)
- Revenue per session: $0.0304 × 3 = $0.091
The aggressive setup has a much higher page RPM ($30.39 vs $19.32) but lower revenue per session ($0.091 vs $0.116). The conservative setup wins because users stay longer.
This is one of the most common mistakes in ad optimization: maximizing per-impression or per-pageview metrics while destroying session length.
How These Metrics Connect
Think of your revenue as a chain of multipliers:
Revenue = Sessions × Pages/Session × Ad Slots/Page × Impressions/Slot/Pageview × Fill Rate × CPM / 1,000
Each metric controls one link in the chain:
| Metric | What It Controls |
|---|---|
| Traffic / SEO | Sessions |
| UX / site quality | Pages per session |
| Ad layout | Ad slots per page |
| Refresh config | Impressions per slot per pageview |
| Demand partners / floors | Fill rate |
| Inventory quality / viewability | CPM |
Optimizing one link while breaking another does not help. Revenue per session is the metric that captures the entire chain.
A Dashboard That Works
Stop looking at CPM as your primary metric. Build a dashboard (or ask your ad management partner to build one) that shows:
- Revenue per session: daily, with 7-day and 30-day trailing averages
- RPM: daily, segmented by page type (game page, category page, content page)
- Revenue per 1,000 requests: by demand partner, to evaluate which partners are actually performing
- Fill rate: by ad unit and by geo, to identify where you are losing money
- Session depth: pages per session, trending over time, to catch UX degradation early
When you make an ad configuration change, watch all five metrics. If revenue per session increases while fill rate, RPM, and session depth remain stable or improve, you have a winner. If any metric degrades meaningfully, investigate before scaling.
Common Traps
The High-CPM, Low-Fill Partner
A demand partner claims $6 CPM. Sounds great. But they only fill 15% of requests because their campaigns are narrowly targeted. Their revenue per 1,000 requests is $0.90. Meanwhile they add latency to every auction they join, and a $3 CPM partner with 80% fill ($2.40 per 1,000 requests) delivers far more of your revenue.
Evaluate partners on revenue per 1,000 requests, not CPM.
The CPM Comparison Fallacy
Publisher forums and case studies report CPMs without context. "$8 CPM on my gaming site" means nothing without knowing fill rate, ad density, refresh, traffic geo, and device mix. A US-only, desktop-only site with premium direct deals will report higher CPMs than a global mobile-heavy site running fully programmatic, but the global site might earn more total revenue.
Compare revenue per session across similar sites. Not CPM.
Ignoring Session Depth in Optimization
Any change that increases per-impression or per-pageview revenue at the cost of session depth requires careful analysis. On gaming sites, session depth is your biggest asset. Protect it.
Start Measuring What Matters
If you are optimizing based on CPM alone, you are flying blind. Revenue per session is the metric that tells you whether your ad setup is actually working. For the configuration changes that move these numbers, read why header bidding configuration matters more than partners, or see publisher results from gaming sites we work with.
Ready to see what managed monetization can do for your gaming site?
Get a Revenue EstimateRelated articles
A/B Testing Your Ad Setup: What to Test and How to Measure
What to A/B test in your gaming site's ad setup, how to run valid experiments, and the mistakes that invalidate your results.
Yen WangSVP, Tech & Operations
10 min read
Seasonal Ad Revenue Patterns: Monthly Planning Guide
Ad revenue follows predictable seasonal patterns. A month-by-month guide for gaming publishers to plan content, reserves, and site changes around the cycle.
Christian DobishDirector, Publisher Success
10 min read
RPM Benchmarks for Gaming Sites: What to Expect in 2027
Typical page RPM ranges for gaming sites by geography, genre, and device, plus the levers that most often explain the gap.
Christian DobishDirector, Publisher Success
7 min read