Blog / Performance Max Strategy for Shopify

Performance Max Strategy for Shopify: How to Structure a Large Catalog

If your Shopify store has a few hundred SKUs and one Performance Max campaign, Google is deciding which products matter. It usually picks whatever converted yesterday. The fix is three campaigns with three different jobs: your top 20% of products, everything else, and new arrivals. Every product lives in exactly one of them.

This guide shows the structure, the settings, and the one manual step that trips up almost every large-catalog brand. It also shows what the data looks like on real stores, because the 80/20 rule is not a theory here.

TL;DR

  • One campaign for a big catalog underfunds your best products. PMax optimises for total conversion value, not for the products you need to win.
  • Run three campaigns: Top 20% (real target ROAS), Bottom 80% (stricter target ROAS), New arrivals (no target). One product, one campaign, no overlap.
  • Across three Shopify stores we pulled last week, the top 20% of products drove 60% to 85% of net sales over 90 days. That is the group your budget should protect.
  • Tag the top 20% with a custom label through a Merchant Center supplemental feed. It is mechanical, it goes stale, and it is the step people skip.
  • Google's floor for target ROAS is 15 conversions in 30 days. Most practitioners wait for about 50 before trusting the target.

Why does one Performance Max campaign break on a large catalog?

Performance Max reads your Merchant Center feed and serves ads across Search, Shopping, YouTube, Display, Gmail and Discover from one campaign. With 40 products, that is fine. Google can work out which ones deserve spend.

With 500 products, it cannot. The campaign optimises for the highest total conversion value it can find today. A low-margin SKU on a lucky week gets budget. A hero product with steadier but slower demand gets starved. The campaign is not wrong. It just has no idea which products you actually need to sell.

The other quiet cost is brand traffic. Without brand exclusions, PMax will happily "convert" people who typed your brand name into Google. That inflates the campaign's ROAS and tells you nothing about net-new demand. More on that below.

How concentrated is revenue in a real Shopify catalog?

Very. We pulled 90 days of net sales by product for three Shopify stores connected to Datadrew, ranging from about 30 products to about 500. Figures are rounded.

Store size Top 20% of products drove 80% of net sales came from
~500 products (apparel)~65% of net salesthe top ~30% of products
~30 products (consumables)~60% of net salesthe top ~40% of products
~15 products (supplements)~85% of net sales3 products

The exact split changes by category. The shape does not. A minority of products carries the store, and a single campaign gives that minority no protection.

What is the three-campaign Performance Max structure?

Three campaigns, each with a different job. Every product goes in exactly one.

Merchant Center feed primary feed from Shopify + supplemental sheet custom_label_0 = top20 | bottom80 | new 1. Top 20% campaign Highest-revenue products. Funded first. Max conversion value → add target ROAS at 15–50 conversions · brand excluded Real stores: top 20% of products = 60–85% of net sales (90 days) 2. Bottom 80% campaign Everything else. Supports the account, not the driver. Target ROAS ≈ 20% stricter than campaign 1 · brand excluded Keeps the long tail from dragging blended ROAS down 3. New arrivals campaign Products added in the last 30 days. No target ROAS · brand excluded · let it spend and learn After 30 days: graduate to campaign 1 or 2 based on what it earned Rule: every product lives in exactly one campaign. Overlap = your own campaigns bidding against each other.
Three-campaign Performance Max structure: a Merchant Center feed tagged with custom_label_0 feeds a Top 20% campaign, a Bottom 80% campaign and a New arrivals campaign, each with its own bidding rule

1. Top 20% campaign

Your highest-revenue products. The ones that carry the store.

  • Objective: Sales. Conversion goal: Purchase.
  • Bidding: Maximise conversion value, no target ROAS to start.
  • Add a target ROAS once the campaign has enough conversions (see thresholds below). Set it at your real target, for example 400% for a 4x return.
  • Apply brand exclusions so this measures net-new demand.
  • Leave the new-customer acquisition goal off until you have a baseline.

2. Bottom 80% campaign

Everything else. Same settings, same brand exclusions, with one difference: set the target ROAS about 20% higher than the Top 20% campaign's baseline.

That stricter bar is deliberate. This campaign supports the account. It is not meant to be the revenue driver, and the higher target stops it from dragging blended performance down.

