Every version of this question arrives in Search Console: pause Meta ads for out-of-stock size variants, stop promoting a sold-out size, which tools sync Shopify inventory to catalogue ads at variant level. This page answers the one underneath them all: what does Ralph actually do when a size sells out.
Direct answer: Ralph reads Shopify inventory at variant level, maps each variant to its Meta and Google catalogue item, works out days of cover and whether the core sizes are still in stock, finds the campaigns still spending against a broken item, and stages the fix (a per-campaign exclusion, a product-set rebuild, or a supplemental feed change) in a review queue with the evidence attached. You approve, it applies, and it can be reverted. It does not auto-pause ad sets and it does not overwrite catalogue availability.
Why "auto-pause" is the wrong verb
Operators picture a line for size 10 in Ads Manager flipping to Paused the moment the last unit sells. Catalogue ads do not work like that. Meta's catalogue engine stops shopping a sold-out retailer ID on its own, provided the catalogue is current at variant grain. Google Shopping does the same with availability in Merchant Center. That part is automatic and it is not something to buy.
The gaps are everywhere else. The catalogue lags the warehouse by minutes or hours. The parent product still reads in stock when only the unpopular sizes remain, so the ad keeps serving to people who will not find their size. Nobody joins spend to stock, so the waste is invisible until the month end. And the static ad featuring the sold-out colourway keeps running because no catalogue rule can see a JPEG. Those gaps are the job, and they are laid out layer by layer in which platforms pause ads for out-of-stock variants.
Part one: identity at variant grain
Everything depends on one boring mapping: Shopify variant to Meta retailer ID to Google offer ID. If your feed sends parent products, or variant IDs that do not match, no rule downstream can be right. Ralph reads the Shopify variant, matches it to the catalogue items, and tells you when the match is missing. A brand can verify this itself with a controlled stockout: how to verify a tool's variant-level stock sync.
Part two: cover and core-run health, next to spend
Two numbers per variant. Days of cover, from the sell rate and units on hand, so "low" means something in days rather than units. And core-run health per style: are the sizes that carry the conversions still available? A jacket with the 6, 8 and 16 in stock and the 10, 12 and 14 gone is 50 percent in stock and effectively unsellable at scale. Parent-level cover lies in fashion, and the reason is written up in core-size automation.
Those numbers sit in the same view as spend. That is the part that changes decisions. "Size run broken" is a merchandising note. "Size run broken and this campaign spent £340 against it yesterday" is a Monday morning action with a pound sign on it. The maths for that figure is in variant-level ad spend and waste.
Part three: the conflict list
Ralph looks across connected campaigns and product sets for items that are broken on stock and still being paid for, and lists them ranked by spend at risk. That list is what appears in the morning brief. It is the difference between a stock report and an operator's to-do list.
Part four: staged actions, not silent writes
| Situation | What Ralph stages | Where it applies | Default |
|---|---|---|---|
| One SKU burning spend in one campaign | A per-campaign exclusion, with recorded intent and a revert | Meta product-set exclusion for that campaign; Google campaign-level exclusion | Writer off until enabled; approval required |
| A bestseller set full of dead colourways | A product-set rebuild from confirmed variant IDs | Meta Commerce Manager; new carousels stay PAUSED | Approval required |
| Google Shopping still showing sold-out sizes | Availability and labels via a supplemental feed | Merchant Center supplemental feed only, never the primary | Writer off until enabled; approval required |
| Static or UGC ad features a dead size | A flag in the brief for a human | Nowhere. This is a creative decision | Never automated |
| Core sizes down to the last few units | A buffer proposal: withhold the last units from ads | Exclusion or set change, as above | Approval required |
Shared product sets are deliberately left alone. A set used by five campaigns is not edited to fix one of them, because that is how a Tuesday fix becomes a Wednesday incident. The exclusion and revert model is in exclude one product from a Meta or Google campaign, and the set-rot problem it prevents is in product set rot.
Part five: approval, then apply, then revert if needed
Approved actions are written with the reason recorded. Every exclusion has a first-class revert, so restocking is one click rather than an archaeology exercise. Rejected actions close. The Free plan can see all of this and act on it by hand; Growth and above can approve and let Ralph apply. The writers that move money are off by default on every plan until you enable them.
Availability is automatic and free. What you are actually short of is someone who puts stock next to spend every morning and stages the fix. That is the job.
What this is not
- Not a replacement for Shopify's Meta channel or your feed. Those own availability. Ralph reads it.
- Not a bulk availability patcher. We do not PATCH item availability in the catalogue.
- Not an ad set pauser. Catalogue campaigns keep running on siblings that can ship, which is correct.
- Not a creative fixer. An ad that shows a size you cannot ship needs a person: when the ad features a size you cannot ship.
Score us like any other vendor
Is the catalogue item the Shopify variant? Is a buffer named? Is there a written core-run rule? Does the tool show spend next to stock, or only stock? Does it ask before writing? Those five questions, with what a yes and a no look like, are on why Ralph for catalog ads. Apply them to us. If three answers are no, you are buying a meeting. A sold-out variant is not the same failure as a disapproved listing, and if Merchant Center is showing red counts against live stock you should read how to fix Google Shopping disapprovals instead.
What Ralph does when a size sells out
- Read the variant, not the parent. Shopify inventory is read at variant grain and each variant is matched to its Meta retailer ID and Google offer ID, so a sold-out size 10 is a specific catalogue item, not a percentage on a parent.
- Work out cover and core-run health. Days of cover per variant from the sell rate, and whether the sizes that carry the conversions are still in stock. A parent that is 60 percent in stock with its core sizes gone is treated as broken.
- Find the conflict. Which campaigns and product sets are currently spending against the broken item, and how much. That is the number that makes the decision worth taking.
- Stage the action. A per-campaign exclusion, a product-set rebuild, or a supplemental feed availability change, with the evidence attached, in the review queue. Nothing is written yet.
- You approve, it applies, and it is reversible. Approved actions are written with intent recorded and a first-class revert. Shared product sets are left alone. Rejected actions are just closed.
Questions people actually ask
Does Ralph automatically pause Meta ads when a Shopify size goes out of stock?
No, and we think the question has the wrong verb. Catalogue availability at variant level already stops Meta shopping a sold-out size if the catalogue is current. What Ralph adds is the layer nobody else owns: putting variant stock and cover next to spend, encoding a core-size rule, and staging exclusions or product-set rebuilds for approval. It does not flip ad sets to paused at 14:03.
Does Ralph work at the size and colour variant level?
Yes. That is the whole design centre. Each Shopify variant is mapped to its Meta retailer ID and Google offer ID, cover is computed per variant, and core-run health is judged per style from the sizes that actually convert.
What is a core-size rule and does Ralph apply it?
A core-size rule pulls a style from catalogue ads when the sizes that carry its conversions have sold out, even if tail sizes remain, and keeps it live when only tail sizes are gone. Ralph computes core-run health and stages the exclusion. Applying it is approval-gated and the writer is off by default.
Can Ralph exclude a product from one campaign without touching the others?
Yes. Exclusions are per campaign. Shared product sets are left alone so a fix in one place does not silently change five others. Intent is recorded and every exclusion has a revert.
What about Google Shopping?
Same policy, different pipe. Ralph writes to a supplemental Merchant Center feed only: availability and labels layered on top of your primary feed, never overwriting it. Campaign-level exclusions in Google Ads are staged for approval the same way as Meta.
What does Ralph not do about stockouts?
It does not patch item availability in the catalogue, it does not auto-pause ad sets, and it does not fix a static or UGC ad that features a dead size. That last one is a human job, and Ralph flags it rather than pretending.
If a sold-out size is the problem: Ralph reads every size against every campaign overnight, finds the ones still paying for an empty shelf, and stages the exclusion with a revert for restock day. You say yes. See Ralph · How Ralph handles out-of-stock sizes · Docs