PPCleaner

How Listing Groups Hide Wasted Spend in Performance Max

Published October 7, 202613 min read
An ecommerce owner checking advertising invoices beside a laptop, calculator and packed orders.
The short answer

A listing group is the product tree inside a Performance Max asset group. It decides which items from your Merchant Center feed the campaign can show. When everything sits in one undivided "All products" node, Google spends freely on whatever it predicts will convert — usually your cheapest, most searched, lowest-margin items — and the spend report shows you a campaign total, not the product mix behind it.

The fix is two-sided. Split the listing group so low-margin and out-of-stock-prone products cannot absorb the whole budget, and add campaign-level negative keywords so the queries that drag those products in stop arriving. Performance Max takes up to 10,000 campaign-level negatives and no shared lists, so the negatives have to be pushed into each campaign directly.

What a listing group actually controls

A listing group is the product tree inside a Performance Max asset group. It tells Google which items from your Merchant Center feed that asset group is allowed to serve. It is the Shopping half of Performance Max, and it sits in a tab most people open once during setup and never again.

By default, a new asset group with a feed attached contains one node: "All products". Everything in the feed is eligible. Google then decides, query by query and user by user, which product to show. You do not choose. You do not see the choice in the campaign report either — you see a campaign spend line, and under it an asset group, and under that, if you dig, a product-level report that nobody reads on a Tuesday.

That is the structural problem. Keywords in Search have a visible one-to-one relationship with spend: you can sort by keyword, see the cost, and act. Listing groups have a one-to-many relationship that Google resolves for you in real time. The waste does not announce itself as a line item. It shows up as a campaign that is "profitable overall" while a third of its budget goes to products that never made money.

The second half of the problem is that listing group structure and search term waste feed each other. A badly split listing group makes Google eligible for a wider set of queries, because a wider product set matches more things. Those queries pull in more low-value products. The loop tightens. This is the part most Performance Max guides skip, because they treat the search side and the product side as separate chapters. In a single campaign they are the same mechanism — a point we also make in Where Performance Max Wasted Spend Hides.

Why "All products" quietly costs you money

One undivided listing group lets Google chase volume. Volume lives at the cheap end of almost every catalogue, so that is where the budget goes.

Think about a hardware retailer with 4,000 SKUs. The catalogue runs from a $3 pack of screws to a $900 mitre saw. The campaign has a $200 daily budget and a target ROAS. Google's bidding model is trying to hit that ROAS, and the cheapest reliable route is high-volume, low-price items with strong click-through. So the campaign spends $140 of its $200 on screws, washers and tape, hits the ROAS target on paper, and the mitre saws — the items with the actual margin — get $60.

The report says the campaign hit target. The P&L says the month was flat. Both are true. Revenue ROAS and margin ROAS diverge the moment your catalogue has a wide price spread, and a single listing group guarantees that divergence because nothing prevents it.

Three specific ways the undivided tree costs you:

Loss leaders absorb budget. If you stock a product at near-zero margin to get people in the door, Performance Max will find it, notice it converts well, and feed it. The model optimises for conversion value as reported, and conversion value as reported is revenue, not profit, unless you have done the work to send margin instead.

Out-of-stock and low-stock items still get impressions. Feed updates lag. An item that goes out of stock mid-afternoon can keep serving until the next feed pull. Multiply that across a catalogue with real turnover and you have a steady trickle of clicks to products you cannot ship.

Accessory queries pull the whole catalogue in. Someone searching "dewalt battery charger" gets served a dewalt battery charger. Fine. Someone searching "how to charge a drill battery" gets served something too, because the product set is wide enough that Google can always find a match. That second query is where the wasted spend sits, and it arrives through the product tree as much as through any keyword.

How to read the product report before you touch anything

Go to the campaign, open the listing group or product view, set the date range to the last 90 days, and sort by cost descending. You are looking for products with real spend and no conversions. That list is the article.

Do this per campaign, not account-wide. Account-wide product reports blend campaigns with different goals and you lose the thread. And use 90 days rather than 30 — Performance Max spend is spiky enough that a 30-day window can make a decent product look dead and a dead product look decent.