One store we looked at already runs a version of this. Its two hero-line PMax campaigns returned about 2x over 90 days. Its "everything else" PMax campaign returned about 1.2x on the same account. That gap is normal. It is why the long tail needs a leash.

3. New arrivals campaign

Products added in the last 30 days. Adjust the window to your launch cadence. Same brand exclusions, no target ROAS at all.

A new product has no conversion history. Put a ROAS target on it on day one and Google starves it before it can prove anything. Google's own guidance for Smart Bidding on Shopping and PMax says to "consider setting a low ROAS target in order to encourage scaling for a new campaign" and to adjust once it scales. For brand-new products, no target is the cleaner version of that advice.

The overlap rule

Every product belongs to one campaign. Not two. Overlap means your own campaigns bid against each other and the data gets muddy.

This is not hypothetical. In one Shopify brand's PMax account we checked, about 15% of the spend in each hero campaign went to products that belonged to the other campaign. The feed filters overlapped, so the Hair campaign bought clicks on Kids products and vice versa. Roughly one euro in six was spent in the wrong place before anyone touched a bid.

How do I tag my top 20% products in Google Merchant Center?

This is the step that slows people down. It is mechanical, not strategic.

If you have a small catalog, select products by item ID or by category directly in the PMax listing group. Most large-catalog brands cannot. Everything sits in one or two categories and there are too many SKUs to pick by hand.

The workaround is a custom label set through a Merchant Center supplemental feed. Google allows "up to five custom labels numbered custom label 0 through custom label 4," with "up to 1,000 unique values account-wide for each custom label attribute." Google's own examples include "best seller" and "low seller," which is exactly what we are doing here.

A supplemental feed cannot add or remove products. Google states it "can't be used to add or remove products or be used as a standalone data source." It only overlays attributes on products that already exist in your primary feed, matched on the `id` attribute. That is what makes it safe: it will not touch price, availability or anything else Shopify already owns.

Steps:

  1. In Merchant Center, go to Products → Data sources → Add supplemental data source. Choose Google Sheets.
  2. Export your primary feed (Products → All products → download) to get every product's `id` and `title`.
  3. In the sheet, keep the `id` and `title` columns and add a `custom_label_0` column. Tag each row `top20`, `bottom80` or `new`.
  4. Save the sheet as the supplemental source and link it to your primary feed.
  5. In Google Ads, filter each PMax campaign's listing group by that custom label. One label per campaign.

It works. It is also only correct on the day you build it. The moment your bestsellers shift, which for most Shopify brands is every few weeks, the labels are stale until someone redoes the export.

How do I know which products are my top 20%?

The spreadsheet does not answer this. It gives you a place to type the answer once you have it.

Which SKUs drove 80% of revenue, over which window, net of refunds, is an order-data question, not a Merchant Center question. Google Ads' own product report will not answer it either, because it only sees what Google Ads sold.

Your options:

  • Pull a sales-by-product report from Shopify Analytics and sort it. Fine for a one-off. Painful monthly.
  • Build a recurring export and a script that rewrites the supplemental sheet. The right answer if you have an engineer.
  • Ask a tool that already holds product-level revenue reconciled to Shopify orders.

The window matters. Use 90 days for most catalogs. Use 30 days if you run fast-moving seasonal ranges, and expect to re-tag more often. Whatever window you pick, use the same one every time so the tiers are comparable month to month.

What target ROAS and learning-period rules does Google actually publish?

The numbers people repeat are mostly folklore. Here is what Google publishes.

  • Target ROAS eligibility: for Search and Shopping campaigns, "at least 15 conversions in the past 30 days at the conversion tracking level." That is the floor, not the recommendation. Most practitioners wait for around 50 conversions before trusting a target. Our advice: do not add a target below 15, and expect it to behave below 50.
  • Learning period: "Run new campaigns for at least 6 weeks. This allows the machine learning algorithm to ramp up." For significant changes to an existing campaign, "allow a similar learning period of 1-2 weeks."
  • During ramp-up: "Avoid making frequent changes to budget, bid strategy, or campaign status within this initial period." Changes can reset learning.
  • Brand exclusions: in Performance Max they "apply to only Search, Shopping, and YouTube search inventory." There is a checkbox to "allow Shopping ads on searches that mention excluded brands." Leave it unticked if you want the Top 20% campaign to measure net-new demand.
  • New customer acquisition goal: two modes, bid higher for new customers or bid only for new customers. Google notes "at least one Purchase conversion goal is required" and that with new-customers-only "you should set up a separate campaign to reach existing customers." Turn it on later, after the three campaigns have a baseline.

