Overselling is rarely a forecasting problem. It is almost always a synchronisation problem, and synchronisation problems have a structural fix.
Why stock drifts
When the storefront keeps its own stock count, every sale creates a small delay before the warehouse hears about it. In that window, the site believes it has units it does not have.
Add a second channel — a market stall, a sales rep, a marketplace — and the window multiplies. Each channel is confident and each channel is wrong by the same few units.
The single record model
The fix is not a faster sync job. It is removing the second count entirely. A product exists once, with one available quantity, and every channel reads that quantity at the moment of checkout.
Because the storefront is not a copy of the catalog but a view of it, there is no drift to reconcile. Price, description, and stock all resolve from the same record.
Reservations and the oversell window
Reading a live number is necessary but not sufficient. Two customers can read the same last unit in the same second. You need a short reservation at add-to-cart or at payment initiation, with an expiry, so the unit is held rather than promised twice.
The length of that reservation is a business decision, not a technical one. Too short and carts abandon; too long and real inventory sits frozen behind abandoned sessions.
A channel parity checklist
For each channel, confirm four things: it reads the same product record, it respects the same reservation rules, it writes orders back to the same order flow, and it is subject to the same promotions logic.
If any channel fails one of those four, you have reintroduced a seam. The goal is not perfectly identical screens — it is one truth behind every screen.
Key takeaways
- Make the storefront a view of the catalog rather than a copy of it.
- Use a short, expiring reservation to close the two-buyers-one-unit window.
- Audit every channel against product record, reservation, order flow, and promotions.