string custom

custom_label_0

The first of five free-text custom label fields you can use to tag products with your own segmentation logic — margin tiers, ROAS bands, seasonal flags, anything that's useful for product set rules or campaign segmentation.

Also known as: custom_label , custom label 0

Channel support

Channel Status Field name Notes
Google Merchant Center Optional custom_label_0 Docs →
Meta Commerce Manager Optional custom_label_0 Used as a product set rule filter in Advantage+ Catalog Ads.
TikTok Shop Optional custom_label
Pinterest Catalog Optional custom_label_0
Amazon Not supported
Bing Merchant Center Optional custom_label_0

Why it matters

Custom labels are how you encode business intelligence into the catalog. Google Ads, Meta, and Pinterest all use them as product set / product group rule inputs, which means custom labels are the lever between 'all products' and 'this campaign should bid more on these specific products.'

Custom labels are the lever between "all products" and "Advantage+ should bid differently on these specific products". Without them, your ad campaigns target the whole catalog or hand-curated product lists. With them, your campaigns target dynamic segments driven by feed data — Champions (high-ROAS items), Cash Cows (high-margin items), New Arrivals, Promo, Stockout-Prone — and the segments update themselves as the underlying data changes.

The convention that works: each label slot encodes one stable dimension. `custom_label_0` for ROAS tier (Champion, Climbing, Stable, Underperforming). `custom_label_1` for margin tier (premium, standard, clearance). `custom_label_2` for inventory state (in-stock, low-stock, out-of-stock). `custom_label_3` for campaign-tagged groupings (BFCM-2026, summer-2026). `custom_label_4` for ad-hoc experiments. Pick a convention, document it, and don't deviate — once 50,000 SKUs are tagged, changing the scheme is painful because every campaign rule that references the slot has to be updated in lockstep.

The ROAS-tier pattern is the most common starting point and the most operationally valuable. Pull Google Ads metrics over a 30-day lookback window, calculate ROAS per SKU, bucket into four tiers based on category-specific thresholds: Champion (>4x ROAS), Climbing (2-4x), Stable (1-2x), Underperforming (<1x). The campaign then has four product groups with very different bid strategies. Champions get aggressive bids and broad audience exposure; Underperformers get conservative bids or get paused entirely. The same revenue gets earned with substantially less spend.

For Champion-tier items, the strategic question is whether to push more (gain more impressions and convert better) or maintain (preserve margin on already-converting items). Most accounts under-spend on Champions because manual bid management can't keep pace with daily ROAS shifts. The label-driven approach lets Smart Bidding pursue volume on Champions while protecting margin elsewhere.

Updates need to be automated. ROAS tiers should rebucket weekly from Google Ads metrics; margin tiers from your finance data; inventory states from your stock system. Manually re-tagging custom labels across a sizeable catalog is unsustainable, and the labels become stale within weeks. Tools that pull metrics, apply rules, and write labels back to the feed (Performance Labels does this) are how this scales. The cadence matters: weekly rebucketing catches genuine performance shifts; daily rebucketing chases noise.

For consistency across SKUs, the case-sensitivity rule matters more than most teams realise. "Champion" and "champion" and "CHAMPION" are three different values to Google's classifier. A product set rule "custom_label_0 = Champion" misses items tagged "champion". Pick one canonical casing — convention is Title Case — and enforce at the label-writing layer. Don't trust SKU-by-SKU consistency; enforce it programmatically.

Below the 30-SKU threshold per product group, Advantage+ and Smart Bidding don't have enough signal to optimise effectively. If your Champion tier has 20 items, Smart Bidding can't distinguish their performance from noise. This means category-specific thresholds for ROAS tier definitions — small high-volume categories use higher Champion thresholds (more selective) so the tier has fewer but more clearly-winning items; large low-velocity categories use lower thresholds (more inclusive) so the tier reaches scale.

Format rules

  • Free-form string, max 100 characters

    Applies to: Google Merchant Center, Meta Commerce Manager, Pinterest Catalog, Bing Merchant Center

  • Consistency across SKUs matters — 'Champion' and 'champion' are treated as different values

    Applies to: Google Merchant Center, Meta Commerce Manager, Pinterest Catalog, Bing Merchant Center

Valid examples

Champion

Performance tier — high ROAS products

high-margin

Margin classification

new-arrival-30d

Time-based flag

Common mistakes

(varies per SKU with no pattern)

Unstructured labels can't power product set rules

Champion, high-margin, new-arrival

Comma-separated — can't filter on multiple values in one field

FAQ

What's the difference between custom_label_0 and the other four?

None at the system level — Google treats them identically. The convention is: each label slot encodes one dimension. `custom_label_0` for ROAS tier, `custom_label_1` for margin tier, `custom_label_2` for inventory state, etc. Pick a convention and document it.

How often should custom labels update?

Depends on what they encode. Performance-based labels (ROAS tier) should update at least weekly. Margin labels can update monthly. Seasonal flags update when the season changes. Whatever the cadence, automate it — manually re-tagging 50,000 SKUs by hand isn't sustainable.

Can custom labels be numeric?

Stored as strings, but you can put numbers in them. Channels do string comparison, so `10` and `9` will sort lexically (`'10' < '9'` because `'1' < '9'`). Zero-pad if you want numeric sorting (`'009'`, `'010'`).

Should I leave custom labels blank for some SKUs?

Yes when the dimension doesn't apply. A 'new-arrival-30d' flag should be empty for products older than 30 days, not 'old' or 'mature.' Empty is a valid value and your product set rules can filter on 'is set' or 'is not set'.

Last reviewed: 26 May 2026

Free plan · No card

Why wait? Try it free today.

Stop managing feeds manually. Start optimising with AI in 30 seconds.

  • Free plan, no credit card required
  • 1 brand, 1 feed, 100,000 products per feed
  • Full AI Product Optimisation, Rule Engine, and 200+ channel exports
  • Pay only for AI credits when you need them