For a deeper read on setting the target itself, see our post on marginal ROAS. The right target for the Bottom 80% is the point where the next dollar stops paying for itself, not a number copied from the Top 20%.

How do I watch the three campaigns once they are live?

The structure is the easy part. The failure modes after launch are quiet:

  • The Bottom 80% campaign eats budget because its target ROAS was set too loose.
  • A product in New arrivals spikes, hits its 30-day window, and gets dumped into Bottom 80% before it earned a place in Top 20%.
  • A hero product goes out of stock and the Top 20% campaign keeps spending on it. Our post on ad spend on out-of-stock products covers that leak.
  • Two campaigns overlap again because someone re-uploaded the sheet with a typo in a label.

Check three things weekly: spend share by campaign, ROAS by campaign against its target, and whether any product shows up in more than one campaign's product report. The last one takes two minutes in the Products tab and catches the overlap problem before it costs 15% of your spend.

If you want a broader frame for deciding which products get next month's budget, read how to allocate ad budget by product bucket. The three PMax campaigns are that idea applied inside Google Ads.

How Datadrew fits into this workflow

Datadrew connects your Shopify store, Google Ads and Meta in one place, and Drew, its AI analyst, answers questions across them. For the PMax structure above, it is useful in two spots.

Finding the top 20%. Ask Drew which products drove 80% of net sales over the last 90 days. You get the list you would paste into the `custom_label_0` column, from Shopify orders, net of refunds, without rebuilding the export each time the catalog shifts. Run it monthly and the labels stop going stale.

Watching the campaigns. Once the structure is live, ask "which PMax campaign is furthest from its ROAS target this week" or "sales down on the Top 20% campaign, why." Drew reads Google Ads and Shopify in the same thread instead of you switching between three tabs. You can run this inside Claude too: the Google Ads MCP guide shows the setup.

One honesty note. Datadrew reads your ad accounts, it does not write to them, and it does not push custom labels back into Merchant Center. You still upload the sheet. It also does not claim campaign-level attribution beyond what Google Ads reports. What it gives you is Shopify-reconciled product revenue, which is exactly what the "who is in my top 20%" question needs.

Install Datadrew free on the Shopify App Store: apps.shopify.com/customer-lifetime-value. Connect Google Ads inside the app, then ask Drew for your top 20% list. Paid plans start at $99/mo, month to month.

FAQ

How many Performance Max campaigns should a large Shopify catalog run?
Three: a Top 20% campaign with a real target ROAS, a Bottom 80% campaign with a target about 20% stricter, and a New arrivals campaign with no target. Add a fourth only if a category behaves so differently it needs its own target.

What target ROAS should I set for Performance Max?
Google's floor for Shopping and Search is 15 conversions in the past 30 days. Wait for around 50 before trusting the target. Set the Top 20% campaign at your real target and the Bottom 80% campaign about 20% higher.

How do I tag specific products for a Performance Max listing group?
Small catalogs: select by item ID or category in the listing group. Large catalogs: create a Merchant Center supplemental feed from a Google Sheet with `id`, `title` and `custom_label_0`, tag each product, link it to your primary feed, then filter each campaign's listing group by that label.

Why shouldn't new products have a target ROAS in Performance Max?
They have no conversion history. A target on day one starves them of spend before they can convert. Run new arrivals without a target for 30 days, then move them into Top 20% or Bottom 80% based on what they earned.

How often should I refresh the top 20% list?
Monthly for most catalogs. Every two weeks if you launch often or sell seasonal ranges. Use the same lookback window every time.

How do I find which products make up my top 20% by revenue?
Pull sales by product from Shopify Analytics for the last 90 days and sort by net sales, or ask Drew inside Datadrew for the list, reconciled to orders and net of refunds.

DD
Sumit Bansal Co-founder @ Datadrew. Ex-AdYogi, worked with 200+ e-commerce brands on paid growth.

Take CONTROL of your Shopify growth today