Why a store's 3.0 ROAS was really 0.73, and how it reached 1.8
A twelve-week look at an online store whose ad dashboards overstated results, and what changed when we tracked profit instead of platform revenue.
- Client type
- Direct-to-consumer online store
- Services
- Google Ads, Meta Ads, tracking, feed
- Timeframe
- 12 weeks
- Platform
- Shopify
- Primary KPI
- Verified ROAS
Background
The client is a direct-to-consumer online store selling home and lifestyle products across India, with a catalogue of about 140 products and an average order value of ₹1,460. It runs on Shopify, accepts prepaid and cash-on-delivery orders, and spends on Google Ads and Meta Ads.
The owner was told by the ad dashboards that campaigns were working. Google and Meta together reported ₹9 L of revenue from ₹3 L of spend, a return of 3.0. Yet the bank balance told a different story: stock was selling, but cash was not growing.
The challenge
The reported return of 3.0 looked healthy. The real return, measured from the store's own order data after cancellations and returns, was 0.73. That is ₹73 of revenue for every ₹100 of ad spend, well below the break-even point.
The business sells at a 62.5% contribution margin after product cost, shipping and payment fees. At that margin, the break-even return on ad spend is 1 divided by 0.625, which is 1.6. Anything below 1.6 loses money on every order, before overheads.
- Two purchase tags were firing on the thank-you page, so some orders were counted twice.
- Meta and Google both claimed credit for the same order, because each used a different attribution window.
- Cash-on-delivery orders that were cancelled or returned still counted as revenue in ad dashboards.
- Campaigns optimised toward the platform's own numbers, so budget kept flowing to the wrong places.
- The product feed had missing titles and categories, and Shopping ads showed irrelevant queries.
Objectives
The owner's goal was simple: make ad spend profitable. We translated that into measurable targets.
- Reconcile ad platform revenue with store revenue, so every report uses one trusted number.
- Raise verified ROAS above the 1.6 break-even within 12 weeks.
- Reduce cost per verified order.
- Keep ad spend flat at ₹3 L per 12-week period, so any gain came from efficiency, not a bigger budget.
Strategy
We started with measurement, because you cannot fix what you cannot see. Then we changed how budget was allocated.
1. Establish one source of truth
We used Shopify order data after cancellations and returns as the revenue figure. Ad platform numbers were treated as directional only. Every weekly report showed both side by side, along with the gap.
2. Repair tracking
We removed the duplicate purchase tag, standardised event names, passed order values accurately, and set up server-side events alongside the browser pixel to reduce lost signals. We also excluded cancelled and returned orders from reporting.
3. Rebuild the account structure
Brand search, non-brand search and Shopping were separated, so brand traffic stopped flattering the numbers. On Meta, prospecting and remarketing audiences were split and excluded from each other, which reduced overlap.
4. Clean the product feed
We rewrote product titles to include the words shoppers use, filled missing attributes, and excluded low-margin products from paid campaigns.
5. Use margin to decide
Each campaign was judged against the 1.6 break-even ROAS. Campaigns that could not reach it after a fair test were paused.
Implementation
The work ran over twelve weeks with the same total budget as the previous twelve.
Reconcile and audit
Matched ad platform revenue to Shopify orders, found the duplicate tag, and quantified where the ₹6.81 L gap came from.
Fix tracking
Removed the duplicate purchase event, added server-side events, and built a weekly report showing reported and verified revenue together.
Restructure campaigns
Split brand and non-brand, rebuilt Shopping with a cleaned feed, and separated Meta prospecting from remarketing. Paused the five weakest campaigns.
Optimise on verified data
Shifted budget toward campaigns above break-even, tested new creative, and tightened audiences. Verified ROAS passed break-even in week eight.
Before and after
BeforeStarting point
- Reported ROAS of 3.0, verified ROAS of 0.73
- Two purchase tags, with duplicate orders counted
- Cancelled and returned orders counted as revenue
- Brand and non-brand traffic mixed together
- Contribution after ad spend of -₹1,63,125
AfterSix-month position
- Reported ROAS of 2.5, verified ROAS of 1.80
- One clean purchase event plus server-side events
- Reports based on Shopify orders after cancellations
- Separate campaigns for brand, non-brand and Shopping
- Contribution after ad spend of ₹37,625
Results
The most important result is one that looks like a step backwards: platform-reported revenue fell from ₹9 L to ₹7.5 L, while verified revenue rose from ₹2.19 L to ₹5.4 L. The platforms now report less because duplicate and inflated conversions were removed. The store now earns more because budget moved to campaigns that produce real, delivered orders.
Reported against verified ROAS
The gap between what dashboards say and what the store earned.
Verified ROAS by week
Weekly return from the store's own order data. Break-even is 1.6.
Why the dashboards over-reported
The four sources of the gap in the before period. Together they account for the full difference.
Summary table
| Measure | Before (12 weeks) | After (12 weeks) |
|---|---|---|
| Ad spend | ₹3,00,000 | ₹3,00,000 |
| Platform-reported revenue | ₹9,00,000 | ₹7,50,000 |
| Platform-reported ROAS | 3.00 | 2.50 |
| Verified orders (store, after cancellations) | 150 | 370 |
| Verified revenue (orders x average order value of ₹1,460) | ₹2,19,000 | ₹5,40,200 |
| Verified ROAS | 0.73 | 1.80 |
| Break-even ROAS (62.5% contribution margin) | 1.60 | 1.60 |
| Contribution after ad spend | -₹1,63,125 | ₹37,625 |
Business impact
Before the work, the ₹3 L ad spend produced a verified loss of about ₹1.63 L after product, shipping and payment costs. After the work, the same spend produced a verified contribution of about ₹37,625. That is a swing of roughly ₹2.01 L over twelve weeks without raising the budget.
Cost per verified order fell from ₹2,000 to ₹811. The owner now has a weekly number they can reconcile with their own books, and a clear rule for pausing campaigns: if verified ROAS stays below 1.6 after a fair test, the campaign stops.
There is also a quieter benefit. Because reports now agree with the bank, the owner can plan stock and cash with more confidence, and discussions about marketing are about decisions rather than whose dashboard is right.
Lessons learned
Dashboard ROAS is not profit
Platform revenue includes overlap, duplicates and orders that never ship. Use your own order data as the source of truth.
Know your break-even
Break-even ROAS comes from margin, not from a rule of thumb. At a 62.5% margin it is 1.6. At a thinner margin it is higher.
Fix tracking before optimising
Optimising on inflated data sends budget to the wrong campaigns. The first month of this work was almost entirely measurement.
Reported numbers can fall while profit rises
Cleaner reporting often looks worse before it looks better. Explain this to stakeholders early.
Assumptions and method
This is a modelled example, not an audited client result. The storefront, website and dashboard images are designed mockups, not screenshots of a client account. Assumptions: ad spend of ₹3,00,000 in each 12-week period; average order value of ₹1,460; a 62.5% contribution margin after product cost, shipping and payment fees (so break-even ROAS is 1.6); 150 verified orders before and 370 after; verified revenue equals verified orders multiplied by average order value; contribution equals verified revenue multiplied by the margin, minus ad spend. The four gap components add up exactly to the difference between reported and verified revenue before the work. Real results vary with margin, return rates, product mix and seasonality. We do not promise any specific outcome.
Keep reading
Not sure your ad numbers are real?
We will compare your ad platform revenue with your store orders and show you the gap, free of charge.
- Free review of your website, ads and tracking
- A plain-English plan with clear priorities
- Month-to-month support, no lock-in contracts
Request your free audit
Tell us a little about your business. We reply within 24 hours on business days.