Derek VaalEcommerce PPC Consultant
Shopping and Merchant Center

How to Use Custom Labels to Structure Google Shopping Campaigns

Custom labels can turn a messy ecommerce catalog into useful Shopping campaign controls. Here is how I use margin, inventory, seasonality, and selling-rate data without creating a campaign for every product.

An ecommerce product catalog organized into Google Shopping groups by margin, inventory, seasonality, and selling rate.
On this page

Custom labels are one of the most useful parts of a product feed when you are trying to make Google Shopping campaigns reflect how the business actually works. They let you add a small amount of internal context to a product: its margin band, selling rate, inventory position, season, or lifecycle stage. That context can then help you decide which products deserve their own product group, budget conversation, or testing plan.

The mistake I see is treating custom labels as a reason to split everything. A label is not automatically a new campaign, and it is not a substitute for a clean product catalog. I use labels as a control layer between the store and the ad account. The store data tells me what matters commercially; the labels make that information usable inside Shopping or Performance Max.

Google supports custom labels as product attributes for grouping and campaign decisions. The official Merchant Center documentation on custom_label_0 through custom_label_4 is the best reference for the attribute rules and examples.

Start with the decision, not the label slot

Before I assign a meaning to custom_label_0, I write down the decision I want the label to support. Do I want to separate products with very different contribution margins? Do I need to protect budget for best sellers while testing newer products? Am I trying to avoid pushing a seasonal range after it has gone out of stock? Those are useful questions. “Let’s use all five labels” is not.

Custom labels are different from the product attributes you already use for catalog organization. Product type, brand, product category, item ID, and condition describe the product or its taxonomy. A custom label is your business’s own classification. It should carry information that is useful for merchandising, reporting, or bidding and that is not already represented clearly by the standard attributes.

If the question is whether a product line deserves a separate campaign at all, start with the product-line breakout framework. Custom labels can make a breakout easier to manage, but they should not be used to avoid making the underlying business decision.

Choose one durable definition for each label

Google allows up to five custom-label attributes, from custom_label_0 through custom_label_4. I prefer to give each slot one durable job across the account rather than changing its meaning from campaign to campaign. That keeps reports readable and prevents someone from looking at a label six months later and having to reverse-engineer what it meant at the time.

A practical starting framework for an ecommerce brand might look like this:

  • custom_label_0: selling rate or commercial priority, such as best seller, steady seller, new, or unproven.
  • custom_label_1: margin or contribution band, such as high margin, standard margin, or low margin.
  • custom_label_2: inventory position, such as in stock, limited stock, replenishment risk, or clearance.
  • custom_label_3: seasonality or promotion status, such as core, seasonal, holiday, or promotion.
  • custom_label_4: lifecycle, launch status, or price band when that information changes how you plan the account.

This is not a universal mapping. If margin is not reliable in the store, it should not be the first label. If inventory is stable and never affects budget, another label may be more useful. The important part is that each field answers a recurring question and that the values are understandable to whoever will maintain the feed.

Use Shopify or BigCommerce data as the input

I would normally start the framework in the store or the system that owns the catalog, not inside Google Ads. Shopify, BigCommerce, an ERP, or a product information system may already know which products are profitable, frequently returned, low in stock, newly launched, or part of a planned promotion. That makes platform data a better starting point for campaign breakouts than a guess based only on clicks.

For example, a product can have a strong ROAS and still be a poor candidate for more budget if the margin is thin, returns are high, or inventory is almost gone. A product with limited historical conversion data may still deserve a test if it has healthy margin, enough inventory, and a clear role in the merchandising plan. Labels help put those facts next to the paid search data instead of asking ROAS to answer every question.

I cover the measurement side of that process in the ecommerce PPC tracking guide. The label framework is only as useful as the store data and conversion data behind it.

Build the labels in the source system

Once the definitions are clear, create the values where the catalog is maintained. The exact implementation depends on the platform and feed setup. Some teams use product metafields or custom fields, some use a supplemental feed, and some apply feed rules to existing attributes. I do not have a preferred tool for its own sake. I want one source of truth, a clear owner, and a way to see what value a product received before it reached Merchant Center.

Keep values simple and consistent. “High margin”, “high-margin”, and “H” should not all mean the same thing in different rows. Use a controlled vocabulary, document the definitions, and avoid putting multiple concepts into one value. Google documents that a product can have one value for each custom-label attribute, so use separate slots when the decisions genuinely need separate dimensions.

For the feed-side checks I run before relying on a product classification, see the Merchant Center feed management guide. A label that never reaches the product data is not a campaign control; it is just a field in the store.

Map the labels into Shopping or Performance Max

In a Standard Shopping campaign, custom labels can be used to create product groups. That lets you compare or manage a defined set of products instead of treating the entire catalog as one pool. In Performance Max, the same product context can help you inspect product-group performance and understand which parts of the catalog are participating in the result.

Google explains the relationship between product attributes and product groups in its product and listing group documentation. I use that reference when checking whether a proposed split is actually available in the campaign type being used.

The mapping should follow a decision. If high-margin products need a different budget conversation, make that group visible. If clearance products should be controlled separately, make that group visible. If two labels produce groups that receive the same budget, the same target, and the same treatment, there may be no value in separating them yet.

The broader campaign role still matters. My guide to Google Shopping management for ecommerce brands covers the ongoing work of keeping campaign structure, product coverage, and business priorities aligned.

A practical framework for an apparel catalog

Imagine an apparel brand with core products, seasonal collections, limited inventory, and a few new styles. I might use the following values without creating a separate campaign for every category or SKU:

  • Selling rate: best-seller, steady, new, or low-signal.
  • Margin band: high-margin, standard-margin, or low-margin.
  • Inventory: healthy, limited, or clearance.
  • Season: core, warm-weather, cold-weather, or event-specific.
  • Lifecycle: launch, established, or end-of-line.

That gives me several useful views. I can look at best sellers with healthy inventory. I can keep a closer eye on high-margin products that are not receiving enough attention. I can separate seasonal products before a promotion and then remove the special treatment when the season is over. I can also find new products that have not earned enough data for a permanent breakout but still deserve a controlled test.

The values do not need to be complicated. In fact, simple labels are usually easier to maintain because the merchandising team can understand them and the PPC manager can use them. The hard part is agreeing on the definitions and updating them when the underlying business facts change.

Use a Catch All campaign to find missed opportunities

One tactic I like when introducing this structure is a Catch All Shopping campaign. The point is to give products that are not yet assigned to their own campaign or focused product group somewhere to collect data. Then I review what is showing up there instead of assuming the original taxonomy covered everything important.

If a product in the Catch All campaign is getting meaningful clicks, conversions, or useful demand signals, I ask why it was not in a more intentional group. Maybe the product is new. Maybe the feed value was missing. Maybe the business did not realize that the product was gaining traction. The Catch All campaign is not a replacement for structure; it is a safety net and a discovery mechanism.

Do not create a campaign for every label

A label is useful even when it stays inside one campaign as a reporting or product-group dimension. I would not create a new campaign just because a value exists. More campaigns introduce more budget decisions, more pacing problems, and more places for a feed change to create an unintended gap.

I usually hold back a campaign split when:

  • The group does not have enough activity to support a separate budget or target decision.
  • The products have the same economics and business priority as the group they would leave.
  • The source data is too unreliable to keep the group stable.
  • The split merely mirrors an existing attribute without changing how the account will be managed.
  • The only reason for the split is that the label is available.

I would rather have a small number of understandable groups than a beautiful spreadsheet that nobody trusts. Structure should make the next decision easier, not make the account look more sophisticated.

Validate the feed and the campaign before trusting the split

After the labels are added, I validate them in stages. First, I check a sample of products in the source system and confirm that the assigned values match the intended definitions. Next, I check the processed product data in Merchant Center. Google notes that updated custom-label values may take 24 to 48 hours to become available in Google Ads, so I do not assume a same-day feed change failed just because the product group has not updated yet.

Then I check the campaign itself:

  • Are the expected products present in the intended product group?
  • Are important products left in an excluded or unassigned group?
  • Does the campaign still cover products with different countries, destinations, or inventory states correctly?
  • Are the group names clear enough that someone else can understand the rule?
  • Do the reports let me compare spend, conversions, and value without confusing a product-group view with total campaign performance?

I also compare the new view with the store’s reality. If the campaign says a product is a best seller but the platform data says it has been idle for months, stop and investigate the data flow. If a low-margin group is taking most of the spend, that may be a strategy issue, a labeling issue, or a measurement issue. The label does not tell you which one; it gives you a better place to ask the question.

That validation is part of a wider audit sequence. I explain the rest of the process in what I check before recommending Google Ads changes.

Common custom-label mistakes

Changing the definition without changing the documentation

If custom_label_1 meant margin last quarter and now means price band, old reports become difficult to interpret. Either keep the definition stable or treat the change as a new version with a clear date and explanation.

Using ROAS as the only label input

ROAS is useful, but it is an advertising outcome, not a complete merchandising decision. It does not automatically account for margin, returns, inventory, or the role a product plays in the catalog. Use it alongside the platform data rather than pretending it is the business model.

Creating too many unique values

Google documents a limit of 1,000 unique values per custom-label attribute. Even before reaching that limit, a field with hundreds of values stops being a practical management tool. Use bands and categories when the decision does not require product-by-product values.

Changing labels too often

Frequent changes can make trends harder to read and can cause products to move between groups before there is enough time to learn from the setup. Update labels when the business state changes, not because you feel pressure to keep optimizing the taxonomy every week.

For Performance Max specifically, I also look at the campaign’s inputs and product coverage during PMax cleanup. A label will not fix a conversion setup, a missing product set, or an unclear campaign role.

My rule for deciding whether a label is working

A custom label is doing its job when it helps me answer a real question faster: where should the next dollar go, which products need protection, which products deserve a test, or which part of the catalog needs attention? If I cannot name the decision, the label probably does not need to exist yet.

Start with the store data you trust, assign each label one clear meaning, keep the values stable, and use a Catch All campaign to find what the initial structure missed. Then let performance data refine the framework over time. The goal is not to create the most detailed feed. It is to make Google Shopping campaign decisions line up more closely with how the business makes money and manages inventory.

If your catalog, feed, and campaigns have drifted apart, an ecommerce PPC audit can help identify which labels and breakouts are worth keeping before more structure is added.

Keep exploring