Back to blog
E-commerce

Reviving Zombie SKUs: Breaking the Visibility Trap with Performance Max

Reviving Zombie SKUs: Breaking the Visibility Trap with Performance Max

With large ecommerce catalogs, it's common for products to fall through the cracks. Not because they're bad products or out of stock — they simply stop getting the visibility they need to perform.

As Google's algorithms optimize toward products with the strongest historical performance, lower-volume SKUs can slowly lose impression share. Less traffic leads to less conversion data, which compounds the issue.

Before long, those products are stuck in what the author calls SKU purgatory.

Meet the zombie campaign

Zombie SKUs aren't a new concept, and it's quite simple to understand why this happens and do something proactive to fix it.

The campaign of choice is typically Performance Max (PMax), because this is exactly where Google's automation can be used to our advantage.

PMax can find additional pockets of opportunity and demand that Standard Shopping may not be uncovering. Sometimes that's all a neglected SKU needs.

When a SKU falls below certain performance thresholds, rather than leaving it inside its existing Standard Shopping campaign where it continues to receive little to no traffic, we automatically move it into a dedicated zombie SKU Performance Max campaign.

The goal isn't to force spend on poor-performing products. It's to give overlooked products another opportunity to compete.

Once those products begin generating impressions, clicks, and even conversion data again, Google's understanding of them improves. If they prove themselves, they earn their way back into their original campaigns.

How to automate it

Before PMax, zombie campaigns were usually more trouble than they were worth because of the time-consuming manual work required to move SKUs in and out.

The key was to remove the manual work.

With the data team, custom logic was built in BigQuery that continuously identifies what qualifies as a "zombie SKU." The exact thresholds are customized for each business, but the goal is the same: identify products that have effectively stopped receiving meaningful opportunity.

The six-step pipeline

  1. BigQuery evaluates every SKU using the custom logic
  2. Eligible zombie SKUs are exported to a Google Sheet
  3. Feedonomics (the feed management tool) reads that sheet and automatically applies a custom label of "zombie SKU"
  4. Google Ads uses that custom label to include those products in a dedicated Performance Max campaign
  5. Those same SKUs are excluded from their original Standard Shopping campaigns to avoid overlap
  6. Once a SKU no longer meets the zombie criteria, the custom label is automatically removed and the product returns to its original campaign

The entire process runs automatically with very little manual work.

Breaking the performance feedback loop

One of the biggest challenges with large catalogs is that Google's machine learning naturally gravitates toward products that already have strong performance signals.

That's great for efficiency, but it can also create a feedback loop where the "rich get richer." Top-performing SKUs continue to receive traffic, while products with little historical data struggle to gain momentum.

A zombie campaign works because it interrupts that cycle. Rather than permanently writing those products off, it provides a dedicated environment where they can generate additional performance signals.

Not every SKU comes "back to life," and that's OK. Some genuinely lack demand. But plenty simply needed another chance to collect impressions, clicks and conversion data before becoming competitive again.

Early results: two weeks

PeriodSKUsClicksImpressionsCostConversionsConv. valueROAS
Pre-launch13,82900$00$00%
Post-launch13,8291,617198,774$5,072.1724.42$5,161.70101.77%

In just two weeks, more than 13,800 previously overlooked SKUs began generating impressions, clicks and even conversion data after receiving little to no opportunity beforehand.

How to read those numbers

It's important to view these results through the lens of the campaign's objective.

Unlike core Shopping campaigns, the primary goal isn't to maximize ROAS or drive significant sales volume. It's to generate enough impression, click and conversion data for underperforming SKUs to graduate back into the Standard Shopping campaigns.

Once a product no longer meets the zombie criteria, it's automatically removed and returned to its original Shopping campaign, making room for the next set of overlooked products.

The next step is measuring whether the additional history improves overall performance after the SKUs are reintroduced.

Automation makes it scalable

The biggest advantage isn't the Performance Max campaign itself. It's the automation.

Without BigQuery, Feedonomics and custom labels, maintaining thousands of products would require constant manual review. Instead, products flow between campaigns based on their performance, with successful SKUs returning to the campaigns where they belong.

For large ecommerce catalogs, it's an efficient way to make sure promising products don't quietly disappear simply because Google's algorithms stopped prioritizing them.

Practical takeaways

Distinguish "poor performers" from "products that never got a chance." That distinction is the campaign's whole premise: a SKU with zero impressions isn't performing badly, it has no data — and the two need different treatment.

Define thresholds against your own catalog. There is no universal zombie criterion; answer "has this effectively stopped receiving meaningful opportunity?" with your own data.

Don't run it if manual work remains. The author found it not worth the trouble before automation. If labelling and unlabelling aren't automatic, it collapses at thousands of SKUs.

Don't judge it on ROAS. The 101.77% is a side effect, not the objective. The KPI should be the number of SKUs that graduated.

Always block the overlap. Failing to exclude zombie SKUs from their original Standard Shopping campaigns makes your campaigns bid against each other — the same cannibalisation problem covered in Why Separating Brand and Non-Brand Campaigns Makes ROAS Honest.

Check feed quality first. A zombie campaign competes on what the feed contains; a weak feed cannot convert an opportunity — read alongside AI Shopping Starts With Your Product Feed.

Don't stack audience exclusions on top. Since the point is collecting data, layering controls like Household Income Exclusions in Performance Max shrinks the very signal you are trying to gather.

Frequently Asked Questions

What is a zombie SKU?

A product stuck in a loop: it gets no impressions, so it accumulates no conversion data, so it continues to get no impressions — not because it is a bad product or out of stock. The author calls this state "SKU purgatory."

Why use Performance Max for this?

PMax can find additional pockets of opportunity and demand that Standard Shopping may not be uncovering, and sometimes that is all a neglected SKU needs.

How is the pipeline automated?

BigQuery evaluates SKUs with custom logic → eligible ones export to a Google Sheet → Feedonomics applies a "zombie SKU" custom label → Google Ads includes them in a dedicated PMax campaign → they are excluded from their original Standard Shopping campaigns → once they exit the criteria the label is removed automatically and they return.

What were the results?

In two weeks, 13,829 SKUs generated 198,774 impressions, 1,617 clicks, $5,072.17 in cost, 24.42 conversions and $5,161.70 in conversion value (101.77% ROAS), up from zero clicks and impressions.

What should the KPI be?

Not ROAS or sales volume, but whether underperforming SKUs generated enough impression, click and conversion data to graduate back into Standard Shopping. Products that exit the criteria return to their original campaign automatically.

Where does your own site stand?

To apply what you just read to your own site, start with a free audit of where things are now.

A strategist replies within 24 hours on business days.

Read next