How to stop two sales channels overselling the same inventory
If you sell the same thing in more than one place, something has to stop both places selling the last one. Here is where that goes wrong and what actually prevents it.
Overselling is the most expensive ordinary failure in multi-channel selling. It is not a dramatic outage — everything appears to work, the customer pays, and the problem only surfaces when someone arrives and there is no seat, room, or ticket for them. By then you are choosing between a refund, a costly substitution, and a review you cannot take back.
It happens for a mundane reason: two channels each believed they could sell the last unit. Fixing it is not about selling faster or syncing more often in the abstract. It comes down to four decisions.
1. Decide which system is the single source of truth
Every piece of inventory needs exactly one system that holds the authoritative count. Not two that agree most of the time. If your reservation platform and your own database both think they own availability, they will drift, and the drift will be discovered by a customer.
This is a business decision as much as a technical one, and it is worth making explicitly and writing down. Everything else follows from it.
2. Know whether each channel pulls or is pushed to
Some channels ask you for availability at the moment a customer looks. Others expect you to send updates and will cache what you last sent.
The first is safer, because the answer is current by construction. The second needs more care: a missed update is invisible until it costs you something, so pushes need retries, and they need a periodic reconciliation that catches anything the retries missed. A channel that silently holds a stale number is the classic cause of a double sale.
3. Shrink the window rather than trying to eliminate it
There is always some interval in which two channels could both believe a unit is available. You cannot reduce it to zero across systems you do not control. You can make it small enough that the expected cost is acceptable.
How small depends on what overselling actually costs you. One seat on a bus with spare capacity is an inconvenience. The last room on a sold-out weekend is a serious problem. Scarce, high-value inventory justifies real-time pulls and tighter buffers; plentiful inventory does not need the same expense.
4. Treat the mapping as part of the inventory problem
A surprising share of overselling is not a timing fault at all. It is a mapping fault: the product, rate, or option on the channel does not correspond to the thing you thought it did, so you decremented the wrong pool.
Mappings should be explicit and verifiable by a person, never inferred from matching names. Two products with similar names are a common and costly trap.
What to fix first
If this is happening to you now, the order that usually helps most is: confirm which system is authoritative; check every channel's mapping against what you believe it is; then look at sync timing. In our experience the first two find the problem more often than the third, and they are cheaper to check.
Then add the part that is almost always missing — a reconciliation that runs on a schedule and compares what each channel thinks it can sell against what you actually have. Overselling caught by a report on Monday is a much smaller problem than overselling caught by a customer on Saturday.