What to write down for each high-cost, zero-conversion product:

  • Cost over the window
  • Clicks
  • Price of the item
  • Whether it has ever converted, in any campaign, ever

That last column decides everything. A $400 product with 60 clicks and no conversions in 90 days, which has also never converted in Search, is not a product with a targeting problem. It is a product that does not sell through paid. A $400 product with 60 clicks and no conversions in Performance Max, but which converts steadily in Search, is a product that is being shown to the wrong people — different fix.

Before you conclude that an item is dead, check that conversion tracking is actually attributing to it. Item-level conversion data depends on the transaction being passed back with the right product IDs. If your tracking sends an order total with no item breakdown, the product report will show conversions clustering oddly, and you will mistake a tracking gap for a sales problem. Confirm that first. The broader order of checks is laid out in Google Ads Spending Money, No Conversions? Check This Order.

What a healthy spread looks like

There is no published benchmark for this and we will not invent one. In the accounts we audit, it is common to find that a small minority of SKUs carry most of the Performance Max spend while a long tail of products take clicks and return nothing — and in catalogues over a few thousand items, the share of spend sitting on products with zero conversions in 90 days is usually a meaningful slice, not a rounding error. Treat that as a pattern we see, not a number to plan with. Your own 90-day sort is the only figure that matters.

Splitting listing groups without starving the catalogue

Split by something that maps to profit, not by something that maps to the feed's folder structure. Product type and brand are convenient. Margin band and price band are useful.

The practical approach that holds up:

Step one — split the biggest spenders out. Take the top products by spend and give them their own subdivision inside the listing group. This alone gives you a spend line you can read. You are not changing targeting yet, just making the money visible.

Step two — separate price or margin tiers. Create subdivisions for, say, items under $50 and items over $50, or whatever threshold matches where your margin changes. Then put them in different asset groups, or different campaigns, so each can carry its own target ROAS. A target of 400% is reasonable on a $900 saw and absurd on a $3 pack of screws; one campaign cannot hold both targets.

Step three — exclude, carefully. In every listing group there is an "Everything else" node. You can set it to excluded. That stops the campaign serving anything you have not explicitly included. It is powerful and it is the step that breaks accounts, because new products land in "Everything else" by default. Exclude it and your new season arrives invisible. If you exclude it, you need a habit of checking what has fallen into it, monthly at minimum.

The cost of splitting is honest and worth stating: more structure means thinner data per unit. Smart Bidding needs conversion volume to learn. Chop a campaign that was getting 200 conversions a month into five asset groups of 40 and each one learns more slowly. On small accounts, two or three splits is usually the ceiling before the bidding gets wobbly. Splitting is not free, and anyone who tells you to build a 40-node tree on a $2,000 monthly budget has not run one.

Negative keywords are the other half of the fix

Listing group structure decides which products can serve. Negative keywords decide which queries can trigger them. Fix one without the other and the waste moves rather than stops.

Here is the pattern. You split your listing group, isolate the cheap SKUs, and cap their budget. Good. The queries that were pulling in cheap SKUs — "cheap drill bits", "screws free delivery", "how to fix a drill" — do not disappear. They now hit whatever products remain eligible, which may be your expensive ones. You have swapped a cheap wasted click for an expensive wasted click.

So the two moves go together:

  1. Structure the listing group so budget cannot pile onto products that do not pay.
  2. Block the queries that were never going to buy anything, at any price.

Performance Max accepts up to 10,000 campaign-level negative keywords. It does not accept shared negative keyword lists. That restriction shapes the work: there is no single list you maintain once and apply everywhere. Each Performance Max campaign needs its own negatives, pushed in directly, and kept in sync by hand or by tooling. If you run Standard Shopping alongside, note that it does accept shared lists and behaves like Search — the two product campaign types diverge here, which Shopping Campaign Negative Keywords Work Differently covers in detail.

