← The Build Log

90 Days of Country-Level Revenue: What the Data Changed About My Pricing

2 min read revenue pricing aso

I pulled the last 90 days of AdMob revenue grouped by country across all my apps, expecting to confirm what I already believed. The table had other plans.

What I believed

What the table said

[TODO: paste your real numbers here — top 5 countries with revenue share and eCPM. Even rough figures: "US 41%, Nigeria 12%, India 9%...". This is the heart of the post.]

Three things jumped out:

  1. The long tail is not a tail. [TODO: which unexpected countries showed up and why that surprised you]
  2. eCPM and volume disagree constantly. A country that looks dead by revenue share can be your cheapest growth — high eCPM, tiny installs, zero competition for the keyword.
  3. One app's "bad market" was another app's best market. Same country, opposite verdicts. Portfolio thinking beats per-app thinking.

What I changed

// the query that runs under this table
SELECT country, SUM(revenue) rev, SUM(impressions) imp,
       ROUND(1000 * SUM(revenue) / SUM(impressions), 2) ecpm
FROM admob_daily GROUP BY country ORDER BY rev DESC LIMIT 20;

The honest caveat

90 days of my portfolio is not a study. Small apps, noisy weeks, one seasonal spike. But the shape of the data was different enough from my mental model that I stopped trusting the mental model — and that's the whole point of keeping your own telemetry.

You can't price what you've never measured by geography. You can't grow what you only read in aggregate.

The console view this post is built on — revenue by country, 7/30/90-day windows — is the first thing I open on Monday mornings. If you want it for your own two apps, it's free: AppSentry.

Ship protected

One tab for revenue, ASO, fraud & forced updates.

AppSentry is the console behind these notes — everything you see built here, it runs in production. Free for your first two apps.