Performance Max asset groups inherit feed structure flawsâespecially missing product_type hierarchiesâand systematically push low-margin SKUs. We audited $200k in wasted spend across three brands and found the same feed-level root causes every time.
We spent March analyzing three eight-figure DTC brandsâfurniture, activewear, skincareâall running hybrid PMax and Standard Shopping. Same complaint from all three heads-of-performance: budget was shifting to PMax, ROAS looked acceptable, but gross margin dropped 18-22% quarter-over-quarter. The culprit wasn't bidding, creative, or audience signals. It was their product feed architecture, and PMax asset groups amplified every structural flaw at scale.
The $200k Problem: Why PMax Promoted Our Worst Products
Brand one sold modular furniture. Their Standard Shopping campaigns used custom labels to separate hero SKUs (sofas, $800+ AOV, 42% margin) from accessories (throw pillows, $35 AOV, 18% margin). Performance Max launched in January with a single asset group covering "all products" and a feed missing hierarchical product_type values. By mid-March, 67% of PMax spend went to accessories under $50. Total incremental revenue looked fineâ$340kâbut net contribution after fulfillment and product cost was $61k. The same budget in their paused Standard Shopping campaigns historically delivered $140k contribution.
We pulled the feed. Every product had product_type set to the Shopify collection name: "Living Room," "Bedroom," "Accessories." No taxonomy. No parent-child structure. Per Google's official asset group documentation, PMax uses product_type and google_product_category to understand product relationships and allocate budget within asset groups. Flat categories mean the algorithm treats a $900 sectional and a $28 pillow as equivalently valuable inventory in the same group. It optimizes for conversion volume, not margin, and pillows convert faster at lower CPCs.
If your feed has single-level product_type values (e.g., "Shoes" instead of "Footwear > Athletic > Running"), Performance Max cannot differentiate product tiers within an asset group. It will default to promoting whatever converts fastest, regardless of unit economics.
Brand twoâactivewearâhad the inverse issue. They segmented asset groups by gender (Men's, Women's, Unisex), but their product_type field concatenated fabric and style: "Moisture-Wicking Leggings," "Cotton Tees," "Compression Shorts." No shared parent categories. PMax couldn't group "Leggings" under "Bottoms" or "Tees" under "Tops," so it treated 140 product variants as 140 distinct categories. Asset groups fragmented spend across micro-segments, none reaching learning phase. CPA climbed 34% month-over-month while Standard Shoppingâusing custom labels like label_0:high-marginâmaintained stable performance.
Here's the margin erosion we saw across all three brands in Q1 2026:
| Brand | Channel Mix Shift | Revenue Change | Gross Margin Î | Net Contribution Loss |
|---|---|---|---|---|
| Furniture (DTC) | +40pp to PMax | +12% | -22pp | -$87k |
| Activewear | +35pp to PMax | +8% | -18pp | -$63k |
| Skincare | +28pp to PMax | +6% | -19pp | -$52k |
The common thread: feeds structured for human browsing (Shopify collections, WooCommerce categories) but not algorithmic segmentation. Asset groups can't self-regulate without feed scaffolding.
How Asset Groups Inherit Bad Feed Architecture
Performance Max asset groups are not dumb. They surface signals from your feed, ad creatives, landing pages, and first-party data, then allocate budget dynamically. The problem is garbage in, garbage out. If your feed's product_type, custom_label_0-4, and item_group_id fields don't encode margin, velocity, or strategic priority, PMax interprets all inventory as equal and optimizes for the path of least resistanceâusually low-AOV impulse buys.
We see five feed architecture mistakes that sabotage asset groups:
-
Flat or missing
product_typehierarchy. Single-level values ("Apparel") prevent PMax from understanding product relationships. Google recommends up to five levels:Apparel & Accessories > Clothing > Activewear > Leggings > High-Waisted. -
No custom labels for margin tiers.
custom_label_0should segment high/medium/low margin.custom_label_1can encode seasonality or inventory risk. Without these, PMax can't distinguish between a hero SKU and a clearance item. -
Inconsistent
item_group_idusage. If you sell variants (color, size), all variants should share anitem_group_idand have uniqueidvalues. Broken grouping causes PMax to treat a blue shirt and a red shirt as unrelated products, fracturing learning. -
Generic or keyword-stuffed titles. Titles like "Buy Premium Organic Cotton T-Shirt Online Best Price" confuse asset group theme clustering. PMax uses title semantics to map products to creative assets. Keyword spam degrades that mapping.
-
Empty or placeholder
descriptionfields. Descriptions feed PMax's understanding of product benefits and use cases. A 20-word generic description copied across 500 SKUs gives the algorithm nothing to differentiate on.
The furniture brand's feed had issues 1, 2, and 5. We exported their Merchant Center feed and ran a quick Python audit:
import pandas as pd
df = pd.read_csv('product_feed.csv')
# Check product_type depth
df['pt_levels'] = df['product_type'].str.count('>') + 1
print(df['pt_levels'].value_counts())
# Output: 1.0 â 2,847 rows (100% single-level)
# Check for custom labels
print(df[['custom_label_0','custom_label_1']].isna().sum())
# Output: custom_label_0 2847, custom_label_1 2847 (all empty)
# Check description uniqueness
print(df['description'].nunique(), '/', len(df))
# Output: 23 / 2847 (23 unique descriptions across 2,847 SKUs)
When we restructured their feedâadding five-level product_type, populating custom_label_0 with margin buckets, and rewriting descriptions with AI-driven product categorizationâPMax asset group performance stabilized within two weeks. High-margin sofas reclaimed 51% of impressions, and contribution margin recovered 14 percentage points.

