Custom Labels (Google Shopping)
Five free-form Google Merchant Center feed fields (custom_label_0–4) that segment products by margin, price, or bestseller rank for separate bidding.
Your Google Shopping campaign reports a 400% ROAS and the account still isn’t making money. Automated bidding chased the products that convert most easily, not the ones that earn the most per order.
Nothing in the feed told it which was which. That gap is what custom labels exist to close.
Five fields shoppers never see
Custom labels are five free-form attributes in the product feed - custom_label_0 through custom_label_4 - and you decide what values go in them: a margin tier, a bestseller rank, a clearance flag, a price band.
Google’s own documentation draws the boundary hard. The labels have no effect on search matching, and they never appear to shoppers. Each attribute holds up to 1,000 unique values, capped at 5,000 across all five and 1–100 characters each, and a label can stop syncing to Google Ads as it nears that ceiling.
They are supported in Performance Max, Shopping, and Demand Gen campaigns only. On their own they do nothing. A label is an index you attach to inventory; the structure you build on top is where it becomes a bid.
The profit leak sits in the bid, not the feed
Smart Bidding optimises toward conversion value, and without cost of goods in the account, “value” means revenue. A $15 accessory that converts easily outscores a $200 item that actually funds the business.
The arithmetic is what makes this expensive. A product at 55% margin can carry a 300% ROAS target; one at 18% margin needs closer to 600% just to clear ad cost, fulfilment, and returns, past its break-even ROAS. One blended target across both starves the profitable SKU and overpays for the cheap one.
Custom labels are how a brand writes that difference into the account. A Margin_40_plus tier takes an aggressive target; a thin-margin tier takes a defensive one.
Two accounts that rebuilt the feed around margin
KitchenLab worked with the agency Keybroker to map product margin by category into custom labels, then rebuilt the Shopping structure around priority and margin tiers. The first three months cut ad spend 35% and lifted traffic 18% while budget concentrated on the most profitable products, in a documented DataFeedWatch account.
IIH Nordic ran the more aggressive version. It tagged the high-margin products that also converted well, split them into their own priority campaigns, and reported revenue up 85% and transactions up 68%, with cost per click down 45% and conversion rate up 22%, in a separate DataFeedWatch case.
Both accounts moved the same lever: the label sorted the catalogue, and a rebuilt campaign structure spent against the sort.
The Performance Max catch the setup guides skip
“Label by margin and bid accordingly” quietly assumes Standard Shopping. Inside a single Performance Max campaign there is no bid to set per label - bidding runs at the campaign level, and listing groups only filter and report.
Google’s listing-group documentation is explicit that those groups subdivide products for reporting and inclusion, not for individual bids. So a brand that adds the labels and expects one PMax campaign to lean into high margin gets the blended average back - the exact outcome the labels were meant to prevent.
The workaround is structural. To give a margin tier its own target ROAS in Performance Max, the tier has to become its own campaign, filtered to that custom-label value. The label still does the sorting; a separate campaign is what carries the bid.
What the feed looks like from the ad side
You can read the catalogue those labels would sit in without ever seeing the labels themselves. Our Place runs 10 Google Shopping ads pulling from its Merchant Center feed, each leading with “from £45” - the entry-level Mini Always Pan - across a range that climbs to Wonder Ovens several times that price.
One target ROAS across that spread treats the £45 pan and the appliance as the same bet. Graza shows the other axis: its Google Shopping ads span olive oil, popcorn, and potato chips, three product lines whose margins have no reason to match.
The label is the only thing in the feed that can tell the auction they are different.
Where we've analyzed Custom Labels (Google Shopping)
Graza Has 128 Google Ads Spanning a Full Year. The Meta Account Is 11 Days Old.
128 Google ads across 12 months - EVOO cans, Amazon Shopping, a 20.74% Black Friday sale, and a video-only glass bottle launch. The platform where Graza has been experimenting long before Meta.
Our Place Runs 5 Countries on Meta. 42 on Google. One Ad Has Been Live for 3 Years.
703 Google ads across 42 countries. One ad running 1,103 days. Meta median age: 23 days. Google median in Europe: 650-750 days. Same brand, same products, two completely inverted playbooks.