"The website says it's available, but the shelf is empty." If you have said this in your shop, you already know the problem: two stock counts, one warehouse in the real world. Here is why that happens and how a single inventory engine fixes it.

Where the two counts come from

Most growing stores start with a counter for the shop and a simple storefront for the internet, and both write their own stock. The numbers drift apart because:

  • The shop staff sell items the website still shows as available.
  • A return lands on the shop shelf but nobody updates the site.
  • The owner updates stock on one channel at 8pm and the other at noon on Sunday.

The drift becomes visible on the day a customer orders online, pays, and discovers the item left in the store. Nobody made a wrong decision — the system was built to lie in two places.

What fixes it

The practical fix is one stock record per product, shared by every sales channel. The shop sale moves the same quantity the website sees; an online order reserves the same unit the counter would sell.

Two design choices matter in implementation:

  • Shared counts or per-channel splits. A small store with one shelf can share a single count. A store with e-commerce stock in a different location may want split counts that roll up into one view. Either way, one system asks the question "how many do I have?" — the answer is always a number, never two.
  • Reservations for online orders. The website shows stock only after the online basket reserves it. This is the difference between "available" meaning true and "available" meaning perhaps.

The realistic build

You do not need to move everything at once:

  1. One product master — the item codes, names, and prices live in one place, feeding both channels.
  2. One live count — sales from either channel move the same numbers.
  3. Reports by channel — still separate reporting for the shop and the web, but drawn from the same source, so they agree at month-end.

That is the architecture behind RetailOS: one commerce engine, visible on the counter and online, with a single set of numbers in the middle.

The moment to do it

The pain is usually quiet until the first big online week — then the oversells and the "sorry, we're out" emails appear. If that sounds familiar, book a conversation about migrating the stock onto one engine before the next busy season.