Custom labels are the most underused levers in Google Shopping campaign management. Most merchants set them up once with basic values, then forget about them. Advanced practitioners treat custom labels as dynamic, rule-driven data that automatically reflects the current commercial reality of their catalogue.

The five label dimensions that matter

  • custom_label_0: Margin tier — premium / standard / low-margin — the single most impactful label for bid control
  • custom_label_1: Seasonality — autumn-winter / spring-summer / evergreen / gift-season
  • custom_label_2: Stock velocity — fast-mover / standard / slow-mover / clearance
  • custom_label_3: Promotional status — on-sale / full-price / bundle-offer
  • custom_label_4: Product lifecycle — new-arrival / bestseller / established / end-of-line

Margin tier: the highest-impact label

Segment your catalogue into bidding tiers based on contribution margin or price:

  • premium (price > £100 or margin > 50%) — bid 3x more aggressively
  • standard (price £30–£100) — standard bid
  • low-margin (price < £30 or margin < 25%) — bid conservatively

In Trajekt: IF price > 100 THEN custom_label_0 = "premium" ELSE IF price > 30 THEN custom_label_0 = "standard" ELSE custom_label_0 = "low-margin". Updates automatically on every feed run. Efficiency gains from this single label often deliver 20–40% ROAS improvement within the first month.

Promotional status: set it automatically

IF sale_price is not empty AND sale_price < price THEN custom_label_3 = "on-sale" ELSE custom_label_3 = "full-price". This rule updates automatically when products go on or off sale in your store — no manual label changes needed during promotions.

The compounding effect of all five labels

A product can be: custom_label_0: premium / custom_label_1: autumn-winter / custom_label_2: fast-mover / custom_label_3: full-price / custom_label_4: bestseller. That combination tells you to bid very aggressively right now. No campaign restructuring needed; the labels do the decision-making.

Building a label hierarchy that works with your campaign structure

Custom labels are only as useful as the campaign structure built around them. A common mistake is setting up excellent label logic but not creating corresponding product groups in Google Ads to segment by them. The label is just metadata — the bid differential only exists when you create a campaign or ad group split that uses it.

A workable starting structure: one Shopping campaign with product group splits first by custom_label_0 (margin tier), then within each margin tier by brand or category. This means high-margin products across all brands get higher bids than low-margin products — the single change most likely to improve ROAS on a catalogue with mixed margins.

Seasonal label rotation

Custom labels are static values in any given feed run — they don't automatically update based on dates. Seasonal rotation (switching from "aw26" to "ss27" in spring) requires either a manual rule update in your feed tool or a conditional rule based on collection membership. In Trajekt, the cleanest approach is to use Shopify collections or WooCommerce categories as the seasonal signal: IF in collection "Summer 2026" THEN custom_label_1 = ss26. When you move products between collections as seasons change, the labels follow automatically on the next feed refresh.

Auditing label distribution before using them for bidding

Before setting any bid differential based on a custom label, pull a product segment report in Google Ads filtered by that label and check the distribution. A margin-tier label that puts 95% of your products in "low-margin" and 5% in "high-margin" is either correctly reflecting your catalogue or incorrectly calibrated — you need to know which before bidding higher on the 5%. Supplement with your actual margin data from your ERP or inventory system to validate that the label logic matches reality.

Maintaining label consistency

The biggest trap: inconsistent values. "high-margin" and "High Margin" and "high margin" are three different product group filters in Google Ads. Use lowercase, hyphens for spaces, and set values through rules — never manually.

Set custom labels automatically via rules

Trajekt's rules engine sets all five custom label fields on every feed refresh — based on price, sale status, product type, stock level, or any other field in your data.

Start free →