The Core ROAS Formula (and Why It’s Misleading on Its Own)
If you’re asking how to calculate ROAS, start with the foundational equation every platform reports: ROAS = Revenue from Ads ÷ Ad Spend. That’s the ROAS formula in its simplest form. Spend $4,000, earn $10,000 attributed, and you have a 2.5 ROAS.
But what does 2.5 ROAS mean beyond the math? It signals that your advertising generated two and a half times its cost in raw sales. It says nothing about profitability, refunds, or whether those sales would have happened anyway. When I first managed a $50k/month account for a fitness equipment brand, I touted a 2.8 ROAS to the CEO, only to be asked, “But are we making money?” That question changed my career.
How do you calculate your ROAS? You isolate a time period—say 30 days—sum the advertising cost from Facebook, Google, TikTok, and any other paid source, then sum the corresponding attributed revenue from your analytics. Divide the latter by the former. The pitfall is attribution: if you use platform-native reporting, each channel takes credit for the same sale, inflating total ROAS.
ROAS vs ROI: The Confusion That Costs CFOs Sleep
Many articles blur ROAS with ROI. ROI subtracts all costs—COGS, overhead, agency fees—from profit and divides by total investment. ROAS only looks at ad-generated revenue vs ad cost. I’ve sat in board meetings where a “300% ROI” slide was actually 3.0 ROAS; the gap was a 40% margin plus fixed costs. Be precise with terms.
The thing nobody tells you about the basic ratio is that it assumes revenue is immediate and final. In reality, 20% of e-commerce orders get returned, and SaaS trials churn. A 2.5 ROAS on paper can become a 1.9 effective ROAS after returns. We’ll adjust for that later.
Profit-Adjusted ROAS: The Calculation I Wish I’d Used Sooner
After the CEO callback, I built the profit-adjusted ROAS model. The formula swaps revenue for gross profit: (Revenue − COGS) ÷ Ad Spend. This reveals whether ads actually contributed to covering variable product costs.
The Margin-Aware Formula Step by Step
Step 1: Pull attributed revenue for the period. Step 2: From your order backend, calculate total COGS for those specific orders (include product cost, not shipping yet). Step 3: Subtract. Step 4: Divide by ad spend. Example: $20k revenue, $7k COGS, $10k spend → ($20k−$7k)/$10k = 1.3. That 1.3 is the true multiple on the product margin you earned from ads.
Most people don’t realize that a “break-even ROAS” is not 1.0—it’s the inverse of your gross margin. If margin is 40%, break-even basic ROAS is 1/0.4 = 2.5. I learned this the hard way when a client scaled to 2.4 ROAS and still lost money because their margin was 35% and overhead pushed the real threshold to 3.1.
Handling Shipping, Fees, and Fixed Overhead
For a stricter version, I subtract shipping and payment fees from the numerator too, yielding contribution-margin ROAS. In one Shopify case, adding $2.50 average shipping cost per order dropped adjusted ROAS from 1.8 to 1.4. Our ROAS Calculator does the basic version; I’ve also published a free interactive Google Sheet that auto-flags profitability after you input margin and fixed cost assumptions.
The free sheet uses conditional formatting: if profit-adjusted ROAS < break-even threshold (1/gross margin), it turns red. It saved a friend’s agency from scaling a client’s unprofitable TikTok campaign last year.
The $10k Mistake That Led to This Method
In 2021, I advised a client to increase Facebook budget based on a stable 3.0 blended ROAS. Three months later, their cash reserve dropped $40k. The raw ROAS hid a 45% COGS plus 25% return rate. Profit-adjusted, they were at 1.4—below sustainability. That experience is why I now mandate margin-aware math before any scale decision.
What Is a Good ROAS Rate? Industry Benchmarks That Matter
The search query “What is a good ROAS rate?” rarely gets a useful answer because benchmarks are contextual. Below is the table I share with clients, built from 40+ accounts and public margin data.
| Industry / Model | Typical Gross Margin | Basic ROAS Often Cited | Profit-Adjusted ROAS Needed | Notes |
|---|---|---|---|---|
| Apparel e-com | 50–60% | 2.5–3.0 | 3.5–4.0 | High returns (20–30%) |
| Beauty / Cosmetics DTC | 65–75% | 2.0–3.0 | 2.2–2.8 | Lower returns, subscription uplift |
| Home & Furniture | 40–50% | 3.5–4.5 | 4.0–5.0 | Heavy freight, damage rates |
| B2B SaaS (monthly) | 80%+ (delivery cost low) | 1.0–1.5 | 1.3–1.8 (first month) | LTV multiplies effect |
| Info Products / Courses | 90%+ | 1.5–2.0 | 1.6–2.0 | Low COGS, high ad competition |
| Lead Gen (high ticket) | n/a (margin at close) | 5.0–10.0 | Varies by close rate | Long cycles need buffer |
Why SaaS and E-com Differ Radically
In SaaS, the product cost is near zero after build, so gross margin is high. A 1.5 ROAS on first-month subscription revenue can yield positive unit economics if annual churn is < 20%. For e-com, each sale carries physical COGS; hence the bar is higher. I’ve consulted for a $20M ARR SaaS where 1.2 ROAS funded explosive growth, while a $5M apparel brand needed 3.8 to survive.
The Role of Lifetime Value in Setting Targets
If you have reliable LTV data, calculate blended ROAS target = (1 / gross margin) ÷ expected payback months. For example, 60% margin, 12-month payback: break-even basic is 1.67, but if you want 3x LTV/CAC, target 5.0 on first sale? No—because recurring revenue covers the rest. The nuance is why a good rate is never one-size.
Regional and Seasonal Variance
ROAS benchmarks shift in Q4 due to CPM inflation. In Q4 2023, CPMs rose 30% for a client, dropping ROAS from 3.0 to 2.2 despite same conversion rate. I adjust targets seasonally: tolerate 15% lower ROAS in peak acquisition months if LTV holds.
These benchmarks are directional, drawn from engagement data, not a controlled study. Treat them as starting hypotheses, then calibrate to your P&L.
Channel-Specific ROAS: Why Blended Numbers Hide Failures
Calculating a single blended ROAS across all channels is like averaging temperatures of a freezer and oven. In a 2023 audit for a $12M brand, blended ROAS was 3.2, but how to calculate ROAS per channel exposed Pinterest at 0.7 and branded search at 9.1. The average masked a leaking bucket.
Separating Platform Spend and Attribution
Use UTM tags and native pixels. In GA4, apply data-driven attribution and filter by acquisition source. The Google Analytics 4 attribution help details how credit is distributed. I set a 7-day post-click window for cold channels, 1-day for retargeting, to avoid double-counting assisted conversions.
When a Lower Channel ROAS Is Acceptable
Upper-funnel YouTube or podcast ads often show ROAS < 1.0 because they assist conversions credited to search. Use a geo-lift test or MMM to assign value. The thing nobody tells you: optimizing purely for last-click ROAS will starve awareness campaigns, and six months later your cheap branded search volume evaporates because no one new entered the funnel.
Example: Facebook vs Google Search
For a client, Facebook showed 2.1 ROAS, Google 4.3. But excluding Facebook, Google dropped to 2.8 because Facebook introduced new buyers who later searched the brand. True incremental ROAS of Facebook was higher than reported. Calculate via holdout tests, not just division.
Attribution Models and Tracking Setup (GA4, Pixels, and the Messy Truth)
Even the best formula fails with bad inputs. I’ve seen Shopify stores where the pixel fired twice, inflating revenue 30%. Proper tracking is half of how to calculate ROAS accurately.
GA4 and Conversion Tracking Fundamentals
Deploy enhanced e-commerce events and link Google Ads. The Google Ads conversion tracking documentation covers tag setup. Use server-side tagging if iOS privacy limits hit you; otherwise mobile attribution undercounts 10–20%.
The Cookie-Less Attribution Dilemma
With third-party cookies fading, platform reports diverge from backend. I reconcile ad-platform revenue with order data weekly. Most people don’t realize a 15% discrepancy is normal; >30% signals broken tags or view-through inflation. Build a reconciliation tab in your sheet.
View-Through and the Phantom Revenue
Platforms count impressions that later convert as attributed. I cap view-through at 1% of revenue after testing. In one case, disabling view-through dropped reported ROAS from 3.0 to 2.2, but backend profit rose because we cut wasted impression spend.
Common ROAS Calculation Mistakes That Quietly Drain Budget
- Including organic revenue in ad-attributed buckets – A client counted 20% organic as “Facebook assisted” via overstated view-through.
- Ignoring returns and refunds – A 4.0 ROAS on gross sales became 2.8 after 30% apparel returns.
- Mixing time windows – January spend vs February revenue skews ratio downward or up.
- Using total company revenue instead of campaign-specific – Blended hides losers.
- Forgetting ad platform fees – Agency or manager fees not in ad spend but affect true cost.
- Double-counting cross-device conversions – Same user on phone and laptop counted twice.
- Trusting platform-native ROAS exclusively – Each platform over-credits itself.
The Return Rate Trap
In apparel, return rates of 25–40% are common. I adjust revenue by expected returns before calculating. One brand’s 3.5 ROAS fell to 2.4 after returns, below their 2.8 margin threshold.
Agency and Tool Costs
If you pay a 10% management fee, your effective spend is 110% of media. Add that to denominator for true ROAS. Most dashboards omit it.
A Practical Step-by-Step: Calculate Your True ROAS This Week
Follow this practitioner checklist to move beyond vanity metrics:
- Export ad spend per platform for last 30 days (include fees).
- Pull attributed revenue same window in GA4, data-driven model.
- Subtract COGS and returns from those orders via backend.
- Apply profit-adjusted formula: (Revenue − COGS − Returns) ÷ Spend.
- Compare vs industry table; flag channels below threshold.
- Reconcile discrepancies >20% with pixel tests.
- Document assumptions; revisit monthly.
Profit-adjusted ROAS is the only number I trust to make scaling decisions. If it’s above 1.0 after all variable costs, you’re funding growth; below it, you’re buying false hope.
Free Interactive Sheet and How to Use It
I mentioned a free Google Sheet earlier. It auto-computes break-even ROAS from your margin input and colors cells red if unprofitable. To use: enter spend, revenue, COGS%, return rate, and fixed cost per order. It outputs both basic and profit-adjusted ROAS side by side.
If you internalize one thing from this guide, let it be that how to calculate ROAS is not just division—it’s a margin-aware, attribution-clean discipline that protects your business.