Field log · Monetization
My AdMob revenue looked broken — it was just volume
Opening the AdMob dashboard to a few cents after a month of work feels like something is wired wrong. I was convinced my integration was broken. It wasn't — and the four numbers that proved it are the same ones that tell you whether to touch your code at all.
Here's the scene: a handful of published apps, a full AdMob setup, and a home screen showing this month "US$0.11," last month "US$1.69." My first instinct was the same as everyone's — the ads must not be working. Wrong ad unit ID, a broken SDK call, a mediation misconfiguration, something. I almost started ripping the integration apart. Then I actually read the dashboard, and it told me, plainly, that everything was working. The problem was somewhere else entirely.
The four numbers that settle "broken vs. low traffic"
AdMob's activity card has four metrics that, read together, answer the only question that matters first: is this a technical problem or a volume problem? Here's how to read them, using my own numbers for a recent 7-day window.
| Metric | Mine | What it proves |
|---|---|---|
| Requests | 30 | The SDK is asking for ads. If this is 0, your integration or initialization is broken. |
| Match rate | 100% | Of the ads requested, this share got filled. High match rate means your ad units and config are fine. |
| Impressions | 10 | Ads actually shown on screen. This is what you get paid for. |
| eCPM | (low) | Earnings per 1,000 impressions. Depends on format, geography, and demand. |
The tell: if requests are happening and match rate is high, your ads are not broken. A broken integration shows up as zero requests or a match rate on the floor. Mine were 30 requests at 100% match — the pipeline was flawless. The revenue was tiny for one boring reason: only 10 impressions.
Why 10 impressions can only ever be pennies
Ad revenue is almost insultingly simple math:
revenue ≈ impressions × eCPM ÷ 1000
Plug in reality. If your eCPM is, say, $2, then ten impressions is 10 × 2 ÷ 1000 = $0.02. There is no configuration on earth that turns ten impressions into real money. The number that was killing me wasn't a broken switch — it was the impression count, and impressions are a function of how many people use your app and how often they see an ad, not of your setup.
The mental model that fixed my thinking: the ad stack is a cash register. Mine was working perfectly — it rang up every sale correctly. But a perfect register in an empty shop still totals almost nothing. I'd been trying to fix the register when the actual issue was that almost nobody had walked in.
When it IS worth touching the integration
So config wasn't my problem — but it's fair to ask when it is. There are a few genuine levers, and they only matter once you have enough impressions for them to move anything:
- Ad format. This is the biggest one. Banners earn a fraction of what interstitials and rewarded ads do. If you're running banner-only, the same users can produce several times the revenue once you add a well-placed interstitial (between levels, on natural stopping points) or a rewarded ad (opt-in for a perk). Format is a real, code-side improvement.
- Impression opportunities. Are you actually giving users moments to see an ad? A utility they open for four seconds barely has a surface for it. Design natural break points where an ad fits without wrecking the experience.
- Per-app zeros. Check whether impressions come from all your apps or just one. If some apps show zero, those might have a real wiring problem worth a look — but you diagnose that per app, not from the account total.
- Fill by geography. eCPM varies wildly by country. You can't fully control who installs, but it explains a lot of the variance and is worth knowing before you blame yourself.
The uncomfortable conclusion
I wanted the answer to be a bug, because a bug is fixable in an afternoon. The real answer was harder: near-zero revenue across a healthy integration is a distribution problem. The lever isn't in the AdMob console at all — it's downloads and active usage. Optimizing store listings, actually getting the apps in front of people, keeping users coming back: that's the work that moves impressions, and impressions are the only thing that moves revenue.
So I did two things. I stopped refreshing the earnings dashboard, because watching pennies doesn't change them. And I made one legitimate code change where it applied — adding higher-value ad formats to the apps that only had banners — so that when the traffic does grow, each user is worth more. Everything else is a traffic problem wearing a revenue problem's clothes.
Before you debug an integration that "isn't earning," check requests and match rate first. If both look healthy, close the code editor — the fix you need is users, not a patch.
This is a personal account of reading my own dashboards, not financial or business advice; ad metrics, eCPM ranges, and AdMob policies vary and change, so verify against your own console and the official documentation.