← All posts
Strategy

Why Your ROAS Looks Fine but Your Margin Doesn't

A Shopify wellness brand we audited was running at 4.2 ROAS in Meta and had been for 3 months. The founder thought paid ads were working. When we dug into the P&L, we found a 4% net margin. Not 4% profit on ad spend — 4% profit on total revenue. At their product costs, fulfillment fees, platform fees, and our engagement cost, they needed a 5.8 ROAS from Meta just to break even on paid acquisition. At 4.2, they were losing money on every paid customer while the dashboard told them they were scaling profitably.

What ROAS measures — and what it doesn't

ROAS (Return on Ad Spend) measures revenue attributed to ads divided by ad spend. That's it. It says nothing about:

  • Product cost (COGS)
  • Shipping and fulfillment
  • Shopify transaction fees (0.5–2% depending on plan)
  • Payment processing (2.9% + $0.30 per transaction on Stripe/Shop Pay)
  • Agency or contractor fees
  • Refund and return rate

A brand selling a $50 supplement with $18 COGS, $6 shipping, $1.50 in platform fees, and $3 in returns has $21.50 in variable costs before touching ad spend. At a 4.2 ROAS on a $50 product — $11.90 implied ad cost — they're spending $41.40 to generate $50 in revenue. Margin: $8.60, or 17.2%. That's fine.

But shift the cost structure slightly — higher COGS, higher fulfillment, higher return rate — and the same 4.2 ROAS becomes deeply unprofitable. ROAS is a media efficiency metric. It has never been a profitability metric.

The contribution margin calculation we run on every account

Before we recommend scaling any account, we calculate the minimum viable ROAS — what we call the MER threshold. The formula:

Break-even ROAS = 1 ÷ Contribution Margin %

If gross margin (after COGS) is 60% and other variable costs (fulfillment, platform fees, returns) total 12%, contribution margin is 48%. Break-even ROAS: 1 ÷ 0.48 = 2.08. At 4.2 ROAS, there's meaningful headroom.

If gross margin is 45% and variable costs are 18%, contribution margin is 27%. Break-even ROAS: 1 ÷ 0.27 = 3.70. At 4.2 ROAS, barely profitable. At 3.8 ROAS, underwater.

The wellness brand had a 43% gross margin and 26% in other variable costs. Contribution margin: 17%. Break-even ROAS: 1 ÷ 0.17 = 5.88. At 4.2 ROAS, they were losing $0.27 on every dollar of revenue from paid ads.

What had changed since they set their ROAS target

When we built the contribution margin model, three costs had grown since the brand originally set their 3.5 ROAS target — which had been appropriate at the time:

  1. Fulfillment costs had increased from $5.80 to $8.20 per order after switching 3PL providers
  2. Return rate had climbed from 4.1% to 9.3% following a reformulation that wasn't communicated clearly in the ads
  3. The platform and processing fees had grown as a percentage of revenue because order volume had grown faster than AOV

They'd been optimizing toward a number that was 9 months out of date. The target ROAS hadn't changed. The business had.

Calculate your break-even ROAS in 15 minutes

Pull your last 30-day Shopify P&L — or build it manually:

  1. Revenue from paid traffic (use UTM-filtered Shopify data, not Meta attribution)
  2. COGS for those orders
  3. Fulfillment and shipping cost
  4. Platform and payment fees (usually 3.5–5% of revenue combined)
  5. Refunds and returns (actual dollar value, not rate)

Subtract 2 through 5 from revenue. Divide the result by revenue. That's your contribution margin %. Divide 1 by that percentage. That's your break-even ROAS.

If Meta-reported ROAS is below that number, paid acquisition is losing money regardless of what the dashboard shows. If it's above by less than 0.5 points, there's almost no room for any variance in performance. That's the number worth optimizing toward — not whatever Meta shows by default. For category-specific break-even ROAS benchmarks and what good looks like by product type, see ROAS benchmarks for Shopify brands.