The weekly letter · Issue 002

Your 4.4× ROAS is 1.2× in the bank.

17 Oct 2026·5 min read·Dwarkesh Savaliya

Ads Manager counts credit. Your bank counts cash. Across the Indian D2C brands we work with, the same ₹4.8 lakh of monthly ad spend reads 4.4× on booked sales and 1.2× once you count what actually stays with you. This week: where the gap goes, and four habits to judge campaigns on cash.

i.

The numbers

Where ₹21.1 lakh of sales really lands

Pooled data from the Indian D2C brands we work with: 40,076 orders, 90 days to 23 Sep 2026. The average brand, one month, ₹4.8 lakh of ads:

₹21.1Lbooked: what the dashboards see (4.4×)
₹10.9Ldelivered, after cancels and RTO (2.3×)
₹5.8Lleft after product, shipping and RTO cost (1.2×)
₹1.0Lleft after the ads, before team and rent

Between booked and delivered: ₹3.7L cancelled before shipping, ₹4.9L sent back as RTO, ₹1.7L still open or lost. Between delivered and what's left: ₹3.8L of product, ₹1.2L of shipping both ways, and payment fees that a GST credit roughly cancels out.

why it matters

Ad spend was ₹22.7 of every ₹100 booked, and Meta's own reporting across the pool said 4.2×. Neither number knows about the order cancelled an hour later, the parcel refused at the door or the cost of the product inside it. The bank does.

ii.

The essay

Attribution is credit, not cash

Ads Manager isn't lying to you. It answers a different question. It asks which ad gets credit for a purchase. Your bank asks how much money came in and stayed. Four gaps sit between those two answers:

1. The window sets the number

Meta gives a sale to your ad if the buyer clicked, engaged with or saw it inside a set window. Change the window and the ROAS changes. The bank doesn't move. A month on one setting against a month on another is two rulers, not two campaigns.

2. A purchase counts the moment it's placed

The pixel fires at checkout. It never hears about the cancel two hours later or the parcel refused at the door four days later. In our pool, ₹17.7 of every ₹100 booked was cancelled and 28 of every 100 shipped parcels came back. Each one still counted as a purchase.

3. Revenue is not what you keep

A delivered ₹1,534 order isn't ₹1,534 to you. Product cost took about 35% of delivered sales in our pool, and every parcel paid ₹87 just to go out. ROAS divides revenue by spend. It should divide what's left.

4. Every platform claims the same sale

A buyer who saw your Meta ad, searched you on Google and then clicked an email can be counted by all three. Add up each dashboard's revenue and it can come to more than your store took. Only the bank counts each rupee once.

Judge an ad by the cash it leaves behind, not the credit it claims.
iii.

Do this week

Four habits for the bank

01

Pick one attribution window and keep it

Choose one setting, write it at the top of your weekly report and never compare ROAS across windows. If the setting changed mid-month, that month's trend is broken. Say so before anyone reads it.

02

Match Meta revenue to delivered revenue, weekly

Every Monday, put last week's purchase value from Ads Manager next to the delivered value from your courier panel or store. Same week, two columns. The gap is what cancels and RTO cost you, and it moves week to week.

03

Judge campaigns on True ROAS

True ROAS is what's left after product, shipping and RTO cost, divided by ad spend. Work it out per campaign from delivered orders. The campaign that looks strongest in Ads Manager can be the one whose orders keep coming back.

04

Know your break-even number

Divide booked revenue by what's left after product, shipping, RTO cost and fees. Below that ROAS, ads lose money however green the column looks. For the average brand in our pool it's about 3.6×.

steal this

Start with habit 02 on Monday. One sheet, two columns, fifteen minutes. After four weeks you'll know your own gap between credit and cash.

iv.

Ad platform news

Meta is testing an AI media buyer

Advertising Week New York 2026: New AI Capabilities to Guide Campaigns and Reach CustomersMeta for Business · 6 Oct 2026 · facebook.com/business/news/advertising-week-new-york-2026

At Advertising Week New York, Meta said it is beginning to test actions inside the AI business assistant in Ads Manager: planning campaigns, making creative, adjusting targeting and changing budgets through chat, with previews and approvals. It says advertisers who follow the assistant's suggestions typically see 5% more conversions at the same cost per conversion. It doesn't say how that was measured.

why it matters

A conversion here is a purchase as Meta counts it: placed, not delivered. An assistant that chases that number will happily buy more orders that never reach your bank. Before you hand it a budget, judge its work on delivered sales, and if you can, send delivered orders back to Meta as their own event.

Also: excluding current customers got easier

In the same post, Meta said Customer Lifecycle Strategy is now available to all advertisers: acquisition campaigns suggest exclusions for your current customers, instead of lists you build by hand. Use it, and keep your RTO and cancelled buyers on the exclusion list as well.

Meta for Business · 6 Oct 2026 · same announcement
v.

One number this week

3.6×to break even, on booked sales

The ROAS the average brand in our pool needs on booked sales before its ads make a rupee. It books ₹21.1 lakh a month; after cancels, RTO, product, shipping and fees, ₹5.8 lakh is left. ₹21.1L ÷ ₹5.8L is about 3.6×. At the pool's 4.4×, the ads leave about ₹1 lakh a month, before team, rent and tools.

Pooled data from the Indian D2C brands we work with, 40,076 orders, 90 days to 23 Sep 2026. Monthly figures are averages, rounded.

P.S. Want your own True ROAS? The free profit calculator works it out from your numbers, in ₹. It's under Free tools.

— Dwarkesh

Get next week’s letter

One email. Real numbers. Every week. Free.

← All issues