The essentials
- An e-commerce audit on a catalog of several thousand SKUs found 35% of shopping budget funding products with zero sales in the past 90 days.
- Bid optimization can’t fix anything if the budget keeps funding products that will never sell, no matter the bid.
- Catalog exclusion discipline consistently beats bid optimization in impact, and yet almost nobody does it seriously, because it’s less exciting than adjusting bids.
A recent audit on an e-commerce catalog of several thousand products turned up a number that should bother any shopping account manager: 35% of the ad budget was funding products that hadn’t sold a single unit in 90 days. Not low-selling products. Products that weren’t selling at all, and were still receiving paid impressions, paid clicks, and an active share of daily budget.
That number isn’t exceptional. It’s arguably the most common, least examined pattern in shopping campaign management.
Why it happens without anyone noticing
A standard shopping campaign doesn’t naturally segment by sales status. It includes the entire product feed unless an explicit exclusion pulls certain SKUs out. Without that exclusion, a product that sold once eight months ago stays exactly as eligible for budget as one that sells every week. Automated bidding has no reason to tell the difference as long as the product stays in the active feed: it keeps allocating impressions based on the relevance signals it perceives (query match, click history), never asking whether that product has any real chance of converting.
The problem scales with catalog size. On a catalog of a few hundred SKUs, a dead product shows up fairly quickly in a performance report. On a catalog of several thousand SKUs, split across dozens of categories managed by different people, a dead product drowns completely in the aggregate. Nobody spots it individually, and the overall performance report still looks acceptable because the rest of the catalog keeps performing well around it. That dilution is exactly what lets the problem reach a third of total budget without ever tripping an alarm.
What bid optimization can’t fix
The natural reaction to an underperforming shopping account is to look at bids: are they too high, too low, poorly distributed across product groups? That’s a fair question, it just arrives in the wrong order. Adjusting the bid on a product that hasn’t sold in 90 days doesn’t make it sell. It just changes how much you pay to keep not selling it.
Bid optimization implicitly assumes every product in the feed deserves a share of budget, and the job is finding the right distribution across them. That assumption collapses the moment a meaningful chunk of the catalog has structurally no chance of converting, no matter the bid: a product permanently out of stock, a product replaced by a newer version but never pulled from the feed, a seasonal product left active out of season. In those cases, there’s no good bid. There’s only a good exclusion decision.
Why this discipline gets skipped so often
Catalog exclusion is a tedious task, not a complex one. It requires cross-referencing 90-day sales data against the active product feed, identifying SKUs with no sales, verifying they aren’t simply new products still in launch phase, then explicitly pulling them from active campaigns. None of that demands advanced technical skill. It demands time spent on a task that produces no immediately visible result, unlike a bid adjustment, which can show an effect within 48 hours.
That’s exactly why exclusion discipline consistently loses out to bid optimization in the attention it gets. A bid adjustment feels like active, measurable work. An exclusion review feels like administrative housekeeping, with no immediately perceivable payoff, even though it produces the single largest impact on overall budget efficiency.
What the fix actually requires
A serious exclusion review starts by cross-referencing three signals, not one: 90-day sales absence, actual stock status (not just the status shown in the feed, which often lags), and the product’s age in the catalog. A product with no sales that launched two weeks ago doesn’t call for the same treatment as one with no sales that’s been sitting there for two years: the first just needs time, the second probably never had real demand.
Once SKUs are identified, exclusion needs to happen at the shopping campaign level itself, not just by deactivating the product in the feed, so a later status change doesn’t quietly pull it back into active campaigns. This review should run on a fixed schedule, monthly at minimum on a large catalog, rather than waiting for an occasional audit to surface it after months of buildup.
The gain that follows a serious exclusion never comes from an improvement in average conversion rate, a number that barely moves at the scale of an entire catalog. It comes from the freed budget, which automatically redeploys toward the SKUs that were already converting, with a bidding algorithm finally receiving a clean signal instead of one diluted by constant noise.
“Isn’t that what the algorithm is supposed to handle”
A common objection: isn’t automated bidding supposed to learn which products convert and shift budget away from the rest on its own, without a manual exclusion pass? In theory, yes, given enough time and a clean enough signal. In practice, a catalog with a third of its budget going to dead products rarely gives the algorithm that clean signal in the first place.
Automated bidding optimizes within the boundaries it’s given, it doesn’t redraw those boundaries. A dead product still receiving impressions dilutes the aggregate performance data the algorithm learns from, which slows down how quickly it can tell a genuinely strong product apart from a mediocre one nearby. Exclusion isn’t a substitute for automated bidding, it’s what makes automated bidding actually work as intended. Skipping it and hoping the algorithm eventually sorts it out on its own usually means paying for months of noisy learning that a single afternoon of catalog cleanup would have avoided entirely.
The prescription
Before touching a single bid on an underperforming shopping account, check first how many SKUs in the active catalog generated zero sales in the past 90 days. If that number exceeds 10 to 15% of the catalog, exclusion needs to come before any bid optimization, not after. An agency or in-house team that jumps straight to bid adjustments without doing that cleanup is optimizing, very carefully, the wrong thing.
The excitement of adjusting a bid never measures the real impact of an action. A catalog cleaned of its dead products beats a perfectly calibrated bid on a catalog that isn’t, almost every time.