Multichannel Inventory Management: How to Prevent Overselling
You sell on Shopify and on Amazon, and both show 3 units in stock. Then two customers buy at the same moment, and you have sold 4 while 3 sit on the shelf.
That is an oversell. It costs you a cancellation, a disappointed customer, and on marketplaces your seller rating too. So multichannel inventory management is a revenue topic. Filing it under bookkeeping is a mistake.
We run three of our own brands, nano, mate and MUSTAX, across several channels. In this article I show you how our stock synchronisation is built and where its limits are.
Why overselling happens in the first place
The basic problem is simple: every channel keeps its own stock level. Shopify knows nothing about Amazon. Amazon knows nothing about your B2B portal.
Time passes between a sale on channel A and the stock correction on channel B. That gap is called latency. With a manual reconciliation the latency is hours to days. During that window channel B keeps selling happily, as if nothing had happened.
Three situations make it especially dangerous:
- Low stock. At 500 units in the warehouse the system forgives any latency. At 3 units it does not.
- Peaks. Black Friday, a viral video, a newsletter: lots of sales in a short time hit stale numbers.
- Returns and incoming goods. Stock moves down and it also comes back. Sync only your sales and you leave sellable goods on the shelf.
Principle 1: One source of truth
The most important decision here is an organisational one, and technology plays no part in it: exactly one system holds the real stock level. Every other channel is a display of that stock.
That can be your inventory system, your fulfilment provider, or one channel you declare the master. For us it is the fulfilment provider: the goods physically sit there, so their stock level is the truth. Shopify and every other channel get their numbers from there, never the other way round.
Without that rule you build sync logic in both directions, and two systems correcting each other will eventually produce endless loops or ghost stock. We got this wrong at the start and spent days hunting the bug.
The practical rule: stock corrections (stocktake, breakage, incoming goods) get recorded only in the master system. Never directly in a sales channel.
Principle 2: Webhooks instead of schedules
The second lever is speed. There are two ways to reconcile stock:
- Polling: every X minutes a job pulls the stock levels and writes them into the channels. Easy to build, and the latency is always X minutes.
- Webhooks: the channel reports every sale immediately. Your system deducts the stock and writes the new number into all the other channels. Latency: seconds.
Every minute counts when it comes to overselling, so webhooks are the right route. With us it works like this: a Shopify order triggers a webhook, that lands in n8n, n8n reserves the quantity and updates the remaining channels. The whole path takes a few seconds.
What webhooks actually are and how to set them up is in Webhooks explained. And if you have never used n8n, Your first n8n workflow is the better place to start.
One detail from practice: webhooks are not guaranteed to arrive. A timeout, a server restart, and the message is gone. So you run two tracks: webhooks for speed, plus a polling reconciliation every few hours as a safety net. That reconciliation finds discrepancies and corrects them.
Principle 3: Safety buffers
Even with webhooks, a residual latency of seconds remains. A buffer helps against that: you report less stock to the channels than you really have.
Example: 10 units in the warehouse, buffer of 2, so every channel shows 8. If two customers buy the last displayed unit at the same moment, the buffer absorbs it.
How big the buffer should be depends on how fast you sell. A rule of thumb:
| Situation | Buffer |
|---|---|
| Slow-moving item | 1-2 units |
| Fast mover, several channels | 1-2 hours of sales |
| Peak periods (Black Friday, campaigns) | raise the buffer clearly |
The buffer costs you something: goods that could be sold are not offered. That is the price of safety. For items that are hard to reorder it almost always pays off. For goods you can reproduce in 3 days you can be bolder.
What this looks like for us
At nano, 50-150 orders come in on a normal day, plus the other brands. The stock flow:
- Sale: Shopify webhook to n8n, stock is reserved at the fulfilment provider, other channels are updated.
- Dispatch: the fulfilment provider reports the outgoing units by API, the reservation becomes a real deduction.
- Return: after inspection at the fulfilment provider the goods go back into available stock automatically. What the returns workflow looks like in detail is in Automating returns management.
- Reconciliation: several times a day a workflow compares the fulfilment stock with every channel. Discrepancies above a threshold fire a Slack alert.
The real test was Black Friday: roughly 10x normal volume, zero oversells. The system is not perfect. We had raised the buffers beforehand and set the alerts to trigger early.
The limits
So you go in with the right expectations:
- Bundles and sets are hard. A set of brush and head pulls stock from two items. You have to build that logic yourself, hardly any channel handles it cleanly out of the box.
- Amazon FBA is its own world. Goods in an Amazon warehouse are a separate physical stock. No sync helps there, only replenishment planning does.
- Physical stock lies anyway. Breakage, shrinkage, mispicks: reality on the shelf drifts from the system. Without a regular stocktake, even the best synchronisation drifts.
- Below roughly 20 orders a day on a single channel you need none of this yet. One look a day is enough. Automate once the problem is real.
Do you need an off-the-shelf tool for this?
The answer: it depends. There are multichannel tools and inventory systems that ship stock sync as a feature. For many shops they are the fastest route, especially when nobody on the team builds.
We still went with our own setup on n8n, for three reasons. First the cost: ready-made tools often bill per order or per channel, our server costs a fixed 15€ a month. Second the special cases: buffers per item, our own rules for campaigns, Slack alerts on our thresholds. That is exactly where standard tools regularly fall over. Third, we wanted to understand what happens. When a sync jams at night, we read the workflow and see the error. With a black box you wait for support.
The downside of building it yourself belongs here too: you maintain it. When a channel changes its API, that is your problem, and no vendor will take it off you. Without someone on the team who can do that, an off-the-shelf tool is the more sensible choice.
Where to start
If you are starting today, in this order:
1. Define the master. One system holds the stock, all others only display it.
2. Build webhook sync for sales. That closes the most dangerous gap.
3. Set buffers. Rough at first, then sharpen them with real numbers.
4. Set up a daily reconciliation plus alerts. So you see discrepancies before customers do.
This topic is part of a bigger picture: how to clean up your operations overall is in the overview Automating e-commerce processes.
Conclusion
Preventing overselling means: one source of truth, fast synchronisation via webhook, and a generous safety buffer. None of the three building blocks is rocket science. Together they make the difference between a stressful peak and a good day.
If you want to connect your channels and do not know where to start: write to us at Flowhouse. We build exactly these setups, for our own brands too, every day.