- Quick-commerce ads report high ROAS partly because they intercept shoppers who were already in the app, already searching, often already yours. The platform attributes the full basket to the last ad touch it sold you.
- The two biggest inflators: branded-keyword claims (people searching your name) and category baseline (people who'd have bought someone's protein bar anyway — the ad only decided whose).
- The steering number is margin-adjusted break-even ROAS: 1 ÷ contribution margin after the platform's take. On a 30% all-in take rate, that's routinely 4–6× — which is why a "profitable 4×" campaign can be quietly underwater.
We've written before about why Meta's ROAS flatters itself. Quick-commerce ad platforms deserve the same scrutiny with one structural difference: on Meta, at least the conversion happens on your site, where you can see it. On Blinkit, Zepto or Instamart, the platform owns the search box, the shelf, the checkout and the attribution — you see exactly what the seller dashboard chooses to show. Retail media is the only channel where the referee, the stadium and the opposing team share a P&L.
Where the inflation comes from
| Inflator | Mechanism | How big |
|---|---|---|
| Branded search claims | A shopper types your brand name, taps the sponsored tile that outranks your own organic listing — full credit to ads | Large — brand terms convert at 2–3× generic rates, which is precisely why they inflate |
| Category baseline | High-intent shopper was buying a snack regardless; the ad decided brand, not purchase | Large and invisible — the platform can't and won't separate switching from creation |
| Attribution windows | Ad click today, organic reorder next week — windows sweep later purchases into the campaign | Medium |
| Halo double-count | Ad-driven sales velocity lifts organic rank; the lift shows up everywhere except the ad report, making ads look additive to a baseline they quietly raised | Cuts both ways — the one inflator that's partly real |
None of this requires bad faith. Every retail-media platform in the world — Amazon included — reports attributed ROAS this way. The mistake is on the brand side: reading an attributed number as an incremental one, then scaling budget against it.
The number to steer by: margin-adjusted break-even
Worked example, continuing the ₹450 SKU from our unit-economics guide: contribution before ads is ~38% of MRP. Break-even ROAS = 1 ÷ 0.38 ≈ 2.6× — and that's break-even, not profit. Require a 15% margin from the channel and the target moves past 4×. Now apply an honesty haircut to the reported number: if even a third of attributed GMV was baseline-or-branded (a conservative reading given the table above), a reported 6× is an incremental 4× — right at the line. The campaign your dashboard calls a triumph is, at the contribution line, a coin flip.
| Contribution margin (after take, before ads) | Break-even ROAS | Target ROAS at 15% required profit |
|---|---|---|
| 20% (low-ticket, high take) | 5.0× | impossible territory — fix the price point first |
| 30% | 3.3× | ≈ 6.7× |
| 40% (high-ticket, negotiated rates) | 2.5× | 4.0× |
Four honesty checks you can run without the platform's help
- Spend-share vs GMV-share. If ads are 12% of your GMV but "ad-attributed" GMV is 55% of the total, the attribution is sweeping baseline demand into the campaign column. Track the ratio monthly; watch the trend more than the level.
- The branded pause. Pause brand-term ads for two weeks. Watch total (organic + paid) sales for those queries. High absorption means those conversions were yours already — the ad was a toll on your own traffic. Same test we recommend for Google brand search; it transfers intact.
- The total-line test. Change one platform's ad budget materially and watch total platform GMV, not attributed GMV, over 3–4 weeks against baseline. Crude, confounded, and still more honest than the dashboard — attributed numbers can't shrink the truth the way totals can't hide it.
- City splits as natural experiments. Q-commerce is dark-store-level — hold ads back in matched cities and compare total sales trajectories. The geo holdout you'd run for Meta works here with better geographic resolution.
The operating loop
Monthly: pull settlement-report GMV (not dashboard GMV), compute contribution after take and COGS, divide by ad spend — that's your real blended return, immune to attribution. Weekly: rank campaigns by the platform's numbers (relative order survives inflation), but scale or kill against the margin-adjusted break-even. Quarterly: one pause test or geo split on your biggest spend line. That cadence costs a few hours and catches the failure mode that kills q-commerce P&Ls — scaling an attributed number that was never incremental.