Match type matters more than people expect. Broad negatives behave unpredictably across match types, and in a catalogue campaign a loose broad negative can suppress far more than you intended. A broad negative on free will stop you appearing for "free delivery over $50" as well as "free drill bits". Phrase and exact negatives are easier to reason about and easier to reverse. Negative Keyword Match Types Don't Work Like Positives explains why the usual intuition fails.

The query families worth blocking in a product campaign

These come up in almost every catalogue account:

  • Research intent — "how to", "what is", "difference between", "vs", "review", "manual", "pdf", "instructions". Someone reading a manual is not buying a drill today.
  • Price floor — "cheap", "cheapest", "free", "discount code", "second hand", "used". Some of these you keep if you genuinely compete on price. Most catalogues do not, and Blocking "Free" and "Cheap" Searches Without Losing Buyers covers where the line sits.
  • Repair and parts — "replacement part", "spare", "repair", "fix", "won't start". If you sell whole units and not parts, these never convert and they arrive constantly.
  • Jobs and careers — your brand plus "jobs", "careers", "salary", "hiring". Product campaigns pick these up more than you would expect once brand terms are in play.
  • Wrong format or wrong market — "wholesale", "bulk", "trade account", "near me" if you ship only, place names you do not serve.

The e-commerce side of this list is worked through properly in E-commerce Google Ads Search Terms That Drain Budget. The same families show up for local and service businesses with different vocabulary, covered in Local Business Google Ads Wasted Spend.

What the search terms report will and will not tell you

Search terms for Search, Shopping and Performance Max are reported in campaign_search_term_view. That is the API table, and it is the honest limit of what you can see. Display, Video and App report nothing — so the portion of a Performance Max campaign that served on YouTube or the Display network contributes no search term rows at all.

This matters for listing group diagnosis because it means the search terms report explains part of your Performance Max spend, not all of it. If a campaign spent $3,000 last month and the search terms you can see account for $1,800 of it, the remaining $1,200 went somewhere the report does not describe. Some of that is genuinely non-search inventory. Some of it is Google aggregating low-volume queries away. What the PMax Search Terms Report Actually Shows goes through the gap in detail, and Google Ads Search Terms Report, and What It Hides covers the same problem across campaign types.

The practical consequence: do not try to explain a product-level spend anomaly purely through search terms. If one product is burning budget and the search terms report shows nothing obviously wrong, the clicks may be arriving from Display or YouTube placements, where listing group structure still governs which product gets shown but no query exists. That is a placement problem, and placement exclusions in Performance Max are their own limited tool — Performance Max Placement Exclusions, Honestly sets out what they can and cannot do.

Search themes add another wrinkle. They are inputs, not targeting controls, and they interact with your listing group by widening the set of queries Google considers relevant. A search theme of "power tools" on a campaign with an undivided listing group is a broad instruction over a broad product set. Search Themes vs Negative Keywords in Performance Max covers how the two pull against each other.

A 60-minute routine that keeps listing group waste in check

Once a month, in this order:

Minutes 0–15. Product report, 90 days, sorted by cost. Flag every product with spend above a threshold you set — pick something like 20 times your average cost per click, so a $2 CPC means a $40 threshold — and zero conversions. List them.

Minutes 15–30. Decide per product. Three outcomes only: keep and leave alone, move to a lower-target campaign, or exclude from the listing group. Avoid a fourth outcome of "watch it next month", because next month you will do the same thing.

Minutes 30–45. Search terms, same window. Sort by cost. Read down until the terms stop being obviously wasteful. Write the negatives. Phrase match by default, exact for anything that contains a word you also need. Push them to every Performance Max campaign that could match them — remember, no shared lists, so this is per campaign.

Minutes 45–60. Check "Everything else". If you have excluded it, find out what landed there this month. New products, renamed product types, feed errors. This is the step that prevents a quiet catalogue outage.

Then stop. The temptation after a session like this is to keep going — add 400 more negatives, split the tree into twelve nodes, tighten every target. Resist it. Over-blocking has its own cost, and the warning signs are real: impression share falling, conversion volume dropping before cost does, Smart Bidding losing its footing. Negative Keywords Hurting Performance? Six Signs lists what to watch for, and How Many Negative Keywords Are Too Many? addresses the volume question directly.

If you run this across a dozen client accounts, the per-campaign negative requirement becomes the bottleneck rather than the thinking. Managing Negative Keywords Across Client Accounts covers how to keep that from eating your week.

Where PPCleaner fits, and where it does not

PPCleaner reads the search terms a Performance Max campaign paid for, judges which ones were never going to convert, and adds them as campaign-level negative keywords every night. It handles the per-campaign push that Performance Max forces on you, across Search, Shopping and Performance Max. It never blocks a term that converted in the last 90 days, and every block can be undone in one click for 90 days — the mechanics of reversing are in How to Undo Negative Keywords in Google Ads.

What it does not do: listing groups. PPCleaner does not touch budgets, bids, ads or keywords, and it does not restructure your product tree. It cannot tell you that your $3 screws are eating the budget meant for your $900 saw. That judgement needs your margin data, and your margin data is not in Google Ads.

So the division of labour is clean. The query side — thousands of search terms a month, most of them seen once, all of them needing a decision — is work a machine should do nightly. The product side — which SKUs deserve budget, what your margins actually are, which price tiers belong in separate campaigns — is work you do once a quarter with a spreadsheet and a coffee. Neither replaces the other, and a Performance Max campaign leaks money if you only do one.

If you want a number for what the query side is costing you before deciding anything, How to Calculate Wasted Ad Spend Honestly walks through a calculation that does not flatter itself.

performance maxlisting groupswasted spendshoppingnegative keywords

Frequently asked

Can I use shared negative keyword lists in Performance Max?

No. Performance Max accepts up to 10,000 campaign-level negative keywords, but it does not accept shared negative keyword lists. Every Performance Max campaign needs its negatives added directly to that campaign. Standard Shopping does accept shared lists and behaves like Search, which is why the two product campaign types need different maintenance habits.

Should I exclude the "Everything else" node in my listing group?

Only if you will check it monthly. Excluding "Everything else" stops the campaign serving anything you have not explicitly included, which gives you tight control. The risk is that every new product you add to the feed lands there by default and never serves. If nobody is checking, a new season can go live and get zero impressions without anyone noticing for weeks.

How many listing group splits should I make?

Fewer than you want to. Each split thins the conversion data available to Smart Bidding, and a campaign that was learning well at 200 conversions a month will learn slowly at 40 per asset group. On small budgets, two or three splits — typically a price or margin tier and a top-spender group — is usually the practical ceiling. Split for a reason you can name, not for tidiness.

Why does my Performance Max spend not match the search terms report?

Because search terms only exist for Search, Shopping and Performance Max inventory — reported in campaign_search_term_view — while Display, Video and App report none. The portion of your Performance Max campaign that served on YouTube or Display produces no search term rows. Google also aggregates low-volume queries away. The gap is normal; it means search terms explain part of your spend, not all of it.

Does PPCleaner change my listing groups?

No. PPCleaner only adds negative keywords based on the search terms your account paid for. It never touches budgets, bids, ads, keywords or listing groups. Restructuring your product tree needs margin data that does not live in Google Ads, so that decision stays with you.

About the author

Alain Abulafya

Founder of PPCleaner · Google Ads consultant & media buyer

Alain has worked in digital marketing for more than 15 years, over 10 of them managing and optimizing Google Ads campaigns. He has worked with more than 100 advertisers in e-commerce and lead generation, and he is a Google Partner. He built PPCleaner to automate the search term reviews he used to do by hand for his clients.

Stop the leak

Clean your search terms. Save time and money.

Every night, PPCleaner reviews the searches your campaigns actually paid for, groups them by intent, and excludes the ones that never convert. No spend threshold to wait for, nothing touched but negatives — and one click undoes any of it.

Start 7 days free

Search, Shopping and Performance Max · Cancel in one click

Related articles

Performance Max Listing Groups and Wasted Spend — PPCleaner