Stockout or Meta reset? How to read a revenue drop
A stockout and an ad platform problem both look like falling ROAS, but they leave different marks: which channels fell, which products fell, and on which day. Check those in GA4 before you touch the ads.
By Joris van Huët, Founder & CEOPublished 6 min read
Run the numbers for your store: the free break-even ROAS calculator.
If revenue fell in a month you also ran out of stock, the stockout is your first suspect, not the algorithm. A stock problem and an ad platform problem both show up as falling ROAS. They leave different marks in your own data, and you can read those marks before you change a single ad.
A monthly store breakdown doing well on ecommerce YouTube this week makes the case in public. The creator puts a weak month down to stockouts and to what they describe as an industry-wide Meta ads algorithm reset, then walks through back-in-stock flows and a rare mid-year discount (the video). Whatever happened in that store, the two explanations call for opposite responses. One says fix the shelf. The other says change the ads, or wait. It pays to know which one you have.
Why a stockout looks like an ad problem
An ad for a product nobody can buy cannot convert. When a best seller sells out while campaigns keep running, spend carries on, purchases fall, and the dashboard reports that the ads got worse. Nothing about the ads changed. The thing they sell did.
Catalog ads can take sold-out items out of rotation, but only if your feed says they are sold out. Meta's catalog reference says items marked out of stock display as sold out in your shop and do not display at all in your ads (Meta for Developers). Google Merchant Center handles the same thing through its availability attribute, where out_of_stock means you are not accepting orders for the product (Merchant Center Help). If your feed updates on a schedule, an item can sell out between updates. And ads that point straight at a product page, such as a video or a static image, keep sending people to the sold-out page whatever the feed says.
The rest of the store feels it too. Email flows keep featuring the item, organic visitors land on the sold-out page, and returning customers cannot reorder. A stockout hits every channel that sends people to that product, not only paid social. That is the tell.
| What you see | Points to a stockout | Points to the ad platform |
|---|---|---|
| Which channels fell | Paid, organic, direct and email, for the same products | Mostly that platform's own traffic |
| Which products fell | The sold-out items, and the pages that led to them | In-stock and sold-out items alike |
| When it started | The day the item sold out | A day when stock was fine |
| Conversion rate | Falls on the sold-out pages | Falls across the account |
Four checks before you blame the platform
All four come from your own GA4 and your own stock records:
- Which channels fell. Open the traffic acquisition report by session default channel group and compare the weeks before and after the drop. GA4's default channel group rules put organic search, direct, email and paid social in separate rows, so you can see whether the drop sits in one of them or in all of them.
- Which products fell. Split revenue into items that stayed in stock and items that sold out. If the in-stock items held and the drop sits in the sold-out ones, you have your answer.
- When it started. Put the sell-out date next to the first day of the drop. A drop that begins the day your hero product sells out is a stock story. Watch the conversion rate on that product's page for the same days.
- What else changed. New creative, new budgets, a price change, a site release, a discount that ended. Write each one down with its date. Any of them can move revenue, and each one is a confounding variable until you rule it out.
An industry-wide reset is the one explanation you cannot check from inside your store. That does not make it false. It makes it the last one to reach for, after the four checks above have come back clean.
The comfortable story
An algorithm reset blames nobody you employ, and it asks you to wait. It is also the story the platform's own reporting will quietly support. The ads dashboard counts the purchases it can claim, so a sold-out best seller shows up there as a worse campaign, not as an empty shelf. The platform has no reason to tell you the problem was your stock. Its business is your next budget.
None of this is a failure of the person running the store. The reports are built to show ads, not shelves.
What to do this week
- Mark the stockout dates in GA4. Annotations let you add notes to reports to explain changes in the data (Analytics Help). Mark when each key item sold out and when it came back.
- Rebuild last month without the sold-out weeks, or without the sold-out items, and compare the channels again. If the channel story changes, the stockout was driving it.
- Check the feed. Sold-out items should be marked out of stock in your catalog and in Merchant Center.
- Pause or redirect the non-catalog ads that point at sold-out pages.
What to test when stock returns
Bring the stock back before you touch anything else. Hold the ads unchanged for a stretch after the restock, so the recovery reads as stock and not as whatever else you changed that week. Then change one thing at a time.
Keep the stockout window out of any test or read of channel performance. If a holdout or a budget test overlapped the stockout, rerun it. A before-and-after read around a dated event is an interrupted time series, and it only works when you know the date and nothing else moved at the same time.
Expect the back-in-stock email to look like your best flow of the month. It emails people who asked to be told when the item returned, and part of that group would have come back on its own. What the flow adds is a separate question, and a holdout answers it.
Where a read fits
Later, when the shelves are full and you want the channel question answered properly, a causal attribution tool like Causality Engine reads one file, your GA4 Attribution paths export, and shows what each channel caused next to what last-click gave it, with a data-health score and a next step for every channel. Keep your stockout dates beside it: a week with an empty shelf is a week in which no channel could do its job. The read is EUR 99 once per upload, excluding VAT, with a full refund within 30 days and no questions asked.
Related answers
Frequently asked questions
Can a stockout lower ROAS on products that are still in stock?
It can, when the sold-out item was the one your ads and emails pointed at. Visitors who came for it and found it gone may leave without buying anything else, so the whole account reports a worse return. Split revenue into in-stock and sold-out items to see where the drop actually sits.How do I tell a platform delivery problem from a stock problem?
Look at which channels fell. A platform change mostly touches that platform's own traffic, while a stockout touches every channel that sends people to the sold-out item, including organic search, direct and email. Then check whether the drop started on the day the item sold out.Should I pause ads during a stockout?
Pause or redirect the ads that send people to sold-out pages. Catalog ads leave out items that your feed marks as out of stock, so make sure the feed marks them. Keep the stockout dates, because any later read of channel performance has to leave those weeks out or account for them.Is a back-in-stock email flow incremental?
Not automatically. It emails people who asked to be told when the item returned, and part of that group would have come back on their own. It will look strong in your email tool's report, so use a holdout if you want to know what it adds.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Causal AttributionCausal Attribution uses causal inference to determine which marketing touchpoints genuinely cause conversions, not just correlate with them.
- ConfoundingConfounding is a distortion of the estimated treatment effect when a third variable, a confounder, associates with both the treatment and the outcome. Causal inference methods control for confounding to isolate the true treatment effect.
- Confounding VariableConfounding Variable is an unmeasured factor that influences both the marketing input and the desired outcome, distorting the true impact of a campaign.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- Conversion rateConversion Rate is the percentage of website visitors who complete a desired action out of the total number of visitors.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- Product PageProduct Page is a webpage dedicated to a single product. It includes images, descriptions, pricing, and purchase options.