Overselling: When Your Shop and Stock System Stop Talking
A customer orders three of an item at half past nine in the evening. Your website happily takes the money and sends a confirmation. The next morning, the warehouse opens the pick list and finds you have one in stock, not three. Now someone has to write the apology, process the refund, and decide whether to lose the customer or the margin by sourcing the shortfall at short notice. None of this was malice or carelessness. It is simply what happens when the shop and the stock system are two separate things that do not talk to each other.
Most businesses arrive here honestly. The website came first, or the back-office system came first, and the two were never meant to be joined. For a while it does not matter much. Then volume grows, the catalogue widens, and the gap between what the site says is available and what is actually on the shelf becomes a daily source of friction. Overselling is the most visible symptom, but it is rarely the only one.
How the gap opens
The core problem is that two systems hold their own version of the truth about your stock, and neither is automatically corrected by the other.
Your storefront shows a number it was last told. Your back-office system — the ERP, the accounting package, the warehouse software, whatever holds the real figures — knows what actually moved today: goods received, trade orders picked over the phone, returns booked back in, breakages written off, a manual stock count adjustment. The website knows none of that until somebody tells it. Between updates, the site is confidently displaying figures that stopped being true hours or days ago.
This produces two failures that pull in opposite directions:
- Overselling. The site shows stock you no longer have, so it accepts orders you cannot fulfil. The customer feels the consequence.
- Phantom stockouts. The site shows zero, or a low number, on items you have plenty of, so it quietly turns away sales you could have made. Nobody complains about this one, which is exactly why it goes unnoticed for far longer.
Both come from the same root cause. The shop is working from a snapshot, and the snapshot is stale.
The hidden tax of keeping them roughly in line
Plenty of businesses are aware of the gap and have built a human process to paper over it. Someone exports stock figures from the back office, reshapes the spreadsheet, and uploads it to the website. Maybe once a day, maybe twice, maybe whenever it is remembered. In the other direction, web orders are read off the storefront and keyed back into the back-office system so the accounts and the warehouse know what was sold.
This double data entry is a real cost, and it is worth naming plainly:
- It consumes staff time every single day, on work that produces nothing new — it only stops two systems drifting further apart.
- It is a steady source of errors. Manual re-keying transposes quantities, mistypes product codes, and skips lines under time pressure.
- It scales badly. The wider your catalogue and the more channels you sell through, the more the reconciliation burden grows, and the more often something slips.
- It still leaves a window. Even with diligent twice-daily updates, the site spends most of the working day showing yesterday’s position. The overselling window narrows, but it never closes.
The spreadsheet routine feels like control. In practice it is a tax you pay to delay a problem you have not actually solved.
Real-time availability, synced from the source
The durable fix is to stop treating the website as a place that stores stock figures and start treating it as a place that displays them. There should be one authoritative source for what is available — your back-office system — and the storefront should reflect that source closely enough that the number a customer sees is the number on the shelf.
In practice that means a live connection between the two. When stock changes in the back office, the change flows to the storefront promptly, without anyone exporting a file. When a customer places an order on the site, that order flows back into the back-office system, reserving or decrementing the stock so the next visitor sees an honest figure. The two systems stop holding separate opinions and start sharing one.
This is what closes the overselling window properly. It also quietly recovers the phantom stockouts, because items you genuinely have stop showing as unavailable. And it removes the daily re-keying, which frees the people who were doing it to do something that actually grows the business. Joining a storefront to a back-office system this way is the heart of any sound e-commerce and ERP integration, and it is usually the change that pays for itself fastest.
A point worth being honest about: “real-time” does not have to mean instantaneous to the millisecond. For most distributors and retailers, availability that updates within a minute or two of a stock movement is enough to eliminate overselling in practice. The goal is to make the gap small enough that it stops causing harm, not to chase a theoretical perfection that adds cost without adding value.
Why the off-the-shelf plugin often falls short
If you run a single shop on a popular platform with one stockroom, an off-the-shelf sync plugin may well do the job, and you should use it. The trouble starts when your operation is more involved than the plugin assumes.
Two situations expose the limits quickly:
- Multiple warehouses. A simple plugin tends to think in one number per product. The moment you hold stock across several locations — a main warehouse, a trade counter, a third-party fulfilment site — the question “how many are available?” stops having a single answer. Availability now depends on which location can serve which customer, what is reserved for trade accounts, and whether you want the site to show the total or only what a given customer can actually receive. Off-the-shelf tools rarely model this, so businesses end up disabling stock sync or, worse, publishing a misleading combined figure.
- B2B selling. Trade customers do not behave like consumers. They order against agreed price lists, place orders well above shelf quantity expecting backorder, work on account terms, and often have their own product codes mapped to yours. A consumer-grade plugin has nowhere to put any of this. It assumes one price, one customer type, and immediate availability — none of which holds for wholesale.
When your selling model has this kind of structure, the integration has to understand your specific rules, not a generic average of how shops work. That is the difference between a plugin and a properly fitted connection.
Pricing and orders travel the same road
Stock is the obvious thing to synchronise, because overselling is loud and embarrassing. But once a reliable connection exists between the storefront and the back office, the same channel should carry pricing and orders, and for the same reasons.
Prices belong in one place. If your back-office system holds the price list — including the customer-specific rates that matter so much in B2B — the website should display from that source, not from a separately maintained copy that drifts out of step the first time someone forgets to update it. And orders captured on the site should land in the back office automatically, so they enter the same picking, invoicing and accounting flow as every other order, with no re-keying and no second window for error to creep in. Stock, price and order are three views of the same transaction. It makes little sense to connect one and leave the other two to the spreadsheet.
Frequently asked questions
How quickly does availability need to update to stop overselling?
Fast enough that the figure a customer sees matches the shelf when they check out. For most distributors and retailers, an update within a minute or two of any stock movement is sufficient. The point is not millisecond precision; it is to shrink the gap between the displayed number and the real one until it no longer causes failed orders.
We already do a daily stock upload. Is that not enough?
A daily upload narrows the problem but does not remove it. For most of the working day the site is showing the morning’s figures while the warehouse has moved on, so fast-selling or low-stock lines can still be oversold. It also keeps the manual workload, and the errors that come with it. A live sync addresses both the overselling window and the re-keying at once.
Do we have to replace our website or our stock system to fix this?
Usually not. The aim is to connect what you already run, not to start again. In most cases both the storefront and the back-office system stay in place and a connection is built between them. Replacement only makes sense where one of the systems genuinely cannot expose or accept the data the other needs, and that is the exception rather than the rule.
Overselling is not a sign that anyone did anything wrong. It is the predictable result of asking two systems to agree about stock without ever letting them speak to each other. Close that gap — one authoritative source, reflected promptly on the shop, with orders and pricing flowing the same way — and the apology emails, the avoidable refunds, and the daily spreadsheet ritual all fall away together. The work is not glamorous, but it is the kind of fix that you stop noticing precisely because it has quietly removed a problem you used to live with every day.