Picture a shop with two blue scarves left. One sells at the counter. Two more sell online before anyone updates the count. The orders look like good news until the packing starts. This imagined problem has a simple lesson: the number on the shelf is not always the number you can still promise.
To prevent overselling, keep one reliable stock record, reserve items when an order commits them, and update every sales channel. Separate saleable stock from damaged, reserved and incoming stock. If your channels cannot share updates reliably, allocate stock between them instead of promising the same units everywhere.
Give every sellable variant its own identity
A colour is not just a label
A small blue shirt and a large blue shirt are different things to pack. Give each sellable variant a unique stock code, often called an SKU. Keep that code consistent on the shelf label, product record and order. A clear code helps staff distinguish similar items without relying on memory.
Count the items you can actually send
Open damaged boxes, samples and display pieces should not quietly sit inside the saleable total. Neither should stock ordered from a supplier but not yet received and checked. Shopify's inventory-state documentation explains why available, committed, unavailable and incoming stock are distinct states.
Make the stock sheet explain itself
Here is an original example for one scarf variant. The quantities are illustrative, not a Kyloth merchant record.
| Stock state | Units | Can a new buyer order these? |
|---|---|---|
| Physically on hand | 12 | Not all of them |
| Reserved for existing orders | 3 | No |
| Damaged or held for checking | 1 | No |
| Available before a safety buffer | 8 | Yes |
| Incoming from the supplier | 6 | Not as ready stock |
The calculation is 12 on hand minus 3 reserved minus 1 held, leaving 8 available. Do not add the incoming 6 until the receiving process says they are ready. If you accept pre-orders, present them as pre-orders with clear delivery terms.
Handle more than one sales channel deliberately
Connected systems still need checking
Ask how quickly updates move, what happens if a connection fails, and which system owns the final count. “Connected” does not prove that two buyers cannot claim the last item at once. Test that edge case with the platform or integration provider before relying on it.
Use separate allocations when updates are manual
If five pieces are available, you might assign three to the website and two to the counter. That is a simple example, not a universal allocation rule. Update the allocation when moving stock between channels. The trade-off is that one channel may show sold out while another still has stock, but you have made fewer promises than you can keep.
Shopify's overselling guide describes the problems that arise when channels lose track of the same inventory. For Kyloth, marketplace connections and shared cross-channel stock remain planned; do not treat this guide as a claim that those connections are active.
Close the loop on cancellations and returns
Release a reservation at the right moment
An unpaid or cancelled order may still hold stock, depending on the system. Define when that hold expires and when staff may release it. Check payment status before releasing an item from an uncertain order, or you may sell something that another buyer has already paid for.
Inspect returned goods before putting them back
Receiving a parcel is not the same as receiving saleable stock. Check the item, its variant and its condition. Record whether it returns to the shelf, needs repair or cannot be sold. The returns worksheet and RTO guide help distinguish those journeys.
Start with the items most likely to cause a mistake
Count your fast-moving items and the products with confusing variants first. Record the system quantity and the physical quantity, then investigate differences. Write down who corrected the count and why. A correction with no reason can hide the process that keeps causing the error.
Before your next sale, follow one order through reservation, packing, cancellation and return in a safe test setup. Use the launch checklist to record the result. The goal is not a perfect-looking spreadsheet. It is a number the next buyer can rely on.
A conversation worth having
Reader comments
What has worked in your business? Share a useful example or ask a question. Comments are reviewed before publication.
Loading comments…