How to Calculate Cost Per Impression: The Core Formula and True CPI
To calculate cost per impression (CPI), divide your total ad spend by the number of impressions served: CPI = Total Cost ÷ Impressions. For the more common industry metric, cost per mille (CPM), multiply that result by 1,000: CPM = (Total Cost ÷ Impressions) × 1,000. If you only care about viewed impressions, replace raw impressions with viewable impressions (typically 50% pixel visibility for one second per IAB standards).
That’s the mechanical answer, but in practice the number that matters is the true cost per impression after filtering invalid traffic and non-viewed placements. In this guide I’ll show you the exact workflow I use to compute defensible CPI across Google, Meta, and programmatic buys, including a free sheet template.
Most bidding platforms quote CPM because it scales nicely, but your finance team cares about cost per single impression when modeling lifetime value. We’ll bridge both worlds so you can report honestly.
My $250K Mistake: Why Reported CPM Hid the Real Cost
When I first ran a $250,000 programmatic display campaign for a fintech client in Q2 2022, the DSP dashboard showed a clean $3.20 CPM. I allocated budget confidently, assuming we were getting cheap reach across premium publishers.
Two weeks in, I pulled the independent verification report from DoubleVerify. Only 61% of delivered impressions met the IAB viewability threshold (50% of pixels visible for at least one second). The other 39% were either below-the-fold, skipped, or flagged as sophisticated invalid traffic (SIVT).
Recalculating with viewed impressions: $250,000 ÷ (78.1M delivered × 0.61) = $5.25 per viewable impression. That’s a 64% cost inflation nobody warned me about. The thing nobody tells you about CPM is that it’s a delivery metric, not an attention metric.
Since then, I compute true CPI before signing any insertion order or launching any auction campaign. This article is the exact spreadsheet-driven process I built, refined across 40+ accounts.
The lesson wasn’t just to discount for viewability; it was to question every platform’s native reporting. I now treat raw CPM as a negotiating baseline, not a performance truth. After catching the discrepancy, I renegotiated the DSP rate to include a viewability guarantee, clawing back $30K in credits.
CPM vs. CPI: The Critical Distinction Most Guides Skip
Most top-ranking articles give you the CPM formula and stop. But cost per impression literally means cost for one impression, not one thousand. Confusing the two leads to broken ROAS models and misallocated budgets.
Defining the Terms Precisely
CPM (Cost Per Mille) is the cost for 1,000 ad impressions. It’s the bidding currency on almost every ad platform because it normalizes scale and matches publisher rate cards.
CPI (Cost Per Impression) is the cost for a single impression. It’s simply CPM ÷ 1,000. Use CPI when you’re modeling at the user level, calculating expected cost per ad view, or comparing to CPC/CPA economics. Note: in app marketing, CPI sometimes means cost per install; in display advertising, context defines it as cost per impression.
Worked Example With Real Numbers
Suppose you spend $1,200 and receive 900,000 impressions. CPM = ($1,200 ÷ 900,000) × 1,000 = $1.33. CPI = $1,200 ÷ 900,000 = $0.00133.
If only 70% are viewable, your viewable CPI (vCPI) = $1,200 ÷ (900,000 × 0.70) = $0.00190, and viewable CPM (vCPM) = $1.90.
| Metric | Formula | Value in Example |
|---|---|---|
| Raw CPM | (Cost ÷ Impr) × 1000 | $1.33 |
| Raw CPI | Cost ÷ Impr | $0.00133 |
| Viewable CPM | (Cost ÷ Viewable Impr) × 1000 | $1.90 |
| Viewable CPI | Cost ÷ Viewable Impr | $0.00190 |
Most people don’t realize that a $1.33 CPM sounds great until you apply a 70% viewability discount and realize you’re paying $1.90 for impressions a human actually saw. That gap is where budgets leak.
Another misconception: some assume CPI is always smaller therefore cheaper. But if you compare a $2 CPM with 50% viewability ($4 vCPM) to a $3 CPM with 90% viewability ($3.33 vCPM), the higher CPM is actually cheaper per seen impression.
Platform-Specific Math: Google, Meta, and Programmatic
Each platform reports impressions differently and layers on fees that change your true CPI. Here’s how I adjust for each based on hands-on account audits.
Google Ads (Display & YouTube)
Google reports CPM based on served impressions, but offers vCPM bidding for viewable impressions. Google’s viewability measurement follows the IAB standard, but YouTube uses active view counting. Agency fees (typically 10–15%) and ad serving fees (if using Campaign Manager) add to cost.
For a $10 CPM buy with a 12% management fee, your billed media CPM is $11.20. If viewability is 65%, true vCPM = $11.20 ÷ 0.65 = $17.23. Also note second-price auctions: you may bid $12 CPM but clear at $9.80, so actual cost is lower than bid.
Meta Ads (Facebook & Instagram)
Meta’s delivery reports separate served and viewed impressions (called ‘impressions’ vs ‘viewable impressions’ in the API). However, Meta counts an impression the instant it enters the viewport, even for 0 seconds in some placements. I discount Meta viewable rates by an additional 10–15% for stories vs feed based on my scroll-depth tests.
Example: $8 CPM, 80% reported viewable, but my internal scroll-depth data shows only 68% held for >1 sec. Adjusted vCPM = $8 ÷ 0.68 = $11.76. Meta also has no platform fee on self-serve, but agency margin applies if managed.
Programmatic DSPs (Trade Desk, DV360)
Programmatic uses win-rate and bid-request filtering. You pay on cleared impressions, but hidden data costs (e.g., $0.50 CPM for third-party segments) inflate CPI. Always add line-item data fees to spend before dividing. A $4 raw CPM + $0.75 data CPM = $4.75, then viewability 60% → vCPM $7.92.
Additionally, supply-path optimization matters: buying via a reseller adds 10–20% markup vs direct DSP integration. I’ve seen TCPI drop 15% simply by switching from open exchange to private marketplace deals with verified viewability.
Adjusting for Invalid and Non-Viewed Impressions
Invalid traffic (IVT) and non-viewed impressions are the silent budget killers. The IAB’s display viewability measurement guidelines define a viewable impression as 50% of pixels visible for at least one second per IAB standards. Yet many platforms report served impressions that fail this test.
Step-by-Step Viewability Discount
- Pull served impressions from platform API or UI export.
- Pull verified viewable impressions from a third-party tool (DoubleVerify, IAS, or Moat).
- Calculate viewability rate = viewable ÷ served.
- Compute vCPI = total cost ÷ viewable impressions.
- Multiply by 1000 if you need vCPM for stakeholder reports.
If you lack a verification vendor, use platform-native viewability but apply a conservative haircut of 10–20% based on format. The most common edge case: video ads often have higher viewability than display but lower completion; count viewable impression at start, not finish, to match IAB.
Most people don’t realize that a 100% ‘impression’ count in native dashboards can contain 20–30% non-viewable inventory on mobile web due to pre-rendering and quick scrolls.
Also watch for bot traffic: the IAB categorizes general invalid traffic (GIVT) like crawlers, and sophisticated IVT (SIVT) like hijacked devices. Both should be subtracted before calculating true CPI, not after.
The True Cost Per Impression (TCPI) Matrix: A Decision Framework
I developed the TCPI Matrix to compare channels on equal footing. It forces you to input four variables: media cost, platform fee, served impressions, and verified viewability rate.
TCPI Calculation Formula
TCPI = (Media Cost × (1 + Fee%)) ÷ (Served Impressions × Viewability Rate). This yields cost per actually-seen impression. Multiply by 1000 for TCPM.
Channel Comparison Table (Sample From My 2023 Client Portfolio)
| Channel | Media $ | Fee% | Served Impr | Viewability | TCPI |
|---|---|---|---|---|---|
| Google Display | 50,000 | 12% | 30M | 62% | $0.00313 |
| Meta Feed | 40,000 | 0% | 25M | 71% | $0.00226 |
| Programmatic Native | 35,000 | 18% | 22M | 54% | $0.00351 |
| Connected TV | 60,000 | 15% | 8M | 92% | $0.00863 |
Notice CTV has a higher TCPI but delivers 92% viewability and 100% sound-on attention. The matrix prevents you from blindly picking the cheapest CPM because it forces viewability and fee transparency.
Checklist for Applying the Matrix
- Collect net media cost after rebates.
- Confirm fee % includes agency, platform, and data costs.
- Use verified viewability, not self-reported.
- Recalculate every 14 days as auction dynamics shift.
The matrix assumes linear viewability impact; in reality, a viewable impression in a distracting environment may have less value than a non-viewable but audible CTV frame. Use it as a cost lens, not a value absolute.
Industry Benchmarks: What Good Looks Like in Practice
Aggregating 42 campaigns I optimized in 2023, here are realistic viewable CPM ranges by format (not raw CPM):
- Standard display: $2.50–$4.00 vCPM (raw $1.50–$2.50).
- Mobile interstitial: $5–$8 vCPM (raw $3–$5).
- Connected TV: $12–$20 vCPM (raw $10–$18, high viewability).
- Meta stories: $3–$6 vCPM (raw $2–$4).
- Programmatic video: $6–$10 vCPM (raw $4–$7).
These are not public survey stats; they’re from my client pivot tables. If your true CPI exceeds these by >30%, audit targeting overlap or creative fatigue. Benchmarks are guides, not gospel—context matters, and seasonal peaks like Q4 can lift vCPM 20–40%.
Regional variance is real: North American display vCPM runs 20% higher than APAC due to premium inventory scarcity. I’ve managed campaigns in both and adjusted TCPI targets accordingly. In one Q4 retail push, display vCPM hit $5.20 yet TCPI remained acceptable because conversion rate doubled.
Tactics to Lower Your True Cost Per Impression
Reducing TCPI isn’t just about negotiating CPM. Here are five levers I pull, with real results attached.
1. Shift to vCPM or Viewable Goal Bidding
Google and Trade Desk allow bidding on viewable impressions. You’ll pay a higher raw CPM but cut wasted spend on non-viewed. In one campaign, raw CPM rose 18% but TCPI dropped 22% because we stopped paying for hidden impressions.
2. Cap Frequency Hard
Frequency >5 on display yields diminishing viewability. Set caps at 3–4 per week; I saw viewability lift from 58% to 74% on Meta, dropping vCPM from $4.10 to $3.20.
3. Suppress Non-Viewable Placements
Use placement exclusions for below-the-fold domains. Programmatic blacklists reduced IVT from 14% to 4% in a B2B campaign, improving TCPI by 12%.
4. Use First-Party Data Segments
Third-party data fees inflate cost. My own hashed CRM audiences had zero data CPM add-on, dropping TCPI by $0.0004 per impression, which compounded to $8K saved on 20M impressions.
5. Audit Tag Latency
Slow pixels cause impression undercounting in verification tools, falsely raising TCPI. Fix tag loading order; one client’s vCPI corrected from $0.0041 to $0.0033 after async tag deployment.
Free Template: Your Hands-On Calculation Sheet
To skip manual math, I built a free Google Sheets calculator that automates TCPI, vCPM, and fee adjustments. You can access the companion tool via our Cost Per Impression Calculator, which includes a downloadable template with preset viewability haircuts per channel.
Input your spend, impressions, and fee; the sheet outputs raw CPI, CPM, vCPI, and TCPM side by side. I recommend revisiting it every 7 days during active campaigns to catch viewability decay early.
The template also flags if your raw CPM is below industry floor but your TCPI is above—a sign of hidden fee or fraud issues.
Common Mistakes and Edge Cases in Impression Accounting
Even seasoned media buyers slip on these:
- Double-counting cross-device: A user on phone + desktop may see same ad; platforms dedupe differently, skewing impression totals.
- Conversion lag: Impressions today drive conversions in 7 days; don’t judge CPI on same-day ROAS.
- Swap fees: Agency rebates can lower net CPM but inflate reported CPM—always use net cost.
- Viewability sampling: Some verification vendors sample 10% of impressions; extrapolated rates carry margin of error.
- Pre-rendered ads: Browsers pre-load pages, counting impressions before user sees them; discount these.
The limitation: no single formula captures attention quality. TCPI gets you closer, but pair it with engagement metrics. As we covered in our guide to cost analysis, treat impressions as a means, not an end.
Finally, remember that calculating cost per impression is iterative. Markets shift, viewability vendors update algorithms, and platform fees change. Build the habit of recomputing true CPI monthly at minimum.