Breakeven ROAS Is the Wrong Target. Bid on Margin Instead

Illustration: a stack of rose and cream discs topped by a thin gold disc, with an arrow rising past a dashed breakeven line.

Almost every e-commerce owner I talk to knows their breakeven ROAS. Fewer know what it actually measures, and almost nobody has told Google about it. The usual routine goes like this: work out the margin in a spreadsheet, divide one by it, get a number like 2.5, and then run campaigns on a target ROAS somewhere above that. It bakes in two mistakes. Breakeven is the point where you make nothing, and one ROAS number spread across products with different margins lets Google buy unprofitable sales while the account average looks fine.

Below is how I think about it, with an illustrative example and the setups that get margin into the bidding itself.

What breakeven ROAS actually tells you

ROAS in Google Ads is conversion value divided by ad cost. The column is called “Conv. value / cost”, and target ROAS is the same ratio written as a percentage: Google’s own example is $5 in sales for every $1 of ad spend, a 500% target (About Target ROAS bidding, as of 2026-10-24).

Breakeven ROAS is the ratio at which ad spend eats exactly what an order leaves you. If an order keeps 40% of its revenue after product and delivery costs, breakeven ROAS is 1 ÷ 0.40 = 2.5. Spend $40 to get a $100 order and you’re back at zero.

The calculation itself is fine. Two things go wrong around it.

The margin people use is wrong in one of two directions. Some use gross margin (price minus product cost) and forget shipping, payment fees and returns, so breakeven comes out too low and “profitable” campaigns are losing money. Others load fixed costs into it: Shopify plan, apps, salaries, rent. That pushes breakeven too high and starves campaigns that were paying their way. Fixed costs don’t grow with one extra order. The per-order number you want is contribution margin: price minus cost of goods, shipping, payment fees and an allowance for returns. Fixed costs are covered by the total contribution at the end of the month. They don’t belong in a per-click decision.

Breakeven is a floor. A campaign sitting exactly at breakeven ROAS pays Google every dollar the order would have earned you. If you set target ROAS at breakeven, you’ve asked the algorithm to buy sales for no profit, and it will do exactly that.

An illustrative example

Made-up round numbers, not a client.

Per orderAmount
Order value$100
Cost of goods$45
Shipping$8
Payment fees$3
Returns allowance$4
Contribution margin$40 (40%)
Breakeven ROAS2.5 (250%)

Now decide what you want to keep per order after ads. Say $15. That leaves $25 you’re willing to pay Google for the order, so the target is $100 ÷ $25 = 4.0, a 400% target ROAS. That’s the number that goes into the campaign, and you can only reach it from contribution margin and a profit goal, not from breakeven.

Now split the store into two products at the same $100 price:

ProductContributionBreakeven ROASResult at a 400% target ($25 ad cost)
A$601.67+$35 per order
B$205.0−$5 per order

Target ROAS sees $100 of conversion value from either one. It has no idea that product B loses money at 400%. If B converts more easily, Smart Bidding will happily push more spend into it, the account still reports 400%, and the bank balance tells a different story. A single target only works when margins sit close together. Most catalogs don’t.

How to give Google the margin

There are four ways to close that gap, and they differ a lot in effort and in what they do to your reporting.

MethodWhat changesEffortThe catch
Margin bands in custom labelsSeparate campaigns or asset groups per band, each with its own ROAS targetLowCoarse, and splits conversion data
Profit as the conversion valueConversion value becomes contribution, so ROAS reads as profit on ad spendMedium to highRevenue disappears from the value column
Cost of goods in Merchant CenterGross profit reporting in Google AdsLow to mediumReporting only, unless the profit goal is available to you
Conversion value rulesMultiplies values by audience, location or deviceLowNo product condition, so it can’t express product margin

Custom labels by margin band. Merchant Center gives you five custom label attributes, custom_label_0 to custom_label_4, for grouping products in Performance Max, Shopping and Demand Gen campaigns. Each product takes one value per label, and each label allows up to 1,000 unique values across the account (Custom label 0–4, as of 2026-10-24). Put a margin band in one label (high, mid, low), push it through a supplemental feed so you don’t have to touch the main feed, and then give each band its own campaign or listing group with a ROAS target worked out from that band’s contribution. The cost is data: three campaigns each learn from a third of the conversions. Google wants at least 15 conversions in the past 30 days for target ROAS on Search and Shopping (About Target ROAS bidding, as of 2026-10-24), and a thin band can fall below that.

