The Shopify Inventory Sync Miss That Cost Us a Flash Sale
A postmortem on a flash-sale weekend where Shopify inventory sync looked fine on paper and oversold three SKUs before we noticed.

Sana runs a small enamel pin and sticker brand out of a shared studio in Rotterdam. She sells on Shopify, Etsy, and TikTok Shop. Two Fridays ago she ran a weekend flash sale to clear an end-of-run collection before a new batch shipped. By Sunday morning her Shopify inventory sync had oversold three designs, one of them by six units. The pins were already gone. The refunds and apology emails ate her Monday. We had helped set up her Shopify inventory sync four months earlier. This one is on us.
What happened
Sana emailed the shared inbox at 07:41 Sunday with the subject line "help, oversold on Etsy again." When we pulled her admin, the numbers were plain. Three SKUs oversold across Etsy and TikTok Shop. One SKU, a small green pin, had sold nine units total across Shopify, Etsy, and TikTok Shop against a starting stock of three. Two other SKUs each oversold by two.
Her stack was standard for a solo maker running three channels. Shopify as the source of truth. Marketplace Connect on the account for Amazon but unused, no listings linked. Trunk sitting between Shopify and Etsy plus TikTok Shop for push-based inventory updates. Buffer stock: zero. The setting she never toggled was "Continue selling when out of stock", which stayed on for every SKU.
The flash sale went live at 18:00 CET Friday. Traffic came in fast from a paid TikTok post that outperformed everything she had run before. By 18:04 the green pin had sold six times on Shopify. Trunk pushed the count out fast. Etsy's storefront reflected the new number eight to eleven minutes later. During two of those minutes, an Etsy shopper checked out for the same design. TikTok Shop lagged even further. That pin's on-channel count on TikTok did not catch up until well after 18:30, long after it had also sold there.
Why the sync looked fine
The Trunk dashboard showed green. Every sync we inspected on Monday morning ran successfully. Every inventory push landed. The API layer worked exactly the way its documentation says it does. Her Shopify inventory sync was doing its job.
The failure was not in the sync. It was in the sync's context.
Three things stacked. First, there is a downstream lag on both Etsy and TikTok Shop that no sync app controls. A merchant on the Shopify Community documented this in April as a 30 to 60 minute delay in some cases; we saw eight to fifteen minutes on Sana's channels the weekend of the sale. That gap is a window during which two channels each see the same unit as available. Under normal weekday traffic her orders arrive one every few hours, so the window is invisible. Under a viral TikTok post arriving fifteen orders a minute, the window is where the oversells live.
Second, "Continue selling when out of stock" was on. That single toggle turns Shopify from a system that will refuse an order when inventory hits zero into a system that will accept every order and let the merchant sort it out later. It is the default. It has to be turned off per variant. Sana had not touched it because nothing had ever prompted her to.
Third, and this one is the ugly part, her buffer stock across every SKU was zero. Community consensus for merchants running Etsy and TikTok Shop alongside Shopify is to keep five to ten percent of hot stock out of the sync feed entirely. We set her stack up with zero because we did not want to explain "buffer stock" to a solo maker who was already juggling a lot. We chose "one less thing to worry about" over "one more thing that protects you". That was a bad trade.
If you want an outside pair of eyes on your Shopify inventory sync before a promotional event, help1's expert chat has a saved diagnostic for exactly this pattern. The first fifteen minutes are free and enough to run the audit.
What we changed the next week
We ran three fixes with Sana on Monday and Tuesday, in this order.
-
We disabled "Continue selling when out of stock" for every variant. Shopify admin, Products, bulk-edit view, one column toggle. About four minutes.
-
We set a per-SKU buffer for her top thirty SKUs by velocity. Two units held back for the slow movers. Eight to ten for the ones that carry a flash sale. Trunk on her plan does not offer per-SKU tiering, so the buffer lives in Shopify's inventory count itself. This is the same shape of problem we wrote about in our field notes on multipack inventory: when the platform's native model does not match how you actually sell, the workaround lives in your own headcount.
-
We added a pre-event checklist she runs the morning of any planned traffic spike. It has one step that matters: open Etsy Seller Hub and TikTok Shop, and compare the on-channel availability count against Shopify's count for the ten SKUs she is promoting. If any of them are off, wait for Trunk to catch up before pushing the campaign live. It takes six to eight minutes.
None of these fixes are elegant. All of them worked. She ran a smaller test drop the following Saturday and did not oversell a single unit.
What we would catch earlier next time
Two things.
We did not stress-test the Shopify inventory sync we set up. Everything we handed off worked at Sana's steady-state traffic. We never asked the question of what happens when steady-state doubles for an hour. We should have run a synthetic burst, even manually placing five test orders across channels in ninety seconds, before signing off. We assumed the polling intervals would hold because they held when we watched them. That is not the same thing as evidence.
We also under-explained the tradeoff. When we told Sana she did not need to think about buffer stock, we were optimising for her Monday-through-Thursday workflow, where orders arrive at a pace the sync can handle. That was the wrong horizon. The honest framing was that buffer stock is the tax you pay for real-time-looking sync, and the weekend of a flash sale is when you turn it up. She would have understood that. We chose the shorter version instead, and it was worse advice.
I have not tested this exact configuration on Shopify Plus, so I do not know whether the newer inventory reservation APIs on Plus would have closed the window on their own. Everything above is a non-Plus story. If you are on Plus and hit the same pattern, your fix path may be shorter.
Take
The "central hub" pitch that Shopify makes about multi-channel commerce is true right up to the moment your traffic exceeds your polling window. Below that line, Shopify does look like the source of truth. Above it, three channels each briefly think they own the same unit, and Shopify's job silently becomes reconciliation instead of prevention. Buffer stock is the tax you pay for the illusion. It is what works when the polling window and your traffic disagree.
Still stuck? Talk to an expert.
Our vetted Shopify experts can fix this issue for you in a live session. $39 per session. Your first 15 minutes are free.