Browse the help center

CPM, eCPM and RPM explained

What CPM, eCPM and RPM each measure, how Epom calculates them, and which report column each maps to.

Concept network manager publisher advertiser

Three acronyms cover almost every revenue conversation in ad tech: CPM, eCPM and RPM. They sound interchangeable but they answer different questions, and Epom’s reports already contain all three — sometimes under names you might not recognise. This page defines each one, gives Epom’s exact formula, and points at the report column that carries it, so you can stop guessing which number to read.

The one thing they share: “per mille”

The M in all three is the Roman numeral for a thousand (“per mille”), not “million”. Every metric here is money per 1000 impressions. Ad revenue is quoted per thousand because a single impression is worth a fraction of a cent — per-thousand keeps the numbers readable.

CPM — the price you agree

CPM (cost per mille) is a price you set, not a measurement. It is one of Epom’s pricing types: the campaign pays (or the publisher earns) a fixed amount for every 1000 impressions served. You type it into the Pricing card; the ad server never calculates it.

CPM is a contract term. Its siblings — CPC (per click) and CPA (per conversion) — are prices too, just billed on a different event. None of them are report metrics.

eCPM — the price everything effectively earned

eCPM (effective CPM) is a measurement. It takes whatever actually happened — CPM demand, CPC demand that got clicked, CPA demand that converted, a mix of all three — and expresses the resulting money as a single per-1000-impressions figure. That makes a CPC campaign and a CPM campaign directly comparable: normalise both to eCPM and you can rank them.

Epom’s formula is the same on every report, with one difference in the denominator:

eCPM = money × 1000 ÷ impressions            (General report)
eCPM = money × 1000 ÷ eligible impressions   (Advanced report)

On General the denominator is the Impressions column; on Advanced it is eligible impressions — deliveries minus matched passbacks minus rejected (invalid) impressions. Where nothing was rejected the two agree.

Because “money” has two sides in Epom, there is more than one eCPM column — this is the single biggest source of confusion, so it gets its own section below.

Epom also uses eCPM inside ad selection: in eCPM optimization mode the campaign with the highest known or estimated eCPM for the request’s country is preferred within its priority tier (how ad selection works).

RPM — the same idea, publisher wording

RPM (revenue per mille) is what publishers call eCPM when they mean their own revenue per 1000 impressions. It is not a separate calculation and Epom has no column literally named “RPM”.

Note: In Epom, a publisher’s RPM is the eCPM Net column (or the eCPM column in the Publisher analytics family). If a partner asks for your “RPM”, read them your Net eCPM.

The three eCPM columns, decoded

Epom money has a publisher side and an advertiser side, so the report offers up to three eCPM columns. They differ only in which money goes into the numerator:

ColumnNumeratorFormulaWhose view
eCPM NetNet (publisher payout)Net × 1000 ÷ impressionsPublisher — this is “RPM”
eCPM GrossGross (advertiser charge)Gross × 1000 ÷ impressionsAdvertiser — cost per 1000
eCPM ProfitProfit (Gross − Net)eCPM Gross − eCPM NetNetwork margin per 1000

(“Impressions” here is the denominator of the report type — eligible impressions on Advanced.)

The three-family split (Basic / Publisher / Advertiser) that renders the money columns is described in the metrics reference: the Publisher family labels Net as Revenue and its eCPM is eCPM Net; the Advertiser family labels Gross as Charges and its eCPM is eCPM Gross.

Note: on the Advanced report “eligible impressions” — deliveries minus matched passbacks minus rejected (invalid) impressions — is the denominator, not raw deliveries, so eCPM is computed against the impressions that actually count. That is also why eCPM there can move without any pricing change if your invalid-traffic rate shifts, and why the same traffic can show a different eCPM on General. See Invalid traffic and risk scoring and how Epom computes your numbers.

The blended-eCPM gotcha

The summary (roll-up) row at the bottom of a report is not the average of the per-row eCPMs. Epom recomputes every ratio — eCPM included — from the summed numerators and denominators of the whole period:

blended eCPM = (sum of Net across all rows) × 1000 ÷ (sum of impressions across all rows)
                (eligible impressions on the Advanced report)

This is a true impression-weighted blend, so a high-eCPM row that served ten impressions barely moves the total, while a low-eCPM row that served ten million dominates it.

Corner case: because the summary is a re-blend and not a column average, it will not equal the arithmetic mean of the eCPM cells above it — often not even close. A row list averaging $2.00 can roll up to a $0.40 blended eCPM if the cheap rows carry the volume. Read the roll-up as “what the whole period effectively earned per 1000”, never as “the typical row”.

Why eCPM and CPM disagree

If you set a $1.00 CPM but the eCPM column reads $0.60, nothing is broken. Common causes:

  • CPC / CPA demand in the mix. Those campaigns earn per click or per conversion, so their contribution to eCPM depends on CTR / conversion rate, not on a CPM you can point at.
  • First vs second price on DSP demand. An auction win is paid at the cleared price, not the winning bid — see first vs second price.
  • Rejected impressions (Advanced report). They are excluded from eligible impressions, which shrinks the denominator and raises eCPM for the same money.
  • Blended rows. A group-by row mixes several campaigns/countries at different prices; its eCPM is their impression-weighted blend, not any one CPM.
  • Fill. eCPM is per impression, so unfilled requests don’t dilute it — but if you were expecting revenue ÷ requests, that is a different (lower) number. Requests and Fill Rate live in their own columns.

Quick reference

You want to know…Read this columnIt is
The price on a campaign/placementPricing card, not a reportCPM / CPC / CPA you set
A publisher’s revenue per 1000 impressions (“RPM”)eCPM Net (Publisher: eCPM)measured
An advertiser’s cost per 1000 impressionseCPM Gross (Advertiser: eCPM)measured
The network’s margin per 1000 impressionseCPM Profitmeasured
The whole period’s effective ratethe summary row eCPMre-blended from sums

Related pages

Please disable Adblock
Are you using adblock? Disable it and reload the page to proceed to the destination page.

A registration has already been submitted from this page. Please try again in 10 minutes.