How to Use Feed Labels, Custom Labels, and the 40-Variant Rule to Stop Your Products From Cannibalizing Each Other
Your Google Shopping products are fighting each other.
Every time you group 100+ variants in one segment, you're funding both sides of an internal war. Google runs a lottery among YOUR products before the external auction even starts.
The result? Your best-fit product might not show. Quality Scores drop. CPCs rise. You pay more for worse results.
We've seen it across dozens of accounts. A hammock brand with 200 SKUs? Performed better split into 8 segments of 25 variants than 2 segments of 100. Same budget. Same products. Completely different results.
The fix isn't complicated. But it requires understanding something most advertisers miss:
Feed labels and custom labels aren't the same thing. They're layers in an architecture. And when you stack them correctly, you get surgical control over which products Google shows, to whom, and with what budget.
This guide shows you exactly how to build that architecture.
This guide is for: E-commerce advertisers running Shopping or Performance Max with 100+ SKUs who want more control over product-level performance.
Time to implement: 2-4 weeks for full architecture. Immediate improvements from proper segment sizing.
Here's what happens when you stuff 100+ variants into one segment:
Step 1: A search query comes in (e.g., "outdoor hammock with stand")
Step 2: Google looks at your segment. 100+ products could match.
Step 3: Google runs an internal auction among YOUR products to pick which one to show.
Step 4: Your best-fit hammock might lose to a lower-margin option or an out-of-stock variant.
Step 5: You pay for a click that converts poorly (or not at all).
Step 6: Google's algorithm learns from that bad signal. It shows similar "bad fits" in the future.
Step 7: Quality Score drops. CPCs rise. You bid more for worse results.
This is the cannibalization chain. It compounds over time. And it's invisible unless you know what to look for.
These aren't cherry-picked outliers. This is what happens when you give Google's algorithm fewer (but better) options.
Most advertisers treat "feed labels" and "custom labels" as interchangeable terms. They're not.
Feed labels:
Custom labels:
When you understand this distinction, you can build a two-layer system:
Most advertisers use one or the other. The best results come from using both.
We call our framework "The 4-Layer Feed Architecture." It's how we structure multi-feed Shopping accounts that need maximum control without maximum complexity.
Think of it like building a skyscraper. Each layer supports the next.
What it is: Structural segmentation at the data source level in Google Merchant Center.
Why it matters: Feed labels determine which products can enter which campaigns. This is your immutable framework. Once set, you can't change a feed's label without creating a new feed.
Typical use cases:
Impact: Creates clean campaign boundaries. Prevents cross-contamination between product universes.
What it is: A hard cap of 40 variants per segment (target 25-35) within any campaign or asset group.
Why it matters: This is where most accounts bleed money. Too many variants = Google can't determine which to show. Quality Score drops. CPCs rise.
The numbers:
Impact: 15-30% CPC reduction in properly sized segments. Immediate performance improvement.
What it is: Dynamic custom labels that sort products by real-time performance.
The 4-tier system (our naming):
Why it matters: Products should flow between tiers based on actual results. A Sleeper can become a Winner. A Winner can become a Laggard. Static segmentation misses this.
Impact: Budget automatically flows toward what works. 10-30% ROAS improvement.
What it is: Same ROAS target across all segmented campaigns, but different daily budgets.
Why most people get this wrong: They set different ROAS targets for different tiers. This creates competing optimizations. Smart bidding gets confused.
The correct approach:
Impact: Lets smart bidding optimize without internal conflict. Budget controls priority, not ROAS targets.
┌─────────────────────────────────────────────────────────────┐
│ LAYER 1: Feed Labels (GMC) │
│ ├── FEED-US-BRAND → Brand Campaign │
│ ├── FEED-US-CATEGORY1 → Category 1 Campaign │
│ └── FEED-US-CATEGORY2 → Category 2 Campaign │
│ │
│ LAYER 2: 40-Variant Rule (within each campaign) │
│ └── Each segment: 25-35 variants max │
│ │
│ LAYER 3: Performance Buckets (custom labels) │
│ ├── Winners → Asset Group 1 │
│ ├── Risers → Asset Group 2 │
│ ├── Laggards → Asset Group 3 │
│ └── Sleepers → Asset Group 4 │
│ │
│ LAYER 4: Budget Orchestration (Google Ads) │
│ └── Same ROAS target, different budgets per tier │
└─────────────────────────────────────────────────────────────┘
Use separate feeds when:
Use a single feed when:
Feed labels must follow Google's rules:
Recommended format: [COUNTRY]-[CATEGORY]-[TYPE]
Examples:
US-OUTDOOR-BRANDUS-INDOOR-GENERALUK-OUTDOOR-SALEDE-ALL-PRODUCTSKeep labels descriptive but short. You'll reference these in Google Ads.
Prerequisites: Enable "Advanced data source management" in Merchant Center Add-ons
Mistake 1: Creating too many feeds
Mistake 2: Inconsistent naming
US_Products, usa-brand, US-OUTDOORMistake 3: Forgetting to enable Advanced data source management
In Google Ads:
What you're looking for:
Option 1: Use existing attributes
Option 2: Create custom labels for segmentation
Example: Hammock brand with 200 SKUs
Before:
After:
Same 200 SKUs. 8 campaigns instead of 2. Each segment: 25-35 products.
Why 25-35?
Below 20: You're over-segmenting. Not enough products for Google to learn from. Data gets diluted across too many small groups.
20-25: Acceptable for very specific, high-margin product lines.
25-35: Sweet spot. Enough variety for Google to match queries. Small enough to prevent cannibalization.
35-40: Upper acceptable range. Watch for performance drops.
40+: You're back to cannibalization. Split this segment.
Don't segment when:
In these cases, start with broader segments and refine as data accumulates.
We use four performance tiers. Our naming differs from other systems, but the logic is consistent:
Winners (custom_label: WINNER)
Risers (custom_label: RISER)
Laggards (custom_label: LAGGARD)
Sleepers (custom_label: SLEEPER)
Step 1: Create your supplemental data source
Step 2: Structure your supplemental feed
Required columns:
id (must match primary feed product IDs)custom_label_X (where X is 0-4)Example Google Sheet:
| id | custom_label_0 |
|---|---|
| SKU001 | WINNER |
| SKU002 | RISER |
| SKU003 | LAGGARD |
| SKU004 | SLEEPER |
Step 3: Map the supplemental feed
custom_label_X columnStep 4: Schedule updates
How to assign products to tiers (based on last 30 days):
| Tier | ROAS vs Target | Clicks | Conversions |
|---|---|---|---|
| Winner | 125%+ of target | 50+ | 5+ |
| Riser | 75-124% of target | 25+ | 2+ |
| Laggard | Below 75% | 25+ | 1+ |
| Sleeper | Any | Under 25 | Any |
Adjust thresholds based on your volume. High-volume accounts can use stricter criteria.
Manual approach:
Semi-automated approach:
Fully automated approach:
Automation is useful, but sometimes you know better than the algorithm:
Override to Winner:
Override to Laggard:
Override to Sleeper:
This is counterintuitive. Most advertisers think: "Winners should have higher ROAS targets. Sleepers should have lower ones."
That's backwards.
When you set different ROAS targets, you create competing optimizations. Smart bidding in one campaign optimizes against a different standard than another campaign. Products can't flow between tiers cleanly.
The correct approach:
Set the SAME target ROAS for all campaigns in your segmented architecture.
Control priority through BUDGET, not ROAS targets.
Example:
| Campaign | Tier | Daily Budget | % of Total |
|---|---|---|---|
| PMax-Winners | Winner | $500 | 50% |
| PMax-Risers | Riser | $200 | 20% |
| PMax-Laggards | Laggard | $150 | 15% |
| PMax-Sleepers | Sleeper | $150 | 15% |
Winners get the most budget. But the target is the same. Smart bidding optimizes toward 400% ROAS in all campaigns, with budget constraints determining which products get priority.
Conservative approach (prioritize profitability):
Growth approach (prioritize volume):
Testing approach (finding new Winners):
Adjust based on your goals. The percentages matter less than the principle: same target, different budgets.
Consistent naming makes reporting and management easier.
Format: [COUNTRY]_[TYPE]_[FEEDLABEL]_[TIER]
Examples:
US_PMAX_OUTDOOR_WINNERSUS_PMAX_OUTDOOR_RISERSUS_PMAX_OUTDOOR_LAGGARDSUS_PMAX_OUTDOOR_SLEEPERSOr if you don't use feed labels for structural separation:
US_PMAX_ALL_WINNERSUS_PMAX_ALL_RISERSWeekly check:
Monthly review:
Quarterly audit:
Day 1-2: Current State Audit
Day 3-4: Architecture Design
Day 5: Supplemental Feed Setup
Day 1-2: Create New Feeds
Day 3-4: Validate Structure
Day 5: Documentation
Day 1-2: Supplemental Feed Go-Live
Day 3-4: Campaign Restructure
Day 5: Variant Rule Compliance
Day 1-2: Soft Launch
Day 3-4: Full Launch
Day 5: First Week Review
Weekly (30-60 minutes):
Monthly (2-3 hours):
Quarterly (half day):
START: Do you sell in multiple countries?
├── YES → Use feed labels per country
└── NO → Continue
│
├── Do you have distinct product lines with different margins?
│ ├── YES → Consider feed labels per product line
│ └── NO → Continue
│ │
│ └── Do you need hard campaign boundaries?
│ ├── YES → Use feed labels
│ └── NO → Single feed is fine (use custom labels)
START: Segment has 40+ products
│
├── Can I split by brand?
│ └── YES → Split by brand (if creates 25-35 per group)
│
├── Can I split by product type?
│ └── YES → Split by product type
│
├── Can I split by price range?
│ └── YES → Split by price range ($0-50, $50-100, etc.)
│
└── None work? → Create custom label based on performance tier
START: Product performance (last 30 days)
│
├── 25+ clicks AND 5+ conversions AND ROAS > 125% target
│ └── → WINNER
│
├── 25+ clicks AND 2+ conversions AND ROAS 75-124% target
│ └── → RISER
│
├── 25+ clicks AND 1+ conversions AND ROAS < 75% target
│ └── → LAGGARD
│
└── <25 clicks
└── → SLEEPER
Layer 1: Feed Label Foundation
Layer 2: The 40-Variant Rule
Layer 3: Performance Bucketing
Layer 4: Budget Orchestration
Expected results:
The 4-Layer Feed Architecture isn't about complexity. It's about giving Google's algorithm the constraints it needs to make smart decisions on your behalf.
When your products stop fighting each other, your ROAS improves. When your budget flows to winners automatically, you scale profitably. When your architecture supports your goals instead of working against them, Google Shopping becomes the channel it should be.
Stop funding both sides of the war. Build the architecture. Let your products win.
For questions or implementation support, reach out on X/Twitter.