Your Shopping campaign is spending right now. The question is whether it's spending on your best products — or quietly bleeding budget on SKUs that never convert. Most brands don't know. This system does.
shopping_performance_view via GAQL — pull 30 days of per-SKU impressions, clicks, cost, conversions, and revenue for all products with trafficShoppingContent.Products.list() — retrieve every active product from Merchant Center and cross-reference by product IDcustom_label_0), price tier, margin proxy, conversion efficiency, and visibility score — using custom labels 0–4"We presented this system to our Google Ads rep, and they said they hadn't seen anyone do this before — where the supplemental feed updates daily and the campaigns automatically refresh with fresh top-performing SKUs."
— Annie Lee, Founder, Akorn Media
When you run Shopping or PMax with your full catalog, Google's algorithm decides where to spend. It optimizes for conversions — but it doesn't know your margins, your strategy, or which products you actually want to scale.
Bleeders eat quietly
Products with ad spend and zero sales. They're invisible in aggregate ROAS — but they're draining real budget every day.
Winners get diluted
Your highest-ROAS SKUs compete for budget against thousands of untested products. The algorithm can't distinguish between them.
Manual reviews don't scale
Pulling product-level ROAS reports weekly is a time sink — and the data is already stale by the time you act on it.
PMax hides the real story
Branded search inflates PMax ROAS. The non-brand performance — where real growth lives — is buried in the aggregate number.
of Google Shopping advertisers cannot attribute revenue to individual SKUs in their PMax campaigns — because aggregate ROAS reporting masks product-level performance. The result is budget allocated by Google's algorithm, not by the advertiser's profitability strategy.
Based on Akorn Media account audit data, 2024–2026 (n=12 DTC accounts, $20K–$100K/month spend)
A proprietary script connects your Google Ads performance data directly to your Merchant Center feed. Every product gets graded, labeled, and routed to the right campaign — automatically, every 24 hours.
Step 1
Pull Ads data
Step 2
Pull GMC catalog
Step 3
Grade & label
Step 4
Push to feed
Step 5
Campaigns update
The script uses the Google Ads API (GAQL) to pull 30 days of Shopping and PMax performance per product, cross-references against your full Merchant Center catalog via the ShoppingContent API, and assigns every SKU up to five custom labels. Labels push to a Supplemental Feed in Google Sheets. Merchant Center reads the sheet daily and your campaign filters update automatically.
Most systems grade by a single ROAS number. This one evaluates every product across five distinct dimensions — giving you surgical control over how your catalog is managed and your budget is allocated.
| Label | Dimension | What it tells you |
|---|---|---|
| custom_label_0 | ROAS tier | Is this product profitable at your margin threshold? Drives primary campaign segmentation. |
| custom_label_1 | Price tier | Budget, mid-range, high, or premium — enables differentiated bidding by price segment. |
| custom_label_2 | Margin proxy | Are customers buying at full price or discounted? Discount dependency is a warning sign. |
| custom_label_3 | Conversion efficiency | How well does this product turn clicks into sales — independent of spend level. |
| custom_label_4 | Visibility score | Is Google surfacing this product or suppressing it? Suppression signals opportunity or a feed issue. |
Every product flows into a purpose-built campaign based on its grade. As performance shifts daily, so does the routing — no manual moves needed.
Campaign 01
PMax — Hero Winners
Proven high-ROAS products only. Aggressive tROAS bidding. PMax scales these across every Google channel — Search, Shopping, Display, YouTube, Discovery.
60–70% of budget
Campaign 02
PMax — Growth
Medium-ROAS products with room to scale. Lower tROAS target lets the algorithm find incremental conversions and graduate products to Hero status.
20–25% of budget
Campaign 03
Standard Shopping — Testing Lab
Untested products get a low-budget window with full search term visibility. When they prove themselves, the script promotes them automatically.
10–15% of budget
// 1. Pull 30 days of Shopping/PMax performance per product
var query = "SELECT segments.product_item_id, " +
"metrics.impressions, metrics.clicks, metrics.cost_micros, " +
"metrics.conversions, metrics.conversions_value " +
"FROM shopping_performance_view " +
"WHERE segments.date DURING LAST_30_DAYS";
// 2. Grade every product by real ROAS
var roas = revenue / cost;
if (roas >= 3.0) label_0 = 'High ROAS — Hero';
else if (roas >= 1.5) label_0 = 'Medium ROAS — Growth';
else if (roas > 0) label_0 = 'Low ROAS — Review';
else if (cost > 0) label_0 = 'Bleeder — Exclude';
else label_0 = 'Untested — Testing Lab';
// 3. Push labels to Supplemental Feed → GMC → Live Campaigns
// Runs daily. Zero manual intervention.
Bleeders get cut automatically
Products with spend and zero conversions are identified and excluded from all campaigns every 24 hours. No manual audit required.
Winners get isolated and scaled
Your best SKUs stop competing with thousands of untested products for budget. They move into a dedicated hero campaign with aggressive bidding.
New winners surface constantly
The testing lab runs untested products through controlled discovery. When they prove themselves, the script promotes them automatically.
Aggregate ROAS stops lying to you
When PMax mixes branded and non-brand performance, the aggregate looks great. This system separates those signals so you see where growth is actually coming from.
Questions we hear from Founders and CMOs before getting on a call — answered directly.
How can I automatically optimize my Google Shopping campaigns by product ROAS?
Use a Google Ads script that pulls performance data from the Shopping Performance View via GAQL, downloads your full product catalog from Google Merchant Center via the ShoppingContent API, calculates ROAS for every SKU, assigns custom labels (High ROAS, Bleeder, Untested), and pushes labels to a Supplemental Feed in Google Sheets. Merchant Center reads the sheet and updates your live product attributes daily, allowing campaign filters to automatically route products to the right campaigns.
What is a self-optimizing shopping feed?
A self-optimizing shopping feed is a system where real ad performance data — impressions, clicks, cost, conversions, revenue — is used to automatically update product attributes in Google Merchant Center via a supplemental feed. This creates a daily feedback loop: the script grades products based on the last 30 days of ROAS data, pushes updated labels to the feed, and campaign filters use those labels to allocate budget — all without manual intervention.
How do I use custom labels in Google Shopping to segment by ROAS?
Google Merchant Center supports custom_label_0 through custom_label_4 on every product. Populate these via a supplemental feed — a Google Sheet registered in GMC. Once live, create product groups in your Shopping or PMax campaigns filtered by custom_label_0 and set different bidding strategies per tier: aggressive tROAS for heroes, exclusions for bleeders, and Maximize Clicks for untested products.
How do I increase ROAS in Google PMax campaigns?
The most effective method is product-level segmentation. Isolate high-ROAS products in a dedicated Hero PMax campaign with 60–70% of your budget and aggressive tROAS targets. Put medium-ROAS products in a Growth campaign (20–25% of budget). Test untested products in a Standard Shopping campaign with Maximize Clicks (10–15% of budget). Exclude bleeders from all campaigns. Automate the grading daily so products flow between tiers based on real performance — not last week's manual review.
What is a supplemental feed in Google Merchant Center?
A supplemental feed is an additional data source in Google Merchant Center that overlays attributes onto your primary product feed. It matches products by the 'id' field and can add or override attributes like custom labels, sale prices, or product types. Register a Google Sheet URL in GMC under Feeds → Supplemental Feeds, map the columns to product attributes, and GMC fetches the sheet daily.
How do I stop wasting ad spend on Google Shopping products that never convert?
Identify bleeder products — SKUs with ad spend but zero conversions. A Google Ads script automates this by querying the shopping_performance_view for products where cost > 0 and conversions = 0 over the last 30 days. Label these as 'Bleeder' via a supplemental feed custom label, then exclude that label from all campaigns. Run the script daily so new bleeders are caught automatically before they drain additional budget.
Why does PMax hide poor non-brand performance?
PMax campaigns mix branded and non-branded traffic in a single ROAS aggregate. Branded searches convert at significantly higher rates — making the overall ROAS number look strong even when non-brand performance is weak. By segmenting products into purpose-built campaigns using custom labels, you isolate where growth is actually coming from and prevent branded search from masking non-brand underperformance.
This system is built for ecommerce brands with 500+ SKUs spending $10K+ per month on Shopping or PMax. If that's you, the conversation is worth having.
Book a strategy call. We'll pull your account, grade your top SKUs, and show you exactly where budget is going — and where it should be going instead.
Book a strategy call →For brands spending $10K–$100K/month on Google Shopping or PMax