TL;DR
- Reported ROAS (revenue ÷ ad spend) is not the number the business actually sees.
- True ROAS deducts COGS, shipping, returns, discounts, processing, and platform fees from the numerator before dividing.
- Typical gap: reported 7× lands at true 2–3.5× after deductions.
- Track true ROAS by channel weekly. MER is for trend watching; true ROAS is for allocation decisions.
- Fairview calculates true ROAS per channel by connecting Shopify, Stripe, and the ad platforms.
Every ecommerce operator has walked into a Monday meeting with a screenshot of a 7× ROAS number and a board member who wants to 10× the ad budget. By Friday, the reorder from the 3PL lands, Stripe fees post, a promo code batch is reconciled, and the same campaign looks like a 2.4×.
Reported ROAS is not wrong on purpose. It answers a different question than the one the business needs answered. Meta and Google measure revenue attributed to their platforms against money spent on their platforms. An operator has to run a P&L.
This post gives you the practical true ROAS ecommerce framework: the honest formula, a waterfall of where the reported number leaks, benchmarks by business type, and the weekly cadence that keeps spending connected to reality. It pairs with true ROAS calculation, blended vs true ROAS, marketing channel ROI, and scaling D2C brands.
What true ROAS actually means
Definition
True ROAS: net contribution revenue divided by full acquisition cost. Contribution revenue is net revenue minus COGS, shipping, returns, discounts, and payment and platform fees. Full acquisition cost is ad spend plus creative, agency, and platform fees. The output is the actual return a campaign generates for the business.
Reported ROAS lives on one formula: platform-attributed revenue divided by ad spend. That answer is cheap, instant, and optimistic by design. It is the number ad platforms surface because it is the number that keeps their spend line growing.
True ROAS lives on a different formula with more inputs. It is slower to assemble. It reads lower. It also decides whether a campaign is actually paying for itself.
Reported ROAS vs true ROAS
A worked example makes the gap concrete. Take a $2,000 Meta campaign on a D2C skincare brand that drove $14,400 of platform-attributed revenue:
- Reported ROAS: $14,400 ÷ $2,000 = 7.2×
- Variable cost of goods sold (48% of rev): $6,900
- Contribution revenue: $14,400 − $6,900 = $7,500
- Full acquisition cost: $2,000 ad spend + $150 platform and creative fees = $2,150
- True ROAS: $7,500 ÷ $2,150 = 3.5×
Still profitable. Less dramatic. Every decision tied to the real number is safer than the same decision tied to the advertised one.
Key insight
Reported ROAS is the number that gets you fired slowly. True ROAS is the number that keeps you employed.
Where reported ROAS leaks value
Each deduction is individually small. The compounding is what surprises operators:
- COGS. Physical products have costs. The winning 48%-gross-margin skincare brand leaves $52 of every $100 in ingredient, packaging, and manufacturing costs. That $52 never reaches ROAS math at the platform level.
- Shipping. 3PL handling plus carrier rates land around $8–$14 per order for most D2C. Free-shipping promos compound this further.
- Discounts and promo codes. Platform ROAS uses gross revenue. Real revenue is after the codes. A "save 15%" creative turns into a 15% ROAS cut on the back end.
- Returns. 5–30% of D2C orders come back depending on category. Net of restock, returns cost the business real money.
- Payment processing. Stripe plus Shopify Payments sit around 2.9% + $0.30. On higher-AOV orders, immaterial. On $25 AOV, meaningful.
- Creative, platform, agency fees. Ad spend on the platform is only one cost of acquisition. Agency retainers, UGC budgets, platform fees, and creative production all belong in the denominator.
True ROAS benchmarks by business type
| Model | Breakeven | Healthy | Best-in-class |
|---|---|---|---|
| D2C subscription (skincare, coffee, pet) | 1.8× | 2.5–3.5× | > 4× |
| D2C one-time (apparel, accessories) | 2.2× | 3.0–4.5× | > 5× |
| High-AOV commerce ($200+) | 1.6× | 2.2–3.0× | > 3.5× |
| Marketplaces (lower margin) | 2.8× | 3.8–5.0× | > 6× |
Breakeven is not a goal. It is a line below which money leaves the building. "Healthy" is where operators actually make allocation decisions. Best-in-class exists but is usually driven by strong organic LTV, not ad discipline alone.
Attribution is the silent ROAS destroyer
Reported ROAS double-counts. Post-iOS 14.5, Meta and Google both credit themselves for revenue the other platform (or organic search, or an email) largely drove. Summing Meta's reported revenue and Google's reported revenue commonly exceeds total Shopify revenue. That gap is the attribution overlap.
A widely referenced post-ATT analysis by Northbeam put the average platform over-counting at 15–40% depending on channel mix (Northbeam glossary, 2024). Shopify's own Commerce Trends report makes a similar point: first-party revenue numbers from the store are the only numbers that reconcile at year-end (Shopify Commerce Trends, 2024).
Practical fix: anchor every true-ROAS calculation to Shopify revenue, not platform revenue. If the two disagree, Shopify wins.
MER, blended ROAS, true ROAS: how they relate
Three metrics show up in every D2C finance deck. They are not interchangeable.
- MER (marketing efficiency ratio): total revenue ÷ total marketing spend. Great for trend watching; silent on where the money goes.
- Blended ROAS: total attributed revenue across platforms ÷ total ad spend. Better than single-platform ROAS but still inflated and opaque on channel mix.
- True ROAS: contribution revenue ÷ full acquisition cost, calculated per channel. The only one that supports allocation decisions.
Use MER for the board slide. Use true ROAS for every weekly reallocation.
Quote-ready
MER tells you whether marketing is working. True ROAS tells you which channel to cut on Monday.
The weekly true-ROAS cadence
True ROAS matters only if it drives action. A simple weekly routine that fits inside thirty minutes:
- Monday, 20 minutes: Pull reported and true ROAS per channel for the previous seven days. Any channel below breakeven goes on a two-week watch list.
- Monday, 10 minutes: Reallocate up to 15% of spend from lowest true-ROAS channel to highest. No heroics; small adjustments compound.
- Wednesday: Check cohort payback on the previous month's acquisition. If payback stretched > 2 weeks, investigate the cost side, not the creative.
- Friday: Post blended true ROAS, MER, and the top action taken to the team channel. Keeps the metric visible and decisions accountable.
How Fairview calculates true ROAS automatically
Fairview connects to Shopify, Stripe, QuickBooks or Xero, Google Ads, and Meta Ads via native OAuth. Once connected, Margin Intelligence reconstructs contribution revenue per channel using actual order data and COGS, not platform-reported numbers. True ROAS is calculated per channel daily.
When a channel drops below breakeven, Fairview writes a named next-best action: "Meta prospecting true ROAS 1.4× for 14 days (below 2.1× breakeven). Cap spend at $6K/week; reallocate to Google branded (true 7.8×). Projected impact: +$32K contribution margin per quarter." That lands in the Monday operating brief before the weekly meeting.
See pricing and tiers for the plan that fits your stack.
Per channel
Reported vs true side by side
Daily
Anchored to Shopify revenue
Named
Actions with owner + due date
Key takeaways
- Reported ROAS tells you what the platform wants you to see. True ROAS tells you what the business sees.
- Deduct COGS, shipping, returns, discounts, and fees before dividing.
- Typical gap: reported 7× becomes true 2–3.5×.
- Anchor the numerator to Shopify revenue, not platform-reported revenue.
- Track weekly by channel. MER for trend. True ROAS for allocation.
See your true ROAS by channel, updated daily.
Connect Shopify, Stripe, and your ad platforms. Fairview returns reported vs true ROAS per channel and the one reallocation that moves the number. 14-day trial, no card required.
Frequently asked questions
True ROAS is net contribution revenue divided by full acquisition cost. Contribution revenue deducts COGS, shipping, returns, discounts, and payment and platform fees from gross revenue. Full acquisition cost is ad spend plus creative, agency, and platform fees. The result is the real return a campaign produces for the business, not the number the ad platform reports.
Reported ROAS divides platform-attributed revenue by ad spend with no deductions. It ignores COGS, shipping, returns, discounts, payment fees, and platform fees. It often double-counts organic demand as platform-driven. A reported 7× can land at 2× once every cost the business actually pays is included and attribution overlap is backed out.
Contribution revenue divided by full acquisition cost. Contribution revenue equals net revenue minus COGS, shipping, returns, discounts, and payment/platform fees. Full acquisition cost equals ad spend plus creative, agency, and platform fees. Anchor the revenue figure to Shopify or the order management system rather than the ad platform to avoid attribution overcounting.
Above 2.0× covers variable costs and contributes to overhead. Above 3.0× is genuinely scalable. Below 1.5× is burning cash on every order unless repeat-purchase LTV clearly compensates on a cohort curve. Exact targets vary by business model: subscription tolerates lower true ROAS because LTV extends; one-time purchase requires a higher bar.
Weekly by channel, daily during promo or creative-test windows, and monthly at the cohort level. Brands that lose ad efficiency almost always stopped watching true ROAS weekly and only rediscovered the problem in a quarterly P&L. The cost of noticing late is usually one full quarter of runway.
No, they complement each other. MER (marketing efficiency ratio) tracks total revenue against total marketing spend — useful for trend watching and board reporting. Blended ROAS sits in the middle. True ROAS, calculated per channel, is the one that supports reallocation decisions. Use MER for direction and true ROAS for action.