MishaBook a demo

Aug 14, 2026

Stop Guessing on ROAS

Return on Ad Spend (ROAS) is the ratio of revenue attributed to paid ads divided by the total cost of those ads. Formula: ROAS = Revenue from ads / Ad spend. A ROAS of 3.0 means $3 in revenue for every $1 spent on ads.

Why ROAS Alone Fails

ROAS is a top-line metric. It tells you revenue per dollar spent, but not whether that revenue is profitable. A brand can hit 4.0 ROAS and still lose money if COGS, fulfillment, and overhead exceed the margin.

The core failure: teams optimize for ROAS without anchoring to contribution margin (revenue minus COGS minus fulfillment minus payment processing). A 3.0 ROAS on a 20% margin product is breakeven or negative. A 2.0 ROAS on a 60% margin product is highly profitable.

Second failure: ROAS attribution windows are arbitrary. A 7-day click attribution window captures only immediate conversions. A 30-day window inflates ROAS by including organic or competitor-driven purchases. The window you choose changes the metric by 20 - 40%.

Threshold Framework by Margin Profile

Set ROAS thresholds based on unit economics, not industry benchmarks. Use this decision tree:

For products with 50%+ contribution margin (after COGS, fulfillment, payment processing): Target ROAS of 2.0 - 2.5. Below 2.0, ad spend is destroying margin. Above 2.5, you have room to scale spend or test new channels.

For products with 30 - 50% contribution margin: Target ROAS of 2.5 - 3.5. Below 2.5, profitability erodes fast. Above 3.5, scale aggressively but monitor for saturation.

For products with <30% contribution margin: ROAS is a distraction. Fix unit economics first. Chasing 4.0+ ROAS on a thin-margin product is a path to negative LTV.

  • Calculate your true contribution margin: (AOV × gross margin %) - (fulfillment cost + payment processing fee)
  • Divide contribution margin by AOV to get margin percentage
  • Minimum ROAS threshold = 1 / (margin % - overhead allocation)
  • If margin is 40% and overhead is 10%, minimum ROAS is 1 / 0.30 = 3.33

Attribution Window Standardization

Attribution window choice is a policy decision, not a platform default. Most platforms default to 7-day click or 1-day view. These are too short for DTC.

Standardize on 30-day click attribution for all paid channels (Meta, Google, TikTok). This captures repeat visitors and reduces noise from same-day organic traffic. Document the window in your reporting spec.

Audit your actual customer journey: pull 100 recent orders and trace the touchpoint sequence. If 40% of customers return within 14 days before purchase, your 7-day window is understating ROAS by ~20%.

Use incrementality testing (holdout groups) quarterly to validate that attributed revenue is actually driven by ads, not correlated with them. A 10% holdout group run for 2 weeks costs little and catches attribution inflation.

Channel-Specific ROAS Traps

Meta (Facebook/Instagram) ROAS is often inflated by view-through attribution. A user sees an ad, doesn't click, then searches the brand name and converts. Meta attributes this to the ad. Actual incrementality is 30 - 50% lower. Discount Meta ROAS by 25% for planning.

Google Shopping ROAS is often depressed because it captures high-intent, low-funnel traffic that would convert anyway. Compare Shopping ROAS to organic search conversion rate. If they're similar, Shopping is cannibalizing organic.

TikTok ROAS is volatile month-to-month because audience saturation happens fast. A 3.0 ROAS in month one often drops to 1.5 by month three. Budget conservatively and expect 40% ROAS decay.

Email and SMS have zero ad spend in most systems, so ROAS is undefined. Track these separately as revenue per email sent or SMS sent, not ROAS.

Diagnostic Checklist: When ROAS Drops

ROAS decline is usually not a mystery. Follow this sequence to isolate the cause:

  • Check conversion rate first. If CVR dropped 20%, the issue is landing page, product, or offer - not ad efficiency. ROAS will follow.
  • Check AOV. If AOV fell 15%, ROAS will fall proportionally even if cost-per-click is flat.
  • Check cost-per-click. If CPC rose 30%, bid competition increased or audience quality declined. Audit audience targeting and creative freshness.
  • Check attribution window. If you switched from 30-day to 7-day, ROAS will drop 15 - 25% mechanically. This is not a real decline.
  • Check seasonality. Compare ROAS to the same week last year. If it's flat year-over-year, the decline is market-wide, not campaign-specific.
  • Check creative. If the same audience saw the same ad 8+ times, frequency fatigue is real. Pause and refresh creative.

Reporting and Governance

ROAS should appear in weekly reporting alongside contribution margin and payback period. Report ROAS by channel, by campaign, and by cohort (new vs. returning customer).

Set a single source of truth for ROAS calculation. Most teams pull ROAS from Meta, Google, and Shopify separately and get three different numbers. Reconcile to one system (usually Shopify or a BI tool) and document the formula.

Flag ROAS changes >15% week-over-week as alerts. Investigate before the change becomes a trend. Most teams notice ROAS decline only after 4 - 6 weeks of erosion.

Do not use ROAS as the sole optimization target. Optimize for contribution margin or payback period. ROAS is a diagnostic, not a goal.

Common Failure Modes

Chasing ROAS targets without margin context. A team hits 3.5 ROAS and celebrates, unaware that their 25% margin means they're losing money on every sale after overhead.

Switching attribution windows mid-year. This breaks trend analysis and makes month-over-month comparisons meaningless. Lock the window in Q1 and hold it.

Mixing direct and indirect revenue. If a customer sees an ad, doesn't convert, then returns via organic search and buys, some platforms attribute all revenue to the ad. Others attribute none. Decide on a rule and stick to it.

Ignoring customer acquisition cost (CAC) payback period. A 3.0 ROAS with a 90-day payback period is worse than a 2.0 ROAS with a 30-day payback. ROAS doesn't tell you when cash returns.

Questions

FAQ

What ROAS should we target?

ROAS targets depend on contribution margin, not industry benchmarks. For a 40% margin product, target 2.5 - 3.0 ROAS. For a 60% margin product, 2.0 - 2.5 is healthy. Calculate your minimum viable ROAS as 1 / (margin % - overhead %). Below that, you're unprofitable.

Why does Meta ROAS differ from Google ROAS?

Meta uses view-through attribution (users who see but don't click an ad). Google uses click-based attribution. Meta's ROAS is typically 25 - 40% inflated relative to true incrementality. Use incrementality testing to validate. Also, Meta captures top-funnel awareness traffic; Google captures high-intent, low-funnel traffic. Different audiences, different ROAS.

Should we use 7-day or 30-day attribution?

Use 30-day click attribution as your standard. 7-day windows are too short and understate ROAS by 15 - 25%. Validate your choice by analyzing actual customer journeys - trace 100 recent orders and see how many customers return within 14 days before purchase. Document your window choice and hold it constant for trend analysis.

ROAS is up but profit is down. How?

ROAS is revenue per ad dollar, not profit per ad dollar. If AOV dropped, COGS increased, or fulfillment costs rose, ROAS can stay flat or rise while contribution margin shrinks. Always pair ROAS with contribution margin and payback period. ROAS alone is incomplete.

Want this on your account?

Thirty minutes. Bring the number that keeps you up.

More from the blog