← All articles
Intermediate9 min read|

How to Calculate Break-Even ROAS by Product (Not Blended)

A blended ROAS target hides which products make money on ads and which lose it. Here's how to calculate the real break-even ROAS for each product using contribution margin, not gross margin.

Every ad buyer knows their ROAS. It's the number they optimize against, the thing they report to the founder, the metric that decides whether a campaign keeps running or gets killed.

But here's the problem. Most brands run one ROAS target across their entire catalog. Maybe 3x. Maybe 4x. Some number that "feels right" based on blended margins.

That single number is hiding a massive problem. Because break-even ROAS is different for every product you sell. And if you don't know each product's actual threshold, you're almost certainly overspending on some SKUs and underspending on others.

What break-even ROAS actually means

Break-even ROAS is the minimum return on ad spend required for a product to not lose money on each sale. Not "generate profit." Just not lose money.

Most people calculate it wrong. They take the sale price, subtract COGS, and divide. That gives you gross-margin ROAS. Which would be fine if COGS were your only cost. They aren't.

The wrong formula (what most people use)

Break-Even ROAS = Sale Price ÷ (Sale Price - COGS)

This ignores payment processing, shipping, fulfillment, returns, and packaging.

The right formula

Break-Even ROAS = Sale Price ÷ Pre-Ad Contribution Margin ($)

Pre-ad contribution = Sale Price - COGS - all variable costs EXCEPT ad spend.

The difference between these two formulas is usually 1-2x. That's enormous. A product you think breaks even at 1.5x might actually need 3x. You'd never know from Shopify reports alone.

How to calculate it for each product

Take any product. Start with the sale price. Then subtract every variable cost that applies to every order of that product, in this order:

  1. COGS (what you pay for the product or raw materials)
  2. Payment processing (2.6-2.9% + $0.30 for most Shopify stores)
  3. Shipping (outbound cost per unit, whether you charge the customer or not)
  4. Fulfillment (pick, pack, ship labor or 3PL per-unit fee)
  5. Returns allowance (your return rate × average cost per return)
  6. Packaging (box, mailer, inserts, tape)

What's left is your pre-ad contribution margin. Divide the sale price by that number. That's your break-even ROAS for that product.

Waterfall: Pre-Workout (30 srv)
Sale price
$42.00$42.00
COGS
-$9.00$33.00
Payment processing
-$1.52$31.48
Shipping
-$6.50$24.98
Fulfillment / 3PL
-$3.20$21.78
Returns allowance (8%)
-$3.36$18.42
Packaging
-$0.22$18.20
Pre-ad contribution
$18.2043.3%

Break-even ROAS = $42.00 ÷ $18.20 = 2.31x

Every dollar of ad spend needs to generate $2.31 in revenue just to break even.

At 2.31x, every dollar you spend on ads for this product needs to generate $2.31 in revenue just to cover costs. Anything below that and you're paying to lose money.

Why one ROAS target doesn't work

Here's what happens when you run a blended 3x ROAS target across your whole catalog.

Break-Even ROAS by ProductSupplement brand example
ProductPriceContributionBE ROASActual ROASVerdict
Protein Powder (1kg)$54.00$21.50 (39.8%)2.51x3.8xProfitable
Shaker Bottle$18.00$4.80 (26.7%)3.75x2.1xLosing money
Pre-Workout (30 srv)$42.00$18.20 (43.3%)2.31x2.4xBarely breaking even

Same store. Same 3x target. But three totally different outcomes.

The protein powder is printing money at 3.8x against a 2.51x threshold. The shaker bottle looks fine at 2.1x if you're comparing to a 2x gross-margin ROAS, but it's actually underwater because the real threshold is 3.75x. And the pre-workout is barely above the line.

If you're running one ROAS target, you'd keep spending on the shaker bottle because 2.1x "isn't that bad." But every sale is costing you money.

Gross margin is a terrible predictor of break-even ROAS

This is the part that surprises people. You'd think a product with 80% gross margin would have a lower ROAS threshold than one with 68%. Not necessarily.

Gross Margin vs Break-Even ROASHigher gross margin ≠ lower ROAS threshold
Protein Powder
2.51x
GM: 74%
Shaker Bottle
3.75x
GM: 72%
Pre-Workout
2.31x
GM: 79%
Creatine (60 srv)
2.1x
GM: 80%
BCAA Drink Mix
4.2x
GM: 68%

Notice: Shaker Bottle has 72% gross margin but the highest break-even ROAS (3.75x). BCAA Drink Mix is even worse at 4.20x. Gross margin alone tells you nothing about ad efficiency.

The Shaker Bottle has 72% gross margin. Looks great on paper. But it's an $18 item with $6.50 in shipping, $3 in fulfillment, and a 12% return rate. After all variable costs, there's only $4.80 left per sale. So you need 3.75x ROAS just to break even.

Meanwhile the Creatine at 80% gross margin has a break-even ROAS of just 2.10x. Higher price point, lower shipping cost relative to price, lower return rate.

The takeaway: gross margin tells you about production costs. Break-even ROAS tells you about ad efficiency. They're related but not the same thing. Low-price items with high shipping and return costs will always have worse ROAS thresholds regardless of gross margin.

What to do with this information

Once you have break-even ROAS by product, a few decisions get much clearer:

  • Set per-product ROAS targets in your ad platform. Most platforms (Meta, Google) let you set ROAS targets at the product or product group level. Use them. Your protein powder can run at 3x while your shaker bottle needs 4x minimum.
  • Stop running ads on products that can't clear their threshold. If a product needs 4.2x ROAS to break even and you've never hit above 2.5x, that product shouldn't be in your paid campaigns. Period. Sell it through organic, email, or bundles instead.
  • Shift budget toward products with the most headroom. The gap between actual ROAS and break-even ROAS is your profit margin on ad spend. A product running at 3.8x against a 2.51x threshold has way more headroom than one running at 2.4x against 2.31x. Put your money where the gap is widest.
  • Use break-even ROAS to evaluate new products before launch. Before you add a product to your catalog, estimate all variable costs and calculate the break-even ROAS. If it's above 4x, you're going to need incredibly efficient ads to make it work. Factor that into the decision.

The relationship to break-even CAC

Break-even ROAS and break-even CAC are two sides of the same coin. ROAS is how ad platforms think. CAC is how finance thinks. They tell you the same thing in different units.

Converting between them

Break-Even CAC = Pre-Ad Contribution Margin ($)

Break-Even ROAS = Sale Price ÷ Break-Even CAC

If your pre-ad contribution is $18.20, that's your break-even CAC. And your break-even ROAS is $42 ÷ $18.20 = 2.31x. Same information, different language. Use whichever one your team actually looks at.

How to build this into your workflow

You don't need to recalculate this daily. But you should update it:

  • When you change pricing on a product
  • When shipping rates change (carriers adjust rates at least annually)
  • When your return rate shifts meaningfully (seasonal, new product issues)
  • When you switch fulfillment providers or renegotiate 3PL rates
  • Before scaling ad spend on any product

The calculation itself takes a few minutes per product. The hard part is getting accurate numbers for all variable costs, not the math.

That's the gap MarginCaptain fills. You plug in your Shopify data and cost inputs, and it calculates break-even ROAS and contribution margin for every SKU automatically. No spreadsheet gymnastics. The demo shows what the output looks like with sample data if you want to see it before connecting your store.

Find your fake-profitable SKUs.

Upload your Shopify data. Get your margin leak audit in minutes.