CASE.05 · Case study

A pricing platform that finds the revenue-optimal price in every market, not one global compromise.

Drops’ price hadn’t moved in years, while the market around it had. I ran a five-variant elasticity test to find a better one, and the data said something bigger: there was no single best price, because the optimum was different in every market. So I built segmented pricing, which places each user in the right tier by geography and device. It lifted revenue on launch and kept lifting it across a year of iterations.

ARPU
+11.5%
year one, YoY
purchase conversion
+16.4%
flagship, YoY
at its own optimum
Every market
geo + device tiers
held above baseline
12 months
then iterated higher
FIG.A · ONE PRICE, MANY OPTIMA the revenue-optimal price differs by market
Revenue-optimal price by market Four elasticity curves, one per market band, plotting relative revenue per user against relative price. Each curve rises to a peak and falls again, but the peaks sit at different prices — lower for lower-income markets, higher for higher-income markets. A single dashed vertical line marks the one global price everyone used to pay; it sits near one market's optimum and off-peak on every other curve, the revenue left on the table that segmented pricing recovers. PRICE ELASTICITY BY MARKET REVENUE = f(PRICE) · PER MARKET REV PRICE → ONE GLOBAL PRICE Lower-income Emerging Established Higher-income EACH MARKET · ITS OWN OPTIMUM ONE PRICE MISSES MOST PEAKS
Problem · The brief

The price hadn’t been questioned in years, while the market moved on.

When I took over monetisation, I went looking for the biggest lever rather than the busiest one. Optimising paywalls and offers would refine a strategy that already worked. But a wrong price would be a foundational problem sitting under everything else, worth ruling out before I polished anything on top of it.

So I looked, and found that our price had not been tested or changed in several years. The market had grown and shifted in that time; we hadn’t. And we charged one global price, which quietly assumed that a learner in Jakarta and a learner in San Francisco should pay the same, and that whatever number we picked years ago was still right for both. Neither assumption had been examined. That made price the highest-leverage question I could ask, and the least examined.

Approach · How I ran it

Test the price properly, then follow the data past the question I set out to answer.

I designed a five-variant A/B test around our base price: two higher and three lower. The aim was to measure real willingness to pay and find the price that maximised revenue per install, not just conversion, since a cheaper price that converts better can still earn less. We launched it across the user base and let behaviour, not opinion, settle the number.

Digging into the results, the winning price kept changing depending on where I sliced. The best-performing point in the US wasn’t the best in the UK, which wasn’t the best in France. That reframed the whole project: the question wasn’t “what is our price?” but “why do we have one price at all?” I took the analysis to data science to pressure-test it against a more rigorous model, and the pattern held. The opportunity wasn’t a better global number. It was a platform that set the right one per market.

  • STEP.01 Question the untested assumption Prioritise price over paywall polish. A price left unchanged for years, in a market that had moved on, was the highest-leverage thing nobody was looking at.
  • STEP.02 Run a real elasticity test Five price variants around the base, two up and three down, judged on revenue per install rather than conversion alone, so a cheap-but-worse price couldn’t win on volume.
  • STEP.03 Read the data by segment The winning price differed by region: the US optimum wasn’t the UK’s or France’s. Data science pressure-tested the finding and it held. One global price was leaving money on the table almost everywhere.
  • STEP.04 Build the segmented-pricing platform Place each user in a tier by geography and device, cached for a month to blunt VPN arbitrage. Lower-income markets get reachable pricing; higher-income markets pay their own optimum, with no need to average the two.
  • STEP.05 Iterate on live signal Ship as an A/B test, win, then keep tuning: per-country tiers, device and OS modifiers, default-tier changes. Each iteration was a further, measurable lift.
Outcome · The numbers

It shipped, it won, and it kept winning for a year.

revenue per install
+30% / +20%
Android / iOS, YoY
purchase conversion
+16.4%
flagship, YoY
7-day LTV
+10.4%
flagship, YoY
a further lift
Each iteration
per-country · device · V2

The first rollout moved the core metric straight away. In a like-for-like non-sale period, revenue per install rose about 30% year on year on Android and 20% on iOS, with purchase conversion and lifetime value climbing alongside it. During sales, historically our most price-sensitive moments, the segmented prices beat the equivalent sale the year before on both platforms. The change earned its place, so we kept it on.

Then it held. Across the full year the flagship app stayed above the prior-year baseline, including through periods that contained Black Friday and Christmas, a high bar to clear. And because it was a platform rather than a one-off price change, every following iteration compounded on it: per-country tuning added several points of ARPU in the markets we refined, device and OS modifiers found more, and a second major version beat a pre-period stacked with the year’s biggest sales. Segmented pricing turned a one-off price change into something we could keep improving.

Reflection · What I'd do differently

The edges were the arbitrage gap and the markets I still couldn’t reach low enough.

Caching a user’s tier for a month blunted the obvious VPN workaround, but it didn’t close it: someone arriving through a VPN for the first time could still land on cheaper pricing before the cache set. A small leak against a large gain, but if I picked this up again I’d tighten first-touch detection rather than lean on the cache alone.

The bigger limit was reach. Four primary tiers, across a fixed range, still weren’t granular enough for the lowest-income markets: some users sat in the tier that fit closest rather than the one that fit best. The next version of this is more tiers at the bottom of the range, so affordability extends further down without softening pricing where the market can bear it.

Learning · How this changed me

The biggest wins come from questioning the assumption nobody’s revisiting, and following the data past the question you asked.

The instinct in a new domain is to optimise what’s already moving. The more valuable move was to find the load-bearing assumption underneath it, a price nobody had touched in years, and test whether it was still true. Price elasticity deserves to be a first-class lever, revisited on a cadence, not set once and inherited. Much of the impact here came from asking a question the org had stopped asking.

The other lesson is to stay open to a finding bigger than your test. I set out to find a better price, and the data offered me a better model instead: not one price, but the right price everywhere. The temptation is to answer the question you designed and move on. The discipline is to notice when the data points at something larger, follow it, and have the rigour, via data science, to be sure it’s real before you build.

Spec sheet

Subject
Segmented pricing · Drops, a Kahoot! Company
Role
Senior PM · Owned monetisation
Filed
2022 → 2023