The Product_Type Hierarchy PMax Actually Needs (With Examples)
Google's feed spec allows up to five levels in product_type, delimited by >. Most e-commerce platforms default to two or three based on storefront categories, but PMax benefits from deeper, margin-aware hierarchies. Here's how we rebuilt product_type for the three brands:
Furniture (before):
Living Room
Bedroom
Accessories
Furniture (after):
Furniture > Seating > Sofas > Sectional > Premium
Furniture > Seating > Chairs > Accent > Mid-Tier
Furniture > Decor > Throw Pillows > Decorative > Budget
Activewear (before):
Moisture-Wicking Leggings
Cotton Tees
Compression Shorts
Activewear (after):
Apparel > Women's > Bottoms > Leggings > High-Performance
Apparel > Women's > Tops > T-Shirts > Essentials
Apparel > Men's > Bottoms > Shorts > Compression
Skincare (before):
Moisturizers
Serums
Cleansers
Skincare (after):
Skincare > Face > Moisturizers > Anti-Aging > Luxury
Skincare > Face > Serums > Vitamin C > Core
Skincare > Face > Cleansers > Gel > Value
Notice the pattern: Category > Gender or Room > Product Type > Style or Benefit > Margin Tier. The final level explicitly encodes strategic priority (Premium, Core, Budget or Luxury, Mid-Tier, Value). This lets you create asset groups by level-four values and use level-five to control budget allocation via smart bidding targets.
We also populated custom_label_0 with margin buckets and custom_label_1 with inventory risk (Evergreen, Seasonal, Clearance). Combined with the new hierarchy, PMax asset groups could self-segment without manual listing group exclusions.
If your feed has 1,000+ SKUs and manual categorization is impractical, tools like MagicFeed Pro can auto-generate hierarchical product_type values using GPT-4 and your catalog's title/description data. We rebuilt the furniture brand's 2,847-SKU feed in 90 minutes.
One important note: product_type is freeform text, while google_product_category must match Google's taxonomy. Use product_type for strategic segmentation and google_product_category for compliance. PMax reads both, but product_type carries more weight for asset group targeting because it's unique to your catalog.
Audit Checklist: 8 Feed Attributes That Control PMax Behavior
When you suspect PMax is cannibalizing margin, audit these eight feed fields before touching bids or asset group settings. We use this checklist on every client onboarding:
| Attribute | Audit Question | Red Flag | Fix Priority |
|---|---|---|---|
product_type | Is the hierarchy â„3 levels? Does the deepest level encode margin? | Single-level or missing | Critical |
custom_label_0 | Does it segment products by margin tier (High/Med/Low)? | Empty or non-margin values | Critical |
custom_label_1 | Does it flag seasonality, inventory risk, or promo eligibility? | Empty or duplicates custom_label_0 | High |
item_group_id | Are all variants of the same product grouped under one ID? | Missing or unique per variant | High |
title | Is it descriptive (brand + type + key attributes) without keyword spam? | Generic or 15+ words | Medium |
description | Is it unique per SKU and â„100 characters? | Copied boilerplate or <50 chars | Medium |
price + sale_price | Are both populated? Is sale_price only set when actually discounted? | Permanent "sale" prices or missing sale logic | Medium |
availability | Is it real-time? (In stock / Out of stock / Preorder) | Static "in stock" for all SKUs | Low |
The furniture brand had critical issues in rows 1-4, medium issues in rows 5-6. The activewear brand had critical issues in rows 1 and 3, plus a unique problem: their item_group_id used SKU prefixes that changed seasonally, so Spring 2025 leggings and Fall 2025 leggings were treated as unrelated products. PMax couldn't transfer learning across seasons.
After fixing those eight attributes, we resubmitted feeds to Merchant Center and relaunched PMax campaigns with restructured asset groups. The skincare brand saw the fastest turnaroundâmargin recovery hit breakeven in 11 daysâbecause their catalog was smallest (340 SKUs) and cleanest post-fix.
For detailed guidance on custom label strategy, see our breakdown on how DTC brands use custom labels to control ad spend. That post includes label schema templates for subscription products, bundles, and margin-risk matrices.
Campaign Structure: When to Separate PMax from Standard Shopping
One of the most common questions we field: Should we run PMax and Standard Shopping simultaneously, or consolidate into PMax? The answer depends on feed maturity and margin variance.
Run hybrid (PMax + Standard Shopping) if:
- Your catalog has high margin variance (e.g., 10-50% gross margin across SKUs). Standard Shopping with manual listing groups lets you protect hero products.
- You need granular control over branded vs. non-branded traffic. PMax combines Search, Shopping, Display, YouTube, and Discover; Standard Shopping is Shopping-only.
- Your feed audit score is <70/100 (our internal benchmark: 8 attributes Ă 10 points each, deductions for missing/broken fields). Clean up the feed first, then consolidate.
Consolidate into PMax if:
- Your catalog is margin-homogeneous (e.g., all SKUs are 35-45% margin). PMax will optimize for revenue without margin risk.
- You have high-quality product images, video assets, and enough budget to hit learning phase across asset groups ($500+/day per group).
- Your feed has hierarchical
product_type, populated custom labels, and unique descriptions. PMax needs these to self-segment effectively.
We advocate a phased approach. Start hybrid, even if your feed is clean. Allocate 60-70% of budget to Standard Shopping and 30-40% to PMax. Monitor margin contribution by channel weekly. If PMax consistently delivers comparable or better margin efficiency after 30 days and four full learning cycles, shift another 20pp of budget. If margin degrades, pause PMax and diagnose feed issues before resuming.
The furniture brand ran hybrid for 60 days post-feed-fix. By day 45, PMax contribution margin matched Standard Shopping (39.2% vs. 39.8%), so they shifted to 50/50. By day 75, PMax pulled ahead (41.1% vs. 38.4%), and they moved to 70/30 in favor of PMax. The key: they didn't consolidate blindly. They validated feed changes with data.
One structural mistake we see often: running a single "all products" PMax campaign. If your catalog spans multiple verticals or margin tiers, split into 2-4 asset groups with non-overlapping product_type filters. For example, the activewear brand ran three asset groups:
- High-Margin Core (Leggings, Sports Bras, Joggers):
product_typecontains "High-Performance" or "Core",custom_label_0= "High Margin" - Essentials (Tees, Tanks, Socks):
product_typecontains "Essentials",custom_label_0= "Medium Margin" - Clearance/Seasonal (Last season's colors, discontinued styles):
custom_label_1= "Clearance"
Each asset group had distinct ROAS targets (2.8Ă, 2.2Ă, 1.5Ă) and creative sets emphasizing different value props (performance, versatility, price). This let PMax optimize within margin guardrails rather than blending high and low AOV into a single learning pool.
Real Numbers: Margin Recovery After Feed Restructure
We tracked all three brands for 90 days post-feed-fix. Here's the margin contribution lift by week, indexed to week zero (pre-fix baseline = 100):
| Week | Furniture | Activewear | Skincare | Avg Lift |
|---|---|---|---|---|
| 0 | 100 | 100 | 100 | 100 |
| 2 | 104 | 102 | 108 | 105 |
| 4 | 112 | 109 | 118 | 113 |
| 6 | 121 | 115 | 124 | 120 |
| 8 | 128 | 119 | 127 | 125 |
| 12 | 134 | 123 | 129 | 129 |
Average margin contribution improved 29% by week 12. The furniture brandâwhich had the worst initial feed qualityâsaw the largest absolute recovery: from $61k to $142k monthly net contribution on the same $88k PMax spend. That's a $81k monthly swing, or $972k annualized, from feed fixes alone.
We also tracked non-PMax performance to control for external factors (seasonality, promo calendars). Standard Shopping and paid social contribution stayed flat ±3pp, confirming the lift was PMax-specific. The mechanism: better product_type hierarchies let PMax allocate budget to higher-margin SKUs, and unique descriptions + titles improved ad relevance scores, dropping CPCs by 11-17%.

One non-obvious benefit: customer LTV improved. When PMax promotes high-margin SKUs, you acquire customers through better products. The furniture brand's PMax-sourced customers had 18% higher 180-day LTV than pre-fix PMax customers, likely because sectionals (high margin) are considered purchases that anchor a room, while pillows (low margin) are impulse adds. Better first-order product mix â stronger customer cohorts.
For brands skeptical about feed investment, we offer a free audit that scores your feed on the eight critical attributes and estimates margin recovery potential. The furniture brand's initial score was 28/100; post-fix it was 91/100. That 63-point improvement unlocked the $81k monthly lift.
FAQ
Related articles

Zero-Click Shopping: Optimizing Feeds for Google's Product Knowledge Panel
Google now displays price, availability, and specs directly in search results for 34% of product queries. Learn how to optimize your Shopping feed and schema markup to own the Knowledge Panel and protect branded search visibility.

Google Shopping Bid Modifiers vs. Feed Segmentation: ROI Test
A 90-day test across three verticals reveals why feed-level segmentation delivers 2-3x more control and lower CAC than standard bid modifier tactics for Google Shopping campaigns at scale.

Custom Label Strategy: How 3 DTC Brands Scaled to 8-Figure ROAS
Reverse-engineer the margin-velocity, seasonality, and LTV-based custom label architectures that let three DTC brands break the $50k/month plateau and reach 8-figure ROAS on Google Shopping.