Profit as the conversion value. Instead of sending the order total, you send what the order contributes. Google describes value-based bidding as maximizing value “such as sales revenue or profit margins” (Conversion values best practices, as of 2026-10-24). Once the value is profit, breakeven is a ROAS of 100% for every product, and one target works across the whole catalog, because product B now reports $20 and product A $60. This is the setup I prefer when the data allows it. It has three costs. Revenue no longer sits in the conversion value column, so you need it from somewhere else (a secondary action, GA4, or Shopify itself). Margins sent through a browser tag are visible to anyone who opens developer tools, so where that matters I calculate the value server side. And you need cost data per product that someone keeps up to date.

Cost of goods in Merchant Center. The cost_of_goods_sold attribute takes a number plus currency, like “10.01 USD”, and Google says it’s for reporting and doesn’t need to be exact (Cost of goods sold, as of 2026-10-24). Combined with conversions with cart data, Google Ads can report gross profit next to revenue, but only if the item IDs in your conversion tag exactly match the IDs in your feed. Without the attribute, you won’t see COGS and gross profit metrics (Provide the COGS feed attribute, as of 2026-10-24). On its own, this changes the reporting, not the bidding. Google has described profit goals as a beta for Performance Max and Standard Shopping (holiday optimization tips, August 27, 2024). Check whether your account has it before planning around it. Note too that Google’s gross profit is revenue minus COGS, which still leaves out shipping, fees and returns.

Conversion value rules. These adjust values in real time for Smart Bidding, but the conditions are audiences, locations and devices (About conversion value rules, as of 2026-10-24). Useful for new versus returning customers, useless for product margin.

At Texonica we use profit-based conversion values for some clients and margin bands for others. The choice depends on how good the cost data is and on how many conversions the account has to spread around.

How to set this up

  1. Build contribution margin per product or category. Pull cost of goods from Shopify or your ERP, then average shipping, payment fees and the return rate per category. Leave fixed costs out. Category-level costs are enough to start.
  2. Calculate breakeven per band. 1 ÷ contribution margin. Anything above 5 (a margin under 20%) is a warning sign for paid search on those products.
  3. Set a profit goal, then the target. Decide what you want to keep per order and work the target back from it, like the 400% in the example. Breakeven is the line you never cross, not the target.
  4. Add cost of goods to Merchant Center and check that cart data reaches Google Ads with matching item IDs. Even if you bid on revenue, the gross profit columns show which campaigns pay their way.
  5. Choose one method. Margin bands if conversions are limited or costs are rough. Profit as the conversion value if you have the volume and reliable cost data. Don’t run both on the same products, or you’ll set ROAS targets on two scales at once.
  6. Re-scale the target when the value changes. If you switch from revenue to profit values, a 400% revenue target at a 40% margin becomes roughly 160%. For Search, Google recommends waiting one to two conversion cycles after changing how conversion value is reported before using target ROAS (About Target ROAS bidding, as of 2026-10-24).
  7. Reconcile with Shopify every month. Compare conversion value and order counts in Google Ads with net sales after refunds in Shopify. If they drift apart, the margin logic is only as good as the tracking under it, and the Shopify conversion tracking audit is where I start.

Margin spread also matters when choosing campaign types; it’s one of the three checks in Performance Max vs Standard Shopping.

Conclusion

Breakeven ROAS tells you where the loss starts. Work it out from contribution margin, not gross margin and not net margin with fixed costs, and set the target from the profit you want to keep. When margins vary across the catalog, give Google the margin, through labels or through the conversion value itself, or it will keep optimizing revenue for you. The analytics side (cart data, server-side values, reconciliation) is often the bigger part of the job. If you want help with either, it’s part of my Google Ads for e-commerce work. Schedule a call and bring your margins per category.

With Texonica, you get less hype more results.

We are determined to make your business successful. Reserve your free-no-obligation strategy session today.

Schedule a Call