Custom labels are five optional feed attributes, custom_label_0 through custom_label_4 in a spreadsheet feed, or the equivalent five g colon custom_label tags in an XML feed, that let a merchant tag each product with arbitrary values used purely for campaign management, not customer display. Each label is free text up to 100 characters, and a single item can carry a value in all five simultaneously, with each one representing an independent way of slicing the same catalog. Google and Meta never show these values to shoppers; they exist only so Shopping and catalog campaigns can be split and bid on by whatever dimension a merchant chooses to define.

Why Custom Labels Matter

Neither google product category nor product type can capture business context like margin, seasonality, or inventory age, because both are built around what a product is rather than how it's currently performing. Custom labels fill that gap: a merchant can tag high-margin items separately from loss leaders, flag clearance stock, or mark bestsellers, all within the same google_product_category bucket. Skip this step and every product in a category gets bid on identically, which means a retailer either overspends protecting margin on cheap items or underspends on the ones actually worth pushing. Because the values are entirely merchant-defined, custom labels are also what makes automated bid strategies possible at a granularity Google's own taxonomy was never designed to support.

How Custom Labels Work

Each of the five labels is independent and carries no inherent meaning — Google doesn't know or care what custom_label_2 represents on any given account, which means the meaning has to be defined and documented by whoever manages the feed. Values are limited to 100 characters, are typically single short tokens like "high-margin," "Q4-seasonal," or "clearance" rather than full sentences, and Shopping campaigns use them for exact-match product group subdivision, so a typo or inconsistent casing between "Bestseller" and "bestseller" creates two separate groups instead of one. Because none of this is inferred from the product itself, populating the labels usually requires a feed rule that pulls the underlying value — margin percentage, days of inventory, sales rank — from a PIM or ERP field and maps it into a fixed label at feed generation time. Labels are meant to supplement, not replace, category data: google_product_category and product_type establish what a product is, and custom labels subdivide that group further along whatever axis actually matters for bidding.

Example

<item>
  <g:id>SKU-54021</g:id>
  <title>Stainless Steel Water Bottle 32oz</title>
  <link>https://example-shop.com/products/steel-bottle-32oz</link>
  <g:price>24.00 USD</g:price>
  <g:availability>in stock</g:availability>
  <g:google_product_category><![CDATA[Home & Garden > Kitchen & Dining > Tableware > Drinkware]]></g:google_product_category>
  <g:custom_label_0>high-margin</g:custom_label_0>
  <g:custom_label_1>bestseller</g:custom_label_1>
  <g:custom_label_2>Q3-2026</g:custom_label_2>
  <g:custom_label_3>in-stock-healthy</g:custom_label_3>
</item>

custom_label_4 is left off here entirely, which is normal — a merchant only needs to populate the labels that map to a dimension they actually plan to bid on.

Related Concepts

Custom labels only make sense once google_product_category and product_type are already in reasonably good shape, since they're meant to subdivide an existing, correctly classified group rather than fix a broken one. Once that foundation is solid, the labels become the main lever for turning arbitrary business logic into actual bid strategies inside a Shopping campaign. For a full framework on choosing what each label index should represent and structuring campaigns around them, see The Strategic Guide to Google Custom Labels for Smarter Bidding.