Custom labels are the most powerful feed attribute most Shopify merchants have never used. They do not affect which queries your products match or how Google categorises your items. They do one specific thing: give you a way to group your products by any criteria you choose, and then bid differently on each group in Google Ads.
Without custom labels, you are either bidding the same way on every product, or creating separate campaigns for different product groups with all the management overhead that entails. Custom labels give you the segmentation without the fragmentation.
What Custom Labels Are
Custom labels are five free-form attributes in the product feed: custom_label_0 through custom_label_4. You define both the label names and the values. Google does not use these labels for product matching, categorisation, or quality scoring — they are entirely for your own use in Google Ads.
In Google Ads, you can create product group splits within a campaign based on custom label values. Each product group can have its own bid adjustment or, in Standard Shopping, its own specific bid.
Common custom label strategies:
- Margin tier:
high_margin,mid_margin,low_margin— bid more aggressively on products where you can afford higher CPA - Sale status:
on_sale,full_price— increase bids during sale periods or separate sale items from full-price products - Seasonality:
summer,winter,year_round— reduce bids on out-of-season inventory without pausing products entirely - Performance tier:
top_performer,average,low_performer— pull campaign data back into the feed to drive bidding decisions - Stock level:
high_stock,low_stock— reduce bids on products nearing the end of their inventory run - Product age:
new_arrival,established,clearance— treat launch products differently from catalogue staples
Each custom label can hold one value per product. If you need to segment along multiple dimensions (margin AND seasonality), use different label numbers for each dimension: custom_label_0 for margin tier, custom_label_1 for seasonality, custom_label_2 for sale status.
How to Add Custom Labels to Your Feed
There are three practical methods depending on your Shopify setup.
Method 1: Supplemental Feed via Google Sheets
A supplemental feed is a secondary file that Merchant Center reads alongside your main feed. You can use it to add attributes that are not in your main feed — including custom labels.
Step 1: Create a Google Sheet with two columns:
id— the product ID matching your main feed exactlycustom_label_0— the label value for that product
Populate the sheet with your product IDs and the label values you want to assign.
Step 2: In Merchant Center, go to Products, Feeds, click the + icon, and select Supplemental feed. Choose Google Sheets as the input method and connect your Sheet.
Step 3: Set the fetch schedule for the supplemental feed. Merchant Center will read from the Sheet on schedule and apply the label values to the matching products.
The supplemental feed approach works with any primary feed setup — the native Shopify app, DataFeedWatch, or any other feed source. It is also the most maintainable approach for labels that change frequently (sale status, stock level) because you can update the Sheet values and Merchant Center picks up the changes on the next fetch.
For large catalogs, the Sheet can be populated programmatically from your inventory management system or Shopify admin via the Shopify API and a Google Apps Script.
Method 2: Simprosys or DataFeedWatch
If you are using a third-party feed tool, custom labels are typically configured directly within the tool’s interface.
In Simprosys, there is a dedicated Custom Labels section where you define rules: “if product tag contains ‘high-margin’ then set custom_label_0 to ‘high_margin’.” This reads from Shopify tags, collections, product types, price thresholds, or any other Shopify field you have populated.
In DataFeedWatch, custom labels are set using the feed mapping interface. You can write conditional rules, lookup tables, and value transformations. If you have margin data in a secondary CSV file, DataFeedWatch can merge it with your Shopify data to populate margin-based labels.
The advantage of doing this in your feed tool: the labels update automatically when your source data changes. If you mark a product as ‘on_sale’ in Shopify, a Simprosys rule can detect that and apply the sale label to the feed without manual intervention.
Method 3: Shopify Product Tags (Simple Setup)
For the simplest possible implementation without a supplemental feed or paid tool: use Shopify product tags as the signal source and the native Google app’s basic feed rules.
Add a tag to your Shopify products (e.g., tag a product with “high-margin”). In Simprosys or a similar tool, create a rule: if Shopify tag contains “high-margin” then custom_label_0 = “high_margin.”
This is not available in the native Google and YouTube app (which does not support custom labels), but it works in Simprosys at low cost and minimal configuration complexity.
Setting Up Product Group Splits in Google Ads
Once custom labels are in your feed and Merchant Center has processed the update (allow 24 hours), set up product group splits in your campaigns.
In Standard Shopping:
Go to your campaign, then Products tab. You will see a product group for “All Products.” Click the + next to it to add a subdivision. Select “Custom label 0” (or whichever label number you used) as the subdivision attribute. Google Ads will show you the label values present in your feed — select each one.
You now have separate product groups per label value. Set individual bids for each group:
- high_margin: higher bid (you can absorb a higher CPA)
- mid_margin: medium bid
- low_margin: lower bid or exclude entirely if margin cannot support profitable advertising
In Performance Max:
PMax does not support product group bidding the same way Standard Shopping does. However, you can create separate asset groups and use product filters to include only products with specific custom label values in each asset group. This allows you to configure different audience signals, creative assets, and (at the campaign level) different ROAS targets per product segment.
For margin-based bidding in PMax specifically: the cleanest approach is separate PMax campaigns for high-margin and low-margin product groups, each with its own ROAS target. Custom labels are the product-level attribute that defines which products belong in each campaign via the product filter.
The Margin Label Strategy in Detail
This is the most impactful custom label use case for most stores.
Calculate the gross margin for each product or product category. Assign to tiers:
- High margin (>50% gross margin): aggressive bidding, can accept higher CPA
- Mid margin (30-50%): standard bidding
- Low margin (<30%): conservative bidding, high ROAS target required
The resulting campaign structure for Standard Shopping:
| Product Group | Bid | Logic |
|---|---|---|
| high_margin | Higher | More margin to absorb CPA |
| mid_margin | Standard | Balanced efficiency |
| low_margin | Lower | Requires high ROAS to be profitable |
For PMax, this translates to a higher ROAS target for low-margin products (they need more revenue per ad dollar to be profitable) and a lower ROAS target for high-margin products (you can afford more spend to acquire each conversion).
Without this segmentation, Google’s Smart Bidding optimizes toward a blended efficiency across all products. It may overinvest in low-margin products (which convert frequently at low AOV) and underinvest in high-margin products (which may convert less frequently but are more profitable per conversion). Custom labels with margin-based bidding corrects this imbalance.
Keeping Custom Labels Current
Custom labels that are not updated become stale and misleading. A product labelled on_sale three months after the sale ended will receive aggressive bids permanently. A high_stock label on a product that is almost sold out keeps bid pressure on inventory you cannot fulfill.
Build a maintenance schedule into your label strategy:
- Sale labels: update when sales start and end (automate this in your feed tool if possible using the
sale_price_effective_dateas a trigger) - Stock labels: refresh weekly from your inventory data
- Margin labels: refresh when COGS or pricing changes significantly
- Performance labels: refresh monthly based on Google Ads performance data
The supplemental feed approach makes updates straightforward — change the value in the Google Sheet and the next feed fetch applies it. Feed tool rules that read from Shopify data update automatically when Shopify data changes.
One Label at a Time
If you have not used custom labels before, start with a single dimension — margin tier is the highest-leverage starting point for most stores. Get that working, verify the product groups are appearing correctly in Google Ads, and measure the impact over 4-6 weeks before adding a second dimension.
Adding all five custom labels simultaneously across a catalog creates more complexity than most accounts can manage effectively. One well-maintained label that you actually act on is worth more than five labels that drift out of date and create noise.
Related Posts
Google Shopping Product Image Requirements: Why Images Get Disapproved and How to Fix Them
Google Ads for International Ecommerce: Multi-Country Campaigns, Currency, and Feed Setup
The Most Common Feed Errors in Google Merchant Center (and How to Fix Them)
Need Help With Your Google Ads?
I help e-commerce brands scale profitably with data-driven PPC strategies.
Get In Touch