When Your Competitor Runs Out of Stock, Their Customer Is Up for Grabs
Most paid media teams treat ad spend as a static allocation problem: pick the top keywords or audiences, set bids, review performance weekly. But there's a pocket of high-intent demand that only exists for a few hours or days at a stretch, and it's sitting in plain view on your competitors' product pages every time they run out of stock.
Call it availability-triggered conquesting. The signal isn't a keyword or an audience segment. It's a competitor SKU flipping to out-of-stock. It belongs to the same family as everything else in web scraping for marketing: external data that your internal analytics will never show you, because it isn't about you.
The idea in one sentence
When a competing SKU goes dark, the shopper who wanted it doesn't disappear. They go looking for the next-best option, and if your ad isn't in front of them in that window, someone else's is.
The behaviour is documented. DOSS surveyed 1,000 US adults in April 2026 and found that when shoppers hit a stock-out, 45% buy from a different retailer and 32% switch to a competing brand, at least temporarily (Stockout Stigma Index; covered by Chain Store Age). "Temporarily" is doing real work in that sentence, and it's the reason speed matters: you're not buying a customer for life, you're buying the one order that was already decided.
Take a category with a clean one-to-one competitive map. Running shoes, say. If you sell 100 products that go head-to-head with roughly 300 equivalent SKUs across three competitors, at any given moment some share of those 300 are unavailable: a size run sold out, a colour discontinued mid-restock, a promotion that emptied inventory faster than the supply chain could refill it. Each of those is a shopper who was ready to buy and just got blocked.
Why this beats always-on conquesting
Standard conquesting means bidding on a competitor's brand terms and running comparison ads against them. It works, but it's blunt. You pay to compete for that demand whether or not the competitor can actually fulfil it, and most of the time they can.
Availability-triggered conquesting only spends aggressively in the window where the competitor is structurally unable to serve the customer. That changes two things.
Conversion intent is higher. The shopper isn't choosing between brands. They were already sold and hit a wall. Your ad removes a blocker rather than manufacturing interest.
You get a defensible reason to flex bids. "Competitor SKU X went out of stock at 09:40" is a clean, auditable trigger. That's far easier to greenlight in a budget review than an unexplained bid spike.
One claim we'd be careful with: it's tempting to assume the auction thins out because a competitor with no stock stops defending the page. In practice plenty of retailers leave ads running on out-of-stock SKUs, either because nobody wired inventory into the ad account or because the campaign is at the category level. Don't build your business case on a cheaper auction. Build it on the conversion rate.
Doesn't Smart Bidding already do this?
Fair question, and the honest answer is partly.
Target CPA and Target ROAS bidding watch conversion rate and bid up when it rises. If a competitor stock-out lifts your conversion rate, Google will eventually notice and pay more for that traffic on its own. So what does an explicit trigger add?
Three things.
Latency. Automated bidding is reactive. It needs conversion volume to accumulate before the signal clears noise, and on a single SKU's keyword set in a mid-volume category that can take most of a six-hour window. By the time the algorithm has enough data to move, the window is closing. A stock-out trigger fires on the first pageview of the competitor's product page, not the fifteenth conversion of yours.
It has no idea why. Smart Bidding sees a conversion rate change. It doesn't know the cause, so it can't distinguish a competitor stock-out from a seasonal bump, and it can't act on the restock. When the competitor's inventory returns, the algorithm keeps bidding at the elevated level until performance decays enough to correct. An explicit trigger pulls spend back the moment the SKU flips green.
It can't touch creative or campaign state. Bidding automation adjusts bids. It won't unpause a campaign, swap in a Responsive Search Ad variant that leans on availability, or shift budget between SKU pairings.
If you run manual or Enhanced CPC, none of this is a debate. If you run Smart Bidding, the practical implementation isn't fighting the algorithm with manual bids. It's using seasonality adjustments, campaign state, and creative swaps as your levers, and letting the bidding do what it's good at.
What the CPA math actually looks like
Worth being precise here, because the arithmetic is easy to present dishonestly.
Take a single mapped SKU pair in a mid-volume category: a $1.20 CPC and a 2% conversion rate on shoppers who land on your product page while the competitor's equivalent is in stock. That's a $60 cost per acquisition.
Now the competitor goes dark on that SKU for six hours, and conversion rate on that traffic goes to 11%. (That number is illustrative, not measured. Your own before-and-after data is the only version of it worth planning against, and measuring it is the first thing to do before you automate anything.)
The important point is what causes what. The higher bid doesn't produce the higher conversion rate. The stock-out does, and it would do so whether you bid a cent more or not. What the elevated conversion rate buys you is headroom:
- At 2% conversion, a $60 target CPA supports a maximum CPC of $1.20.
- At 11% conversion, the same $60 target CPA supports a maximum CPC of $6.60.
So a 3x bid to $3.60 during the window isn't paying a premium. It's spending about half the headroom the window opened up, buying impression share you'd otherwise lose, and landing at roughly $33 CPA — nearly half your baseline.

That's the whole argument. Static bidding can't tell the difference between a shopper who's still comparing and one who's already been blocked once. A stock-out trigger can, and it can tell the difference in minute one rather than hour five. Miss the first hour because a human is reading a weekly report and you've spent the cheapest part of the window on nothing.
How to wire the trigger into Google, Meta, and retail media
The trigger itself is platform-agnostic: a webhook or API call fired the moment a mapped SKU flips state. What it calls differs.

Google Ads. Google Ads Scripts run on a time-driven schedule down to hourly and can adjust keyword bids, toggle a paused campaign, or swap an ad variant. The Google Ads API gives you the same control on demand rather than on a schedule, which matters when your monitoring is more frequent than hourly. Scripts are the lower-lift path if you're not ready to build against the full API.
Meta. The Marketing API supports rule-based budget and bid changes. Pair it with dynamic creative slots so "in stock now" messaging swaps in automatically instead of needing a hand-built asset per SKU.
Retail media (Amazon Ads, Criteo, and similar). These platforms increasingly expose bid and budget APIs for exactly this kind of rule, but maturity varies. Check current API coverage before assuming parity with Google or Meta.
You don't need any of this on day one. A daily Slack alert carrying the mapped SKU, the stock-out duration, and a suggested bid multiplier, actioned by whoever owns the account, is a reasonable way to prove the case before you build the automated version. Do that first. It also gives you the conversion-rate delta you need to replace the illustrative 11% above with your own number.
This is a different mechanism from feeding your own stock status into Google Shopping or Meta dynamic product ads (see our post on product feeds). That's your inventory driving your ads. This is the competitor's inventory driving your bids.
Where this fits if you already run retail media tools
If you sell on Amazon or Walmart and pay for an enterprise retail media platform, some version of this is probably already in your stack. Those tools adjust marketplace bids when a competitor ASIN goes dark, and Walmart's retail media ecosystem has published case studies on the uplift.
This post isn't for that audience. It's for everyone selling on their own storefront, or running Google and Meta campaigns outside a marketplace, who doesn't have a six-figure retail media contract. The DIY version, built on scraped competitor data and a script instead of a bought platform.
How to monitor competitor stock at the variant level
Doing this for one product against one competitor is a five-minute manual check. Doing it continuously across a real catalogue needs three pieces.
1. A maintained product map. Your SKUs mapped to the closest equivalent at each competitor: same category, comparable price point, same use case. Get this wrong and you trigger conquesting on irrelevant signals. A $180 stability shoe going out of stock has nothing to do with your $90 neutral trainer.
Two things make this harder than it sounds. First, you have to be right about who your competitors actually are, which is a data question rather than a gut one (how to identify your true ecommerce competitors). Second, catalogues shift constantly, and a SKU map that breaks every time a competitor renames a colourway isn't a map. The same stable-mapping problem shows up when teams try to build a category price index, and the answer is the same: the mapping needs maintenance as a standing job, not a spreadsheet built at launch and never touched.
2. Variant-level availability, not page-level. This is where most first attempts break. A shoe sold out in sizes 8 to 11 but still showing "in stock" because a 6 and a 13 remain is functionally unavailable to most of the demand you care about. The aggregate badge on a product page lags reality more often than it reflects it.
In practice the reliable signal usually isn't the badge at all. Most modern storefronts ship variant availability in structured form: schema.org product markup with an offers.availability field per variant, or a JSON blob in the page payload that the front end reads to grey out size buttons. Shopify stores expose a variants array with available: true/false. Read those, not the rendered HTML, because the rendered state depends on JavaScript that may not run the same way in your crawler as in a browser. Where a site genuinely renders availability client-side only, you need a headless browser for those pages, which changes the cost profile enough that it's worth knowing before you scope the project.
Set monitoring frequency to match how fast the category turns over: hourly for fast-moving items, daily for slower ones. Hourly polling across a few hundred SKUs on a well-defended retail site is where the boring infrastructure problems start, which brings us to the rest of it.
3. An automated bridge into the ad platform. The moment a mapped SKU flips, that should become an action with no human in the loop: raise bids on the corresponding keyword set, unpause a campaign, swap in availability-led creative, or reallocate budget from a lower-priority pairing. By the time someone spots the gap in a weekly report, it's closed.
Is it legal to monitor a competitor's stock levels?
Publicly listed product pages are among the least contentious things to collect. There's no personal data involved, no login wall, and the information is displayed to every shopper who visits. Prices, availability, and product attributes on public catalogue pages have been scraped commercially for two decades.
The constraints that actually bite are practical rather than legal: respect robots.txt, keep request rates low enough that you're not degrading someone's site, don't route around authentication or anti-bot measures in ways that breach a site's terms, and don't republish competitor content. If your legal team wants a sharper answer than this, get one before you start rather than after your crawler has been hammering a site for three months.
The details that decide whether this works
Restocks deserve the same rigour as stock-outs. Pull conquest spend back the moment inventory returns, otherwise you're defending a window that already shut. This is the half teams skip when they build the first version, and it's the half that quietly eats the gains.
Attribution needs its own tag. If you can't separate revenue from stock-out-triggered conquesting from your always-on campaigns, you can't show the approach is incremental, and it gets cut in the next budget cycle for the wrong reason.
It generalises past footwear. Electronics, beauty, home goods, and anything with seasonal or promo-driven demand are strong fits: categories where stock-outs are frequent, publicly visible, and reflect real unmet demand rather than deliberate scarcity marketing. DOSS's Reddit analysis found fashion and apparel generating the highest rate of stock-out complaints of any category at 7.9% of posts, with beauty and personal care (7.5%) and electronics (7.4%) close behind. Treat that as a rough proxy for where the frustration is loudest, not for where stock-outs actually happen. DOSS is explicit that the Reddit data doesn't confirm real stock-out events.
Conquesting cuts both ways
Everything above is offence. A mature programme also runs defence, because once you start bidding aggressively whenever a competitor stocks out, expect the reverse. The same monitoring that flags a competitor's stock-out should flag when your own SKUs are exposed: low stock, a price gap, a lapsed brand-term defence. Better that your team sees it before a rival's system does.
If you're already running competitor price monitoring, you have most of this pipeline already. Availability is one more field on pages you're crawling anyway, and the marginal cost of collecting it is close to zero compared to standing the crawl up in the first place.
The part that's actually hard
The strategy is simple once you frame it as an inventory problem instead of a bidding problem. What's hard is keeping structured, near-real-time competitor availability data flowing accurately, at variant level, mapped correctly as catalogues change underneath you, across hundreds of SKUs, every day, indefinitely.
That's a data infrastructure problem before it's a marketing one. Continuous crawling of competitor product and category pages, variant-level parsing that survives a front-end redesign, normalisation into a feed your campaign automation can consume, and monitoring that tells you when a parser silently starts returning "in stock" for everything. Get that wrong — stale data, broken variant detection, an unmaintained SKU map — and the signal you're trading on is noise dressed up as a trigger.
Most paid media teams don't want to own that pipeline, and shouldn't have to. This is what our ecommerce scraping service exists for: you get the clean, mapped, variant-level availability feed, not another crawler to babysit. Talk to a Datahut data expert about what your competitor set would take to monitor, and we'll come back with a feasibility read on the specific sites.
Frequently asked questions
What is availability-triggered conquesting?
Bidding aggressively on a competitor's demand only during the windows when they're out of stock and can't serve it. Standard conquesting runs continuously, whether or not the competitor can fulfil the order. Availability-triggered conquesting uses their inventory state as the on/off switch, so spend concentrates in the hours when their shopper has nowhere else to go.
How do I know when a competitor is out of stock?
Read the structured data on their product pages, not the visible badge. Most storefronts publish variant-level availability in schema.org product markup under offers.availability, or in a JSON payload the front end uses to grey out size buttons. Shopify sites expose a variants array with an available flag per variant. The rendered "In Stock" badge is the least reliable signal on the page — it usually reflects the parent product rather than the specific size or colour a shopper wants.
How often should I check competitor stock levels?
Match the polling interval to how fast the category turns over: hourly for fast-moving items, daily for slower ones, every 15 minutes for high-value SKUs in volatile categories. The interval sets a ceiling on how much of any window you can act on. If a typical stock-out lasts six hours and you poll daily, you'll usually find out after it's closed.
Does this work with Google Smart Bidding?
Yes, but the lever changes. You don't override Smart Bidding with manual bids — you feed it a seasonality adjustment for the window, or you change campaign state and creative, which bidding automation can't touch on its own. Smart Bidding will eventually detect the conversion rate lift, but it needs conversion volume to accumulate first, and it can't act on the restock because it never knew the cause.
Is it legal to monitor a competitor's stock levels?
Collecting publicly listed product pages is about as uncontentious as web data collection gets: no personal data, no login wall, and the information is shown to every shopper who visits. The constraints that matter are operational — respect robots.txt, keep request rates modest, don't route around authentication, and don't republish competitor content. Get a view from your own legal team before you start, not after.
How large a bid increase is justified during a stock-out?
Work backwards from your target CPA, not from a multiplier. Your maximum defensible CPC is target CPA × the conversion rate you see during the window. At a $60 target and an 11% in-window conversion rate, that's $6.60 — five and a half times a $1.20 baseline. Most teams should spend well under the ceiling. The goal is capturing volume at an improved CPA, not spending the entire margin the window opened.
What if I don't have a competitor SKU map?
Build one for a narrow slice first — ten to twenty of your highest-margin products against a single competitor. A full-catalogue map is a large project and unnecessary before you've measured whether the conversion lift is real for your category. The map is also the part that decays fastest as catalogues change, so it needs an owner and a review cadence, not a one-time build.
Which categories does this work best in?
Categories where stock-outs are frequent, publicly visible, and reflect genuine unmet demand: footwear and apparel, beauty, consumer electronics, and anything with seasonal or promotional demand spikes. It works poorly where scarcity is deliberate — limited drops, manufactured exclusivity — because the shopper who wanted that item usually isn't looking for a substitute.
How do I prove the approach worked?
Tag stock-out-triggered spend separately from your always-on campaigns before you start, not after. Without that separation you can't show the revenue was incremental, and the approach tends to get cut in a budget review for reasons unrelated to performance. The comparison worth tracking is CPA and conversion volume inside triggered windows against the same SKU set outside them.
References
- Stockout Stigma Index — DOSS, survey of 1,000 US adults (April 2026) plus analysis of 8,679 Reddit posts, on switching behaviour and category-level complaint rates. Coverage in Chain Store Age.
- Google Ads Scripts documentation — scheduling bid, campaign, and creative changes.
- Meta Marketing API and Ad Rules Engine — rule-based bid and budget automation.
- What brands need to know about conquesting at Walmart — Profitero, on inventory-aware conquest timing in retail media.