Geo Holdouts: Measuring True Quick Commerce Ad Lift
Platform-reported ROAS on Blinkit and Zepto counts sales you would have won anyway. A geo holdout tells you what the ad actually added, and it usually is not what the dashboard claims.
- Platform ROAS credits ads with sales that would have happened organically.
- Incrementality is the only honest measure of what an ad added.
- Quick commerce is geo-granular, which makes holdout testing practical.
- Compare test versus control cities to compute incremental ROAS, not reported ROAS.
The number on the dashboard is not the truth
Open your Blinkit or Zepto ads console and it will tell you a confident ROAS. Spend this, earn that. The trouble is what sits underneath. When a shopper already searching for your brand taps your promoted listing and buys, the platform records that as an ad-driven sale. But that customer was going to buy anyway. The ad did not create the sale. It just took credit for it.
This is cannibalisation, and on quick commerce it is heavy because so much demand is high-intent and brand-led. The result is a reported ROAS that flatters the ad. Scale spend against that inflated number and you pour budget into sales you already owned. The fix is not a better attribution model. It is a controlled experiment.
Incrementality is the only honest metric
Incrementality asks one question. How many sales happened because of the ad that would not have happened without it. Everything else is noise. A promoted listing that shows to people already buying you has low incrementality even at a gorgeous reported ROAS. A placement that reaches genuinely new or undecided shoppers has high incrementality even if the console number looks modest.
You cannot read incrementality off a dashboard because the dashboard cannot see the counterfactual, the world where the ad did not run. To see that world you have to build it, by withholding the ad somewhere comparable and watching what happens.
Why quick commerce is built for holdouts
Here is the lucky part. Quick commerce is intensely geographic. Demand is organised by dark store, which maps to pincodes and zones inside a city. That granularity makes a geo holdout practical in a way it rarely is on a national TV buy.
You split comparable geographies into two groups. In the test group you run the ad. In the control group you deliberately hold it back. Because the two groups share similar demand, seasonality and assortment, the only material difference between them is the ad. The gap in sales, once you adjust for their baseline difference, is the lift the ad produced. That is incrementality, measured, not modelled.
Running a clean test
The design decides whether you can trust the answer. A few disciplines make the difference.
- Pick comparable geographies. Match test and control on baseline sales, city tier and category mix. Do not pit a mature metro zone against a fresh tier-two one.
- Establish a pre-period baseline. Measure both groups before the test so you know their natural ratio and can adjust for it.
- Hold the control genuinely dark. No promoted listings, no banners for the SKU under test in those zones for the full window.
- Run long enough to read a signal. A few weeks usually, so daily noise averages out and you capture at least one full weekly demand cycle.
- Change one thing. If you also launch a price cut or a new pack in the test zones, you can no longer isolate the ad.
Keep everything else equal and the experiment does the reasoning for you.
Compute incremental ROAS, then decide
At the end, do not go back to the reported number. Take total sales in the test group, subtract what the control group implies you would have sold anyway, and you have incremental sales. Divide the ad spend by that, and you have incremental ROAS, the honest cost of the sales the ad actually created.
The comparison is often sobering. A campaign showing a reported ROAS that looked healthy can reveal a far thinner incremental ROAS once organic cannibalisation is stripped out. That is not a failure of the test. It is the test doing its job, telling you which rupees are working and which are buying sales you already had.
Turn it into a habit
One holdout is a data point. A rhythm of them is an advantage. Rotate tests across your main SKUs and placement types so that over a couple of quarters you build a real map of where quick commerce ads add value and where they merely decorate existing demand. Feed that map back into budget allocation. Push spend toward the placements and geographies that showed genuine lift, and pull it from the ones that only harvested organic.
A word on the practical limits, because holdouts are not free. Withholding ads in your control zones costs you whatever incremental sales you would have earned there during the test. That is a real, if modest, price. Keep control groups small relative to your footprint, run tests on rotation rather than everywhere at once, and concentrate them on the SKUs and placements where the spend is large enough to justify the learning. You are buying a decision, so size the test to the budget it will govern.
Most brands never do this. They optimise to the platform’s own scorecard, which is structurally biased to make the ads look good. The operator who runs holdouts is measuring a different, truer thing. Over time that is the difference between a media budget that compounds and one that quietly subsidises sales you were always going to make.