
Group products by margin tier and give each its own campaign, budget, and target ROAS — never blend them. Set a higher ROAS target on thin-margin items so they only sell at a profit, a lower one on fat-margin products to scale volume. Profit, not blended ROAS, decides the budget.
- A single blended ROAS target across mixed-margin products overspends on cheap-to-sell items and starves the profitable ones — segment by margin tier instead.
- Required ROAS to break even is 1 ÷ gross margin: a 20% margin needs roughly 5x ROAS to profit, a 60% margin only needs about 1.7x.
- Google's algorithm optimizes for revenue by default, so a 5x return on a 15%-margin product can still lose money on every sale.
- Most Shopify stores ($39-$399/mo) can pass cost or margin data into the Merchant Center feed as a custom label or supplemental column to drive tiered bidding.
- Canadian retail CPCs typically run around $1-$2, so thin-margin products have very little room between click cost and gross profit.
- Performance Max lets you split mixed-margin catalogs into separate asset groups or campaigns with their own ROAS targets — you rarely need to exclude low-margin items entirely.
Group products into margin tiers, not one campaign
Start by sorting your catalog into three or four margin bands — for example, under 25%, 25-45%, and over 45% gross margin — and give each band its own campaign or asset group with its own budget and target. The instinct to dump everything into one Shopping or Performance Max campaign with a single ROAS goal is what quietly drains profit: Google can't tell a 15%-margin accessory from a 60%-margin flagship, so it spends wherever revenue comes cheapest, which is almost never where your profit lives.
The math is simple. Your break-even ROAS is 1 divided by your gross margin. A product with a 20% margin needs roughly a 5x return just to break even; a 60%-margin product breaks even at about 1.7x. If you set one blended 4x target, the high-margin items are wildly profitable and under-funded, while the thin-margin items lose money on every order at that same 4x. One number can't serve both.
In Google Ads, tag each product with a custom label in your Merchant Center feed — `custom_label_0` = "high", "mid", "low" margin — then build campaigns that filter on those labels. In Performance Max, use separate asset groups or, better, separate campaigns per tier so each gets its own target ROAS and budget. This also lets you write tier-appropriate creative: clearance energy for thin-margin movers, brand and quality messaging for the products that actually pay your bills.
Feed your real margins and costs into Google
Tell Google what each product actually earns you, not just what it sells for, so the algorithm optimizes toward profit instead of revenue. Out of the box, Smart Bidding maximizes conversion value — and "value" defaults to the order's revenue. A 5x ROAS on a $100 sale looks identical to the system whether that sale nets you $50 or $8. You have to supply the missing piece.
The cleanest fix is to add cost-of-goods data to your Merchant Center feed via the `cost_of_goods_sold` attribute. With that in place, Google can report and, in supported setups, optimize toward gross profit rather than top-line revenue. If your platform can't pass COGS cleanly, the practical workaround is conversion-value rules or custom labels that approximate margin: bucket products by margin band, then set each band's value or ROAS target to reflect its real profitability.
Most Shopify and WooCommerce stores can export a cost or margin column without custom development — Shopify stores cost-per-item natively, and the main work is mapping it into the feed or a supplemental feed. Keep that data fresh: if your supplier prices, shipping, or promo discounts shift your margins, stale cost data sends the algorithm chasing the wrong products. A quarterly margin refresh is a reasonable minimum; for stores with volatile sourcing costs, monthly is safer. The goal is that every bid decision Google makes is anchored to a number that reflects what lands in your bank account, not what rings up at checkout.
Set per-tier targets and judge by total profit
Give each margin tier a ROAS target above its break-even point, then scale budget toward whichever tier produces the most absolute profit — not the highest ROAS. High-margin products can run at a relatively low ROAS target and still print money, so they tolerate aggressive bidding and deserve the largest, most flexible budget. Thin-margin products need a deliberately high ROAS target that forces the algorithm to only buy clicks that convert efficiently; if they can't hit it, that's the system protecting you, not failing.
Watch the trap of optimizing for ROAS alone. A campaign hitting 8x on a low-volume, high-margin niche might generate less total dollars of profit than a 3x campaign moving serious volume of mid-margin stock. ROAS is a guardrail; total gross profit after ad spend is the scoreboard. Build your reporting so you can see profit per tier, then move budget toward the tier with the most room to grow profitably.
Low-margin and loss-leader products still earn a place in the mix — just with a job other than direct profit. If a cheap entry product reliably brings in first-time buyers who reorder higher-margin items, its value lives in repeat purchase and lifetime value, and you can fund it accordingly with a looser target. The discipline is naming that role explicitly and tracking it, rather than letting low-margin SKUs eat budget by accident. SearchPod builds this margin-aware structure into client accounts and reports profit by tier, because a clean blended ROAS number can hide an unprofitable catalog underneath it.
Mistakes that quietly erase your margin
The most expensive error is running a mixed-margin catalog on one campaign with one target and trusting the blended ROAS — it almost always hides thin-margin SKUs losing money under the cover of a few fat-margin winners. By the time the blended number dips, you've already burned weeks of spend on products that can't carry their own click cost, especially at Canadian retail CPCs of roughly $1-$2 where a thin-margin item has almost no daylight between cost-per-click and gross profit.
A second common mistake is fragmenting too far. Splitting a small catalog into a dozen tiny campaigns starves Smart Bidding of the conversion data it needs to learn — each campaign needs enough conversions per month to optimize. Three or four well-fed margin tiers beat fifteen anemic ones. Match the number of tiers to your conversion volume, not to how granular your spreadsheet can get.
Third, people forget shipping, returns, and discounts when they calculate margin. A 40%-margin product that ships free and gets returned 15% of the time may behave like a 25%-margin product in reality. Build your margin tiers on net contribution after those costs, not the gross figure on a product page. Finally, don't set targets and walk away — supplier costs, promotions, and seasonal demand move margins constantly, and a target that was right in spring can be unprofitable by the holiday rush. Revisit tier assignments and ROAS targets on a regular cadence so the structure keeps reflecting reality.
Related questions
Usually no — exclude only as a last resort. The better move is to put low-margin products in their own campaign or asset group with a deliberately high ROAS target, so Google only buys clicks that convert profitably for them. Exclude entirely only if a product can't hit break-even even at a tight target and serves no role in attracting repeat or higher-margin buyers. Many thin-margin items earn their place as first-purchase or lifetime-value drivers, not as direct-profit products.
Start from break-even, which is 1 divided by the product's gross margin, then add a profit buffer. A 20%-margin product breaks even near 5x, so you might target 6-7x; a 50%-margin product breaks even near 2x, so 2.5-3x can still be very profitable. Set each tier's target above its own break-even, never use one blended target across tiers, and adjust based on how much budget you want each tier to actually win.
Add cost-of-goods data to your Merchant Center feed using the cost_of_goods_sold attribute, which most Shopify and WooCommerce stores can populate from existing cost-per-item data. With COGS in the feed, Google can report and optimize toward profit instead of revenue. If your platform can't pass clean cost data, use custom labels to bucket products by margin band and set conversion-value rules or per-tier targets that approximate each band's real profitability.
Because ROAS measures return on revenue, not profit. A blended 5x ROAS across mixed-margin products can lose money if much of the spend goes to thin-margin items where 5x is below break-even. Google optimizes for revenue by default, so without margin or COGS data it favors whatever sells cheapest, which is often your least profitable stock. Segment by margin tier and judge each tier on profit after ad spend, not on the blended number.
Want a second opinion on your situation?
Get a free, no-obligation proposal. We’ll look at your site and your market and tell you honestly what we’d do — and what we wouldn’t.
Get Free Proposal →