Chart · Ads

Ad fill rate: how to calculate it for your app

Ad fill rate is the share of ad requests that returned an ad. RevenueDot divides ads loaded by ads loaded plus ads that failed to load, using the events the SDK sends. A fill rate of 80% means 8 of every 10 requests got an ad. If there are no requests in a period, the rate is blank.

Formula

Fill rate = ads loaded ÷ (ads loaded + ads that failed to load) × 100

Shape

What happened during each period

API name

ad_fill_rate

Measures

Fill Rate (Percent)

Filter and segment by

App, Country, Platform, App version

The Fill Rate chart in the RevenueDot dashboard, with demo data, its chart rail, plot and table
Captured from the RevenueDot dashboard with demo data.

Definition

How RevenueDot calculates Fill Rate

RevenueDot counts two event types: rc_ads_ad_loaded for ads that loaded and rc_ads_ad_failed_to_load for ads that did not. Ad requests are the sum of the two, and fill rate is loaded divided by requests, shown as a percent with one decimal. The table also lists Ad Requests and Filled Requests, which are not plotted.

Only requests that report one of the two events count. A request that never reports back is not in the number. The chart does not split failures by error reason, even when the failed event carries an error code from the ad network. A week or a month is the ratio of that period's totals.

Your SDK ad tracking sends the events to RevenueDot's /v1/events endpoint, from an ad network adapter or by manual capture. 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_fill_rate. The response has the same shape as RevenueCat's Charts API.

Worked example

Fill Rate, step by step

Illustrative numbers for one day.

ItemValue
Ads loaded9,000
Ads that failed to load1,000
Ad requests (loaded + failed)10,000

Fill rate = 9,000 ÷ 10,000 = 90.0%.

Why it matters

What Fill Rate tells you

A request without an ad earns nothing. A low fill rate means you have users and screens ready to show ads and no ads to put in them, which is revenue you can win back by adding a network, changing a mediation order or fixing a timeout.

Segment by country and app version to find where fill is low. A drop in one country points to demand. A drop in one app version points to a bug in your ad integration. Read it with eCPM, because fill and price together set ad revenue.

How to read it

  • Fill rate counts loads, not displays. A loaded ad can still never be shown, so compare it with Impressions.
  • Fill can differ a lot by country. Segment before you change a network.
  • A sudden drop on one app version is more likely a bug than a demand change.
  • The rate does not show why a request failed. Look at your ad network's own error report for the reason.
  • A high fill rate with a low eCPM means price, not supply, limits revenue.

API

Get Fill Rate from the Charts API

Same path and response shape as RevenueCat's Charts API, so existing scripts keep working.

Requestshell
curl "https://api.revenuedot.app/v2/projects/$PROJECT_ID/charts/ad_fill_rate?resolution=day" \
  -H "Authorization: Bearer $SECRET_KEY"   # sk_... with charts_metrics:charts:read

Reference: Charts guide · REST API v2

FAQ

Fill Rate: questions people ask

How do you calculate ad fill rate?

Divide the ads that loaded by all ad requests, which is ads loaded plus ads that failed to load, and show it as a percent. RevenueDot uses ad loaded and ad failed-to-load events from your SDK.

What is a good ad fill rate?

It depends on country, ad format and network, so RevenueDot does not publish a benchmark. Watch your own trend by country and app version, and look into sudden drops.

What is the difference between fill rate and impressions?

Fill rate is about requests: how many returned an ad. Impressions count ads that were displayed. A loaded ad may never be shown.

Why is my fill rate blank?

The period has no loaded or failed events, so there are no requests to divide. Check that your SDK sends both event types.

Does fill rate affect ad revenue?

Yes. A request that returns no ad cannot earn revenue, so low fill limits revenue even when eCPM is high.

Get started

See your Fill Rate in minutes.

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