Insights

Retail operations

Why your online store shows stock you don’t have

Overselling is rarely a warehouse problem. It is almost always a synchronisation problem between systems that were never designed to talk to each other.

What actually causes overselling?

A customer buys the last unit at the counter. The storefront does not learn about it for another few hours, or until someone exports a spreadsheet that evening. In that window the same unit sells online. Nothing was miscounted. The count was simply correct in one place and stale in another.

Most retailers do not lack tools. They have a point-of-sale system, a storefront, maybe a marketplace listing and a spreadsheet holding it together. Each is accurate on its own. The failure lives in the gaps between them.

Why nightly synchronisation is not synchronisation

Batch syncing sets a refresh interval, and that interval is your margin of error. If stock updates once a night, every channel spends the day working from a position that is up to twenty-four hours old. On slow-moving inventory nobody notices. On anything that sells in volume, or anything with one unit in stock, it produces exactly the failure customers remember.

Bidirectional means both directions matter. A sale online has to decrement the store's position as immediately as a sale at the counter decrements the storefront's. One-way pushes from a master system leave the same gap, just pointing the other way.

What a single stock position requires

  • One record per unit, referenced by every channel, rather than a copy per system.
  • Writes that happen as the sale happens, not on a schedule.
  • Reservation handling, so an order that is placed but not yet fulfilled cannot be sold twice.
  • Batch and expiry tracking where the product demands it, held against the same record.
  • Low-stock signals that fire off the live position rather than a report.

Where variant-heavy catalogues make it harder

Categories like jewellery, apparel and configurable goods multiply the problem. Pricing may depend on weight, material or making charges rather than a fixed SKU price, so the storefront cannot simply cache a number. The pricing rule itself has to be shared, not just the result of it. If the rule lives in the back office and a copy of the output lives online, the two will diverge the first time an input changes.

The reconciliation cost nobody budgets for

Ask a store manager how the day ends. If the answer involves comparing exports, the operation is paying a daily tax in staff hours to compensate for systems that do not agree. That cost is invisible because it never appears as a line item. It appears as people staying late.

Removing it is not a matter of buying another tool. It is a matter of reducing the number of places a stock number is allowed to exist.

Where to start

Map every system that can change a stock number today, and every path by which that change reaches the others. The list is usually longer than expected, and the drawing normally makes the fix obvious before any code is written. Consolidate the authority for stock into one place first; connect channels to it second.

Work with us

Facing this in your operation?

We study the system before choosing the solution. If any of the above sounds familiar, we would be glad to walk through it with you.

Get in touch

Next article

Study the operation before you build the software

Read next