Shape
What happened during each period
Chart · Ads
eCPM is effective cost per mille: ad revenue per 1,000 ad impressions. RevenueDot divides ad revenue in US dollars by the number of ad displayed events and multiplies by 1,000. If a period has no displayed events, eCPM is blank rather than zero or infinite.
Formula
eCPM = ad revenue ÷ impressions × 1,000
Shape
What happened during each period
API name
ad_rpm
Measures
eCPM (USD)
Filter and segment by
App, Country, Platform, App version
Definition
The numerator is ad revenue: the sum of rc_ads_ad_revenue events, converted to US dollars at each event's date. The denominator is impressions: the count of rc_ads_ad_displayed events. RevenueDot divides the two totals for the period and multiplies by 1,000. The table also shows Ad Revenue and Impressions, which are not plotted.
eCPM needs both event types. Your SDK ad tracking sends them to RevenueDot's /v1/events endpoint, from an ad network adapter or by manual capture. A network that sends revenue events but no displayed events gives a blank eCPM here, because there are no impressions to divide by.
A week or a month is the ratio of that period's totals, not the average of daily eCPMs, so busy days weigh more. Sandbox events are excluded. Filter or segment by app, country, platform and app version.
Find it in the dashboard under Analytics > Charts, or call GET /v2/projects/{project_id}/charts/ad_rpm. That is the API name of the eCPM chart. The response has the same shape as RevenueCat's Charts API.
Worked example
Illustrative numbers for one day.
| Item | Value |
|---|---|
| Ad revenue | $12.50 |
| Impressions | 5,000 |
eCPM = 12.50 ÷ 5,000 × 1,000 = $2.50.
Why it matters
eCPM is the price you get for your ad space. When ad revenue changes, eCPM tells you whether the price moved or only the volume did. That separates a demand or network change from a change in how many ads your app shows.
Use it to compare countries, platforms and app versions, and to judge a change of network, ad format or placement. Read it with Fill Rate: a high eCPM does not help when most requests get no ad.
API
Same path and response shape as RevenueCat's Charts API, so existing scripts keep working.
curl "https://api.revenuedot.app/v2/projects/$PROJECT_ID/charts/ad_rpm?resolution=day" \
-H "Authorization: Bearer $SECRET_KEY" # sk_... with charts_metrics:charts:read Reference: Charts guide · REST API v2
FAQ
Divide ad revenue by the number of ad impressions and multiply by 1,000. RevenueDot uses ad revenue events converted to US dollars and ad displayed events as impressions.
People use the two names loosely. In RevenueDot the chart is eCPM, revenue per 1,000 impressions, and its API name is ad_rpm.
The period has no ad displayed events, so there is nothing to divide by. Check that your SDK sends displayed events as well as revenue events.
No. Events from sandbox and TestFlight builds are stored as sandbox and left out of the chart.
It depends on the ad format, country, platform and network, so RevenueDot does not publish a benchmark. Segment your own eCPM by country and compare it over time.
Get started
Connect your app to RevenueDot Cloud, free up to $10,000 a month in tracked revenue, and all 43 charts fill from your store history after import.
Already have an account? Sign in · Prefer your own servers? Self-host free