The one-paragraph version (for the people who scan)
Most South African ecommerce stores are quietly wasting a large slice of their Google Shopping budget on products that were never going to sell through paid search. When we audit product feeds, we routinely find that about half of a store’s products are “zombies” — SKUs that consume spend or feed slots but generate no conversions.
This isn’t bad account management. It’s structural: ecommerce platforms push your entire catalogue into Google, with no filter for which products actually have search demand. Once you account for the zombies, the true return on your active products is often three to five times higher than the blended number you’ve been reporting. And the fix isn’t simply to delete the dead weight — it’s to segment your feed properly, give discovery products their own room to perform, and continuously optimise the products that can work. This guide explains why it happens, how to diagnose it, and what to do about it.
Who this guide is for
You’re running an online store in South Africa — on Shopify, WooCommerce, Magento, or a custom build — and you’re spending real rands on Google Shopping and Performance Max (pMax). Your ROAS looks “okay” but not great. You’ve been told Smart Bidding will sort things out. You suspect budget is leaking somewhere, but you can’t see where.
This is the pillar resource that ties together everything we’ve learned from auditing product feeds across pro audio, home goods, art supplies, and other categories in both the South African and European markets. Every specific tactic below links out to a deeper cluster article. Start here, then follow the threads that matter for your store.
Part 1: How Google Shopping actually works (and where the money leaks)
Before we get to the zombies, it helps to be precise about the machinery, because the leak is baked into the plumbing.
Your ecommerce platform generates a product feed — a structured file containing every product in your catalogue, with titles, prices, images, availability, and identifiers. That feed flows into Google Merchant Centre, which checks each product for eligibility and passes the approved ones into Google Ads, where they can serve as Shopping ads or feed your Performance Max campaigns.
Here is the critical detail: there is no layer between “this product exists on my website” and “this product is eligible to spend my ad budget.” The default behaviour of every major ecommerce platform is to submit the whole catalogue. If you sell 6,000 products, all 6,000 go to Google. Google’s algorithm then distributes budget across the full set and starts learning.
That default — feed everything, filter nothing — is the single root cause of almost every problem in this guide.
Shopping ads work on search intent. Someone types a query, Google matches it against your product titles and attributes, and your ad serves. But most ecommerce catalogues aren’t built for search intent — they’re built for browsing.
A customer who lands on your site might wander through categories and discover things they didn’t know they wanted. That’s a legitimate reason to stock 40 variations of a product. It is not a reason to pay Google to advertise all 40, because search demand concentrates on a handful of them.
Part 2: The zombie problem, in plain numbers
When we run a product-level audit, we classify every SKU into one of four buckets based on a 90-day performance window:
- Zero-impression zombies — the product is in the feed but never even shows to a shopper. Often a Merchant Center eligibility problem (out of stock, disapproved, missing attribute) or a feed-quality problem (the title matches no real queries).
- Impression-only zombies — the product shows but never earns a click. Usually a relevance, price, or image problem.
- Click zombies — the product takes clicks and spends your budget, but produces zero conversions over the window. This is where the rand leak lives.
- Active products — the products actually converting and carrying your account.
Across the accounts we’ve audited, the pattern is grimly consistent. Zombie rates cluster around 50% of the catalogue once you clean the data properly — and it’s easy to overstate them if you don’t. (More on that below: multi-country and translation feeds can duplicate your catalogue several times over, inflating the apparent zombie count.
One account looked like it had a 99% zombie rate until we removed roughly 5x duplicated products from a multi-country feed, at which point the real figure was around half.) Even at a true ~50%, click zombies — products actively burning budget with nothing to show — routinely make up a big chunk of that.
The financial distortion is the part that tends to shock store owners. When you separate active products from zombies and recalculate, the numbers move dramatically:
- On one account, blended ROAS of 6.35x became a true active-product ROAS of 31.66x once zombie spend was stripped out — a 5x understatement.
- On another, 4.59x blended became 14.44x active — roughly 3x.
- Even the healthiest account we saw understated its real performance by around 1.5x.
Read that again: the ROAS figure you report to your boss, your client, or yourself may be understating your real campaign efficiency by three to five times, because dead-weight products are dragging the average down. You’re not running a mediocre account. You’re running a strong account with a large parasite attached.
Part 3: Why do so many products never feature? (The real reasons)
This is the question that matters, because the answer determines the fix. When we dig into why products don’t convert, it’s rarely one thing. It’s a stack of structural causes.
Reason 1: Most products simply don’t have enough search demand
This is the big one, and it’s the hardest for store owners to accept. Shopping conversion rates typically sit between 1% and 3%. A product that gets 10 clicks in 90 days at a 2% conversion rate has an expected conversion count of 0.2. In plain terms: that product will show zero sales in most quarters purely by chance — not because anything is broken.
The majority of SKUs in any catalogue never accumulate enough click volume for a conversion to be statistically likely. This is why conversions concentrate so heavily: in one account, fewer than 30 products drove 80% of all revenue. That’s not a broken account. That’s the natural shape of demand. Most of your catalogue was never a viable paid-search candidate to begin with.
Reason 2: Variant explosion creates false zombies
Platforms like Shopify create a separate SKU for every size and colour. A single product in 4 colours and 3 sizes becomes 12 SKUs in your feed, each fighting for the same queries and each collecting a fraction of the clicks.
The parent product might convert perfectly well in aggregate, but every individual variant looks like a zombie in isolation. Before you suppress anything, you have to roll variants back up to the parent product — or you’ll kill winners that only look dead.
Reason 3: High-ticket products have long consideration cycles
This one is especially relevant for South African stores selling expensive, considered purchases. On one account, every product priced above R10,000 showed zero conversions. That’s not a feed problem. Someone researching a R50,000 piece of equipment clicks the ad, reads the specs, then visits a showroom, phones a salesperson, or comes back three weeks later through a different channel.
The click was real, and the intent was real, but the conversion falls outside Google’s attribution window. These are structural click zombies — the product is doing its job, but Shopping isn’t the right channel to measure it. Suppress these blindly, and you’ll cut legitimate demand.
Reason 4: Multi-language and translation duplication inflates the catalogue
If your store runs a translation layer or multiple market feeds, your catalogue can be duplicated several times over. On one audit, the catalogue was duplicated roughly five times across country and language variants — which made the zombie rate look like an apocalyptic 99% until we deduplicated, at which point the real figure was around 50%.
You detect this by comparing unique item IDs against total row count, and you filter it out before you analyse anything. Skip this step,p and you’ll panic over a number that isn’t real, and potentially suppress products that are performing fine in one market while duplicated (and dormant) in another. For South African stores selling into multiple markets, this is worth checking first.
Reason 5: Genuine feed and eligibility problems
A smaller but real bucket: products that are eligible but never get impressions often have broken titles (matching no queries), missing or wrong GTINs, poor images, or MerchanCentreer disapprovals. These are the zombies you actually fix rather than suppress. The trick is knowing which bucket a product is in.
Part 4: Feed optimisation — the lever that rescues fixable products
Not every underperforming product is a lost cause. A meaningful slice of your zombies aren’t demand problems — they’re discoverability problems. The product has demand, but Google can’t match it to the right queries because the feed data is weak: a title that reads like an internal SKU name, missing attributes, no GTIN, a thin description, or copy that was written for a human browsing your site rather than for the way people actually search.
This is where feed optimisation does the heavy lifting, and it’s the difference between suppressing a product and saving it. Your product title is the single most important field in the entire feed — it’s what Google leans on hardest to decide which searches you’re eligible for. Get the title, attributes, and structured data right and a product that was invisible starts appearing for queries it should have been winning all along.
The problem is scale. Hand-writing optimised titles and descriptions for thousands of SKUs is exactly the kind of tedious, never-finished work that quietly never gets done — so most feeds run on whatever the ecommerce platform exported by default. That’s why we built ShopRank, our in-house AI-powered feed optimisation and ranking platform. It’s designed to solve the feed-quality half of the zombie problem at catalogue scale:
- AI-generated titles, descriptions, and highlights optimised for both traditional Shopping search and the newer AI surfaces (Google AI Mode, ChatGPT Commerce), so your products are written the way modern search actually retrieves them.
- Real-time ranking tracking so you can see exactly where each product ranks by search term, location, and device — instead of optimising blind and hoping.
- Direct Shopify and WooCommerce integration — connect your store via API and sync products in one click, no CSV wrangling.
- ML performance forecasting that predicts impressions, CTR, and clicks before you optimise, so you prioritise the products where the upside is real.
- Bulk optimisation across 50,000+ products with auto-updating feed URLs that push changes automatically, plus competitive intelligence on how rival listings are positioned.
In practice, structured feed optimisation of this kind drives up to a 30% improvement in conversion rate — because you’re no longer paying for clicks on poorly matched queries and you’re finally appearing for the searches that convert. Crucially, this works alongside the segmentation strategy above: optimise the feed to rescue the fixable products, isolate the genuine low-demand products into their own discovery campaign, and let the data tell you which is which.
Part 5: Why Smart Bidding can’t save you
A lot of advertisers assume that Target ROAS (tROAS) bidding will automatically stop wasting money on dead products. It won’t, and it’s worth understanding why.
Smart Bidding optimises against signal. It needs conversion history to learn which auctions are worth entering and how much to bid. A product with zero conversions gives the algorithm nothing to optimise. So one of two things happens: either the algorithm keeps exploring the product indefinitely (burning your budget hunting for a conversion that isn’t coming), or it starves the product of impressions entirely (turning it into an invisible zombie). Either way, budget is consumed, or auction capacity is wasted with no result.
Smart Bidding is brilliant at allocating spend across products that convert. It is helpless at rescuing products that were never viable. Handing your entire catalogue to tROAS and hoping it sorts itself out is exactly the mistake that lets zombie rates drift toward half your catalogue and keeps them there.
Related Reading: Target ROAS Bidding Explained
Part 6: What to actually do about it
Here’s the practical playbook, in the order we’d run it on a new account. None of this requires exotic tooling — it’s clean data, sensible campaign structure, feed optimisation, custom labels, and a change of operating mindset.
Step 1: Baseline your zombie rate — on clean, deduplicated data (week one)
Pull the Shopping product report from Google Ads over a clean 90-day window, deduplicate any multi-country or translation rows first, then run the four-bucket classification. This takes an afternoon and instantly tells you how much budget is actually leaking. It’s also one of the most persuasive numbers you’ll ever put in front of a client or a finance team: “around half our products haven’t converted a single time this quarter — and here’s the plan to change that.”
Step 2: Isolate zombies into their own campaign — don’t just exclude them (week one)
This is the step most people get wrong, so read it carefully. Excluding zombies is not the solution. If you simply exclude every non-converting product, two things happen: you throw away products that might convert with a bit of patience, and you leave the rest of your account structurally unchanged so the problem quietly rebuilds. Exclusion is a blunt instrument that treats a demand problem like a hygiene problem.
The better move is separation. Pull your zombies and low-traffic products out of your main campaigns — where they compete against your heroes and dilute the signal — and give them their own dedicated campaign. In that campaign,n they get isolated budget, room to breathe, and time to gather data without dragging down your best performers or being starved by them.
Why this works: a low-traffic product sitting in a campaign full of heroes never gets a fair chance — Smart Bidding sends the budget to the proven winners and the newcomer never accumulates enough data to prove itself either way. In a dedicated discovery campaign, those same products get a controlled amount of budget and a clean window to demonstrate whether real demand exists. Some will surprise you and graduate into performers. The genuine dead weight reveals itself clearly, and then you exclude it — as a data-driven decision, not a guess.
Two campaigns come out of this split:
- Your core campaigns carry the proven converters and stop being taxed by dead weight — this is what produces the immediate jump in effective ROAS.
- A dedicated discovery/zombie campaign gives everything else a fair, budgeted, time-boxed shot at proving demand before you make the keep-or-cut call.
One caution on high-ticket items: apply a price-band and consideration-cycle check before you write anything off. A R50,000 product that hasn’t converted in a 30-day window isn’t necessarily dead — it may have a long consideration cycle that falls outside Shopping’s attribution. Give those items a longer runway or measure them through a different attribution model.
Step 3: Investigate zero-impression products (week two)
Split these into two groups. The first is ineligible in Merchant Centre — out of stock, disapproved, missing attributes — and needs feed hygiene. The second is eligible but invisible — a feed-quality problem where titles don’t match queries, or simply a product nobody searches for. Knowing the split tells you whether to fix or forget.
Step 4: Build a performance-based tier structure with custom labels (week two onward)
Instead of splitting campaigns only by category, segment your products by performance and strategic value using custom labels in a supplemental feed:
- Heroes — proven converters. Aggressive tROAS, uncapped budget.
- Mid-performers — decent but inconsistent. Steady tROAS.
- Long-tail / discovery — low volume, needs its own campaign and budget to prove itself.
- Zombies — under investigation in a discovery campaign, or cut once the data is clear.
This stops your best products from subsidising dead weight, and it ensures your long-tail actually gets served instead of being silently starved. You don’t need heavy automation on day one — even a supplemental feed based on your initial 90-day data is a massive improvement over “everything in one bucket.”
Step 5: Treat custom-label evaluation as an ongoing process, not a one-off setup
This is the point most stores miss, and it’s the difference between a clean-up that lasts and one that quietly rebuilds within a quarter. Custom labels are not a set-and-forget configuration — they’re a living feedback loop that should continuously inform your whole Shopping strategy.
A product’s label is a snapshot of its performance right now. But performance moves constantly: a hero enters its off-season and cools off, a long-tail product suddenly catches demand, a new range lands with no history, a competitor undercuts your price and your conversion rate drops. If your labels are frozen at whatever you set in week two, your campaign structure is optimising against a picture that’s months out of date.
Run the evaluation on a regular cadence — monthly is a sensible default — and let the refreshed labels drive four decisions:
- Segmentation: products graduate and demote between tiers as their performance changes, so heroes, mid-performers, and discovery products are always correctly grouped.
- Budgets: shift spend toward the tiers and products that are proving themselves, and pull it back from those that have had a fair window and failed — a continuous reallocation, not an annual review.
- Campaign strategy: the label data tells you when a discovery campaign has surfaced enough new performers to warrant its own dedicated push, or when a category is quietly decaying and needs attention.
- Inventory planning: this is the underused one. Your Shopping performance data is a live demand signal. The products earning impressions, clicks, and conversions are telling your buying and merchandising teams what to reorder, what to stock deeper, and what to stop buying. Feed that intelligence back into inventory decisions and your ad account stops being just a spending channel and starts being a demand-forecasting asset.
Done properly, the label loop connects your ad account to your P&L: ad performance informs stock, stock informs feed, feed informs campaigns, and campaigns generate the next round of performance data.
Step 6: Adopt the “discovery clock” mindset for new products
This is the operating-model shift that prevents the problem from ever rebuilding. Every new product added to your store gets a defined discovery budget and a defined window — say 30 days or 50 clicks, whichever comes first — inside your discovery campaign where it has room to breathe. If it converts, it graduates into a performance tier with real budget. If it doesn’t, you cut it unless there’s a specific reason to keep investing (a seasonal line, a new launch with marketing support, a high-ticket item measured elsewhere). This replaces the default “throw everything in and let Smart Bidding discover it over 90 expensive days” with a cheap, fast, deliberate triage.
Step 7: Make the whole thing a recurring rhythm
Zombie management, feed optimisation, and label evaluation are not once-off tasks. Products go in and out of stock, seasons shift demand, prices move, and new SKUs arrive with no history. A monthly review — refresh the labels, re-optimise weak feed entries, check what the discovery campaign has surfaced, feed the demand signal back to inventory — needs to become standard operating procedure. The stores that stay healthy treat this as a routine, not a rescue mission.
Part 7: The mindset shift that changes everything
If you take one idea from this guide, make it this one: most of your catalogue is not a viable candidate for paid search advertising — and that’s completely normal.
The goal isn’t to “fix” every zombie, because most of them aren’t broken. There’s simply no search demand, or the purchase cycle doesn’t fit Shopping’s attribution, or the product exists to serve browsers rather than searchers. The goal is to build a system that recognises this quickly and cheaply, rather than spending three months of budget discovering it the expensive way.
That reframes everything. You stop asking “why isn’t this product converting?” and start asking “should this product be in my paid feed at all?” You stop treating a 6.35x blended ROAS as your reality and start managing the 31x engine hiding underneath it. And you stop handing Google your whole catalogue on faith and start feeding it only the products that have earned their place.
Frequently asked questions
What is a zombie SKU in Google Shopping? A zombie SKU is a product in your feed that consumes budget or feed capacity without producing conversions. There are three types: products that never get impressions, products that get impressions but no clicks, and products that get clicks (and spend your money) but never convert. Across the accounts we’ve audited, zombie rates typically sit around half the catalogue once the data is cleaned up — though multi-country or translation feeds can make it look far higher (we’ve seen an apparent 99% collapse to around 50% after deduplicating a 5x-duplicated feed).
Why are so many of my products getting no impressions or sales? Usually because they have insufficient search demand — most products in any catalogue don’t get enough clicks for a conversion to be statistically likely. Other common causes are variant duplication (each size/colour splits the clicks), long consideration cycles on high-ticket items, translation/multi-market feed duplication, and genuine feed problems like bad titles or Merchant Centre disapprovals.
Will Target ROAS or Smart Bidding fix my underperforming products? No. Smart Bidding needs conversion history to optimise. Products with no conversions give it no signal, so it either wastes budget exploring them or starves them of impressions. Smart Bidding allocates spend well among products that convert; it cannot rescue products that were never viable.
How do I calculate my “real” ROAS? Separate your active (converting) products from your zombies and recalculate ROAS using only active-product spend and revenue. In our audits, this “active-only” figure was routinely 3x to 5x higher than the blended number, because zombie spend drags the average down.
Should I just delete or exclude all my zombie products? No — excluding them is not the solution, and it’s the most common mistake. Instead, pull your zombies and low-traffic products out of your main campaigns and into a dedicated discovery campaign where they get isolated budget and room to breathe. Some will gather data and start performing once they’re no longer starved by your heroes; the genuine dead weight reveals itself clearly, and only then do you cut it. Before any of this, roll variants up to the parent product so you don’t misjudge winners that only look dead in isolation, and apply a price-band check so you don’t write off legitimate high-ticket, long-consideration products too early. Zero-impression products should be investigated for feed or eligibility fixes first — many are fixable with better feed data, not dead.
Does this apply to Performance Max as well as Standard Shopping? Yes. In pMax, you control which products serve using listing groups and custom labels, so you can separate your discovery products into their own campaign and keep your core campaigns focused on proven performers. Note that pMax manages bidding at the campaign level — you can’t set per-product bids — so tiering is done through custom labels and campaign structure rather than individual bid adjustments.
How does feed optimisation help with zombies? A share of your zombies aren’t demand problems — they’re discoverability problems. The product has demand, but weak feed data (a poor title, missing attributes, no GTIN) stops Google matching it to the right searches. Optimising titles, attributes, and structured data rescues those products. Doing it by hand across thousands of SKUs is impractical, which is why we built ShopRank — an AI-powered feed optimisation and ranking platform that can drive up to a 30% improvement in conversion rate by getting your products written the way modern (and AI) search actually retrieves them.
Is a high zombie rate a sign my agency or account manager is doing a bad job? Not necessarily. High zombie rates are structural — they come from ecommerce platforms submitting the entire catalogue to Google with no performance filter. Almost every account starts this way. What separates a well-managed account is whether someone is measuring the zombie rate (on clean, deduplicated data), optimising the fixable products, and giving the rest a fair discovery window — not whether zombies exist at all.
Where to go next
This guide connects to a full cluster of deeper guides. Follow the ones relevant to your store:
- Diagnosis: How to calculate your true active-only ROAS
- Campaign structure: Building a discovery campaign that actually performsÂ
This guide is based on 10 years of hands-on product feed management across multiple e-commerce accounts in South Africa and Europe by a former Google employee and his team. Specific client details have been anonymised.
Figures are drawn from real 90-day audit windows. If you’d like your own store’s zombie rate and true ROAS assessed — or want to see what ShopRank can do for your feed — get in touch.


