Is geo-lift testing enough on its own?

No. A well-designed geo experiment is one of the strongest practical ways to estimate whether a channel caused sales. But it only covers the spend change, markets, and weeks you actually tested, and it's only as good as the counterfactual it built. It doesn't tell you what every current dollar returns or what the next one will. Repeat tests keep the read current, and a calibrated media mix model (MMM) estimates what lies beyond it.
We run geo-lift tests for a living (our published benchmark alone covers 225 of them), so this isn't a case against geo testing. It's a case against stopping at one.
Most of the damage we see comes after a perfectly good test. A brand pauses Meta in a few states, gets a 2.5x iROAS, and then budgets off that number for a year. Across channels it never tested. At spend levels it never ran.
An experiment earns you the right to make a narrow causal claim. A measurement system tells you how far past that claim you can responsibly take a budget decision.
What does a geo-lift test actually measure?
A geo-lift test changes ad spend in some regions, leaves comparison regions alone, and estimates how far revenue moved against a modeled version of what the test regions would have done anyway. The result is incremental ROAS (iROAS): the estimated incremental revenue divided by the spend you changed, in those markets, over those weeks.
There are two designs. A geo holdout turns something on in the test markets (a new channel, a new campaign) while the rest carry on as usual. An inverse geo holdout switches a live channel off in the test markets. Inverse is more common: 163 of the 225 tests in our benchmark used it.
Either way, the markets come from location selection analysis: picking regions whose sales have risen and fallen together for months. The comparison is usually a synthetic control, a weighted blend of control markets built so its history lines up with the test markets. The gap between what the test markets did and what the blend predicted is the estimated lift.
Matching markets on history isn't randomization, though. The gap supports a causal reading when the design holds up: good pre-period fit, a real spend difference between the groups, limited spillover, and no big shock that hit only one side.
That's a different question from attribution, which hands out credit along observed conversion paths and never estimates a counterfactual at all. Gordon et al. (2019) showed how far that kind of observational estimate can drift: compared with 15 randomized experiments at Facebook, it was off by a factor of three in half the studies. That's the case for counterfactual measurement in general. It isn't proof that any particular geo method, ours included, is valid. The design checks further down are how you earn that.
Why isn't one geo-lift test enough?
Because a result only holds inside the conditions of the test, and a budget decision almost always reaches past them. It's tied to the spend change you made, the markets and channel you picked, and one stretch of creative, pricing, and competition. And it's a range, not a single number.
It measures one spend change
Say an inverse holdout switches off $60K a month of Meta in its test markets and comes back at 2.5x. That 2.5x is the incremental revenue associated with moving from the observed $60K spend level to zero, divided by the $60K difference, in those markets, over those weeks.
Response curves often flatten as spend grows, so a result over one spend range won't necessarily match the marginal return higher up. Scaling on average iROAS is one of the most common ways we see brands overspend on a channel that tested well. More in average vs marginal iROAS.
One more limit worth naming: this whole post uses revenue as the outcome. The same design works on other outcomes when the data support it, and for budget decisions, incremental contribution profit often matters more than incremental revenue. A high-iROAS channel can still lose money once discounts, returns, and fulfillment come out.
The result doesn't automatically travel
A test measures one combination of market, audience, brand, channel, spend level, and time. Moving the result to any other combination takes assumptions the test didn't check. Our benchmark shows how much results move. It's a self-selected set of DTC brands that chose to test on Stella, different brands tested different channels, and some samples are small. Read the chart as proof that results vary, not as a ranking.
The spread inside a single channel is wide too: across all 225 tests, the middle half landed between 1.36x and 3.24x. Inclusion rules, test definitions, the models used, and known selection effects are in the methodology section of the 2025 DTC incrementality benchmarks.
Results age
The test captured your creative, prices, promotions, season, and competitors' spend during those particular weeks. When any of that changes, the real return can move while the number in your deck doesn't. Google's Meridian documentation makes the same point about time windows, regions, and campaign settings.
We don't have a clean rule for how fast a result goes stale. But a Q4 read on a brand that rebuilt its creative in January is a starting guess by spring.
It comes with a range
Every geo-lift result has an interval around it. Across our benchmark, the median reported 95% interval spanned 0.89 iROAS points. Those intervals come from whichever model the platform selected for each test, so treat that as a rough guide, not a precise standard. Whether a given width is precise enough depends on the decision. A range that separates "probably worth keeping" from "probably worth cutting" can still be far too wide to split a budget finely.
How do you know a geo-lift test is credible?
You check the design before launch, during the test, and after it. Most bad geo results trace back to setup: markets that never tracked each other, a window that ran into a promo, budget that drifted into control regions, or a test too small to see the effect you cared about. A credible test can show you the evidence for each one.
Power comes first. The test needs enough spend difference between the groups, relative to how much sales bounce around on their own, to detect an effect big enough to change your decision. That threshold is the minimum detectable effect (MDE). If it's bigger than the effect you care about, the test can't answer your question, however well the markets are chosen.
| Stage | What a credible test can show you |
|---|---|
| Before launch | Outcome, estimator, test window, exclusions, and decision threshold written down before treatment starts Test markets and the spend change fixed in advance MDE estimated for the effect your decision depends on Pre-period fit checked, plus a placebo test (below) Enough spend can actually come out of the test markets Regional promos, launches, and stock issues mapped Likely spillover between markets assessed |
| During the test | Actual spend contrast verified, not just the plan Impressions and reach checked, not just spend Control-market delivery watched for inflation Non-media changes logged Analysis and stopping rule left alone after interim reads |
| After the test | Point estimate reported with its interval Pre-period fit shown Actual spend contrast shown Placebo or sensitivity checks run where they apply Any departure from the plan explained |
The placebo test is worth spelling out. Run the exact estimator you plan to use on a past stretch where nothing was changed. If it "finds" a big lift there, the counterfactual isn't trustworthy enough for the real test.
Two other failures are easy to miss. In an inverse holdout, if you exclude the test regions without cutting the campaign budget, the platform spends the same money in fewer places, control markets get extra ads, and the gap overstates the channel. And Target CPA or Target ROAS campaigns rebalance delivery when regions change, so check impressions as well as spend. The pre-launch checks Stella runs are in what a good incrementality test design looks like.
What should you pair geo-lift testing with?
A media mix model and repeat tests, with attribution kept to the jobs it can actually do. Geo experiments give you causal evidence at a few channel and spend points. An MMM combines that with historical data and modeling assumptions to estimate response curves across the rest of the mix. Multi-touch attribution and post-purchase surveys are fine for daily steering. They don't measure lift.
| Method | The question it answers | What it can't do |
|---|---|---|
| Geo-lift test | Did this channel's spend cause sales during this window? | Cover every channel at once, or tell you what the next dollar returns |
| Media mix model (MMM) | How does each channel's return change as spend changes? | Cleanly separate channels that move together without experiments to anchor it |
| Repeat or always-on testing | Is last quarter's answer still true? | Stand in for a well-designed first test |
| Multi-touch attribution | Which ads and paths are getting credit day to day? | Separate sales the ads caused from sales that would have happened anyway |
| Post-purchase surveys | Where do buyers say they heard about you? | Measure lift, since memory and recency skew the answers |
On its own, an MMM struggles to separate channels that rise and fall together, and for a brand that scales everything in Q4, that's most of them. A geo test is a deliberate break in that pattern, and calibration uses it to narrow the plausible returns for that channel. It doesn't remove uncertainty, and it doesn't make untested channels experimental. A Meta test constrains Meta. YouTube still rests on history and assumptions until you test it. That's how Stella's media mix modeling uses experiments.
Attribution is bookkeeping, and it isn't always wrong in the same direction. Across 46 Meta inverse holdouts (again, brands that chose to test), measured iROAS averaged 2.87 against platform-reported ROAS of 2.37. Branded search usually goes the other way: it posts some of the best ROAS in the account, yet its benchmark median iROAS was 0.70x, on a small sample of nine tests. You only find out which kind of channel you have by testing it.
How do I combine geo-lift tests and MMM in practice?
Start with your biggest line item. Test it, give the result to your MMM as uncertain evidence, and use the model's curves to plan where the next dollar goes. When a budget move is big enough, test the new spend level directly instead of trusting the curve. Then work through the channels one at a time.
- The first test goes where being wrong costs the most. Usually the biggest channel, or the one where the platform's numbers and your gut disagree most.
- The MMM gets the whole interval. In a Bayesian MMM, the experiment informs the prior for that channel's return, and its uncertainty comes with it. A precise experiment constrains the model's estimate much more than a noisy one does.
- Budget moves in steps. The response curve is an estimate, so don't treat it as exact. Shift spend in increments and compare what happens with what the model predicted.
- Then you check the model against what happened. Stella calls this the backtest: once a budget move is live, compare actual revenue each month to what the model predicted. Growing misses mean the model has stopped describing the business. A good fit is a diagnostic, not proof the move caused the result, so validate large moves or new spend ranges with another experiment when the decision warrants it.
- Retests get narrower over time. Rerun a channel after a big change in spend, creative, or offer. Then test inside channels: Max Conversion Value vs Target ROAS on Google, or 7-day click vs 7-day click, 1-day view on Meta retargeting.
That's how we run geo testing at Stella. We check the design before anything turns off and feed the result into a calibrated MMM with its uncertainty attached, then retest the big channels before their numbers go stale. To see it on your own channels, book a demo.
Frequently asked questions
Is geo-lift testing the same as incrementality testing?
Geo-lift testing is one way to run an incrementality test. Platform conversion lift studies are another, and because they randomize users inside a single platform, they can give cleaner identification when they're available. Geo tests split by location instead, so they work on any channel, including ones with no user-level tracking like CTV or podcasts.
How much ad spend does a geo-lift test need?
Enough that the test can detect an effect big enough to change your decision. That depends on how much the spend change moves sales relative to how much sales bounce around on their own, how many regions you have, and how long the test runs. Our starting rule of thumb is $80K per channel per month, based on sales volume. It's a starting point, not a guarantee.
How long should a geo-lift test run?
Long enough to cover at least two full weekends, plus a short window after the test to catch delayed purchases. Set the length before launch from the expected spend contrast, how noisy sales are, purchase lag, and the smallest effect that matters to you. Don't extend a test because an interim read isn't significant yet. In Stella's benchmark of 225 tests (a self-selected set of DTC brands), tests ran 20 to 59 days, with a median of 33.
How often should you rerun a geo-lift test?
There's no fixed calendar. Retest a channel when its spend changes a lot, when the creative or offer changes, before a season that behaves differently, or when your MMM's predictions start missing actual revenue. Treat an old result as a place to start.
Can a geo-lift test measure upper-funnel channels like CTV?
Yes, and often better than attribution can, because it doesn't need a click or a user-level pixel. It estimates lift from aggregate regional outcomes against a constructed counterfactual. Effects that build over many months can outlast any test window, though, and that's where an MMM calibrated with test results picks up the slack.