Home › Blog › Available vs on hand: which number your alert actually reads
Available vs on hand: which number your alert actually reads
Shopify holds four numbers for every variant and shows you a different one depending on where you look. Your alert reads one of them. Your reorder decision usually reads another. The gap between those two is stock you have already sold.

On this page
- The four numbers Shopify keeps for one variant
- Available vs on hand, with real numbers
- Where committed stock actually comes from
- Unavailable is the one nobody sets on purpose
- Which number your low stock alert reads
- Which number to reorder from
- The gap widens exactly when you are busiest
- A ten minute check you can run today
- What this has to do with a count that is simply wrong
- If you only do one thing this week
You set the threshold at 10. The alert arrived this morning. You walked out to the shelf and counted 40.
Nothing is broken. Shopify holds four different numbers for that variant. The shelf agrees with one of them. Your alert read a different one.
The four numbers Shopify keeps for one variant
Open any variant at any location and Shopify tracks these separately:
- On hand. Everything physically at that location.
- Committed. Units already spoken for.
- Unavailable. Units that are there but cannot be sold.
- Available. What is left for a customer to buy.
One line ties them together. It is worth memorising:
On hand = committed + unavailable + available
There is a fifth number, incoming, for stock on its way to you. It sits outside that sum because it is not there yet. It still matters for reordering, which comes later.
Available vs on hand, with real numbers
One variant. Navy hoodie, medium. Threshold set at 10.
| Number | Units | Why |
|---|---|---|
| On hand | 40 | What you counted on the shelf |
| Committed | 26 | A wholesale draft order for 20 plus 6 web orders waiting to ship |
| Unavailable | 4 | Damaged in transit, flagged and set aside |
| Available | 10 | What is left |
The shelf says 40. The number that decides whether a customer can buy says 10.
Both are correct. Thirty of those forty hoodies already belong to somebody else.
Now the part that catches people out. Nothing had to physically move for that alert to fire. Yesterday available was 40. Then one wholesale draft order for 32 landed overnight. Available dropped to 8, the alert went out at 2am, the shelf never changed.
An alert that fires with no unit leaving the building looks like a bug. It is the system working.
Where committed stock actually comes from
Most explanations stop at unfulfilled orders. That is the common case, not the whole list. Shopify commits units for three reasons:
- Unfulfilled orders
- Draft orders, from the moment you reserve stock on one
- Transfers marked ready to ship
The last two surprise people, because neither is a customer buying anything. A quote you built for a wholesale buyer in March can still be holding 20 units in September. A transfer you set up and never sent does the same thing.
So if committed looks too high and every order is shipped, go and look at your open draft orders first. That is usually where it is hiding.
Unavailable is the one nobody sets on purpose
Unavailable covers stock sitting at the location that cannot be sold. Shopify names a few reasons: damaged, quality control, safety stock. Apps can set it too.
The safety stock case is worth a pause. If you deliberately hold back 5 units as a buffer, marking them unavailable is the honest way to do it. Your available count then reflects what you are genuinely willing to sell. It also means your alert fires 5 units earlier than the shelf suggests. That is the point, so long as you know you did it.
The trouble is the unavailable you did not set. An app that reserves stock and never releases it will hold units in this state indefinitely. If on hand and available have a stubborn gap that committed does not explain, the rest is here.
Which number your low stock alert reads
Available. Almost certainly.
Alerting apps are driven by Shopify's inventory levels webhook. The quantity that webhook carries is available. So when a threshold gets compared to something, that is the something. Stockwell works this way. So does anything else listening to the same event.
That is the right choice for the question an alert is asking. An alert exists to warn you before you stop being able to sell. Available is the only one of the four that answers it.
It does mean two things you should expect:
- Your alert can fire on a variant with plenty on the shelf
- Your alert stays quiet on a variant that is physically empty but has stock released back from a cancelled order
For the full picture of what Shopify does and does not watch on your behalf, see what the native inventory tools cover.
Which number to reorder from
Different question. Different answer.
Reordering asks whether you will run out before the next delivery lands. So you want what can serve new demand between now and then:
available + incoming
Not on hand. On hand counts the 26 hoodies leaving on Thursday. Order against 40 and you have told yourself you have four times the cover you really have.
Not available on its own either, if a purchase order is on the way. Incoming is real stock with a date attached.
One exception. Unavailable stock that is damaged is not coming back, so it belongs in no forward number at all. Damaged units are a write off, not a buffer.
Once the base number is right, the lead time maths lives in the reorder point formula and the buffer lives in safety stock.
The gap widens exactly when you are busiest
Here is the seasonal trap.
Committed stock is a function of order volume. In a quiet week committed is small, so on hand and available sit close together and the difference never bites. In peak week committed is at its maximum, so the two numbers are furthest apart on the days when getting it wrong costs the most.
A merchant who spent all year eyeballing on hand and being roughly right will be badly wrong in the last week of November. Nothing changed. The gap they were ignoring simply got large.
It is the same reason a threshold set in July stops working in Q4, which is covered in thresholds for the busy season.
A ten minute check you can run today
You do not need a tool for this.
- Go to Products, then Inventory.
- Add the columns for on hand, committed, unavailable and available if they are not already showing.
- Sort by committed, highest first.
- Read the top twenty rows.
You are looking for two things. Any variant where committed is large without orders you can name. Any variant carrying a stubborn unavailable count.
Then open your draft orders and cancel the dead ones. Every draft order you abandoned is still holding stock.
One thing about editing while you are in there. Shopify lets you set on hand. Available recalculates from it. That is the right way round, because on hand is the number your shelf can confirm. Finish a count and type the result into available instead and you have not corrected anything. You have moved units between states.
Set to and Adjust by matter here as well. After a physical count use Set to, because you know the real total. When receiving a delivery use Adjust by, because you know what arrived but not what else moved while you walked back to the computer.
If several locations are involved, the same four numbers exist at each one separately, which is its own problem. That is covered in alerts across several locations.
What this has to do with a count that is simply wrong
Worth separating, because the symptoms look identical from the packing bench.
Everything above is Shopify disagreeing with itself. Every one of those disagreements is correct. Four numbers, four different questions, four different answers.
A count that has drifted is different. That is Shopify disagreeing with your shelf. One of them is wrong. The fix is a physical count, not a better understanding of the columns.
The order matters. Learn which number you are reading first. Otherwise you will go and count 40 hoodies, find Shopify saying 10, decide your stock is drifting by 30 units and start hunting a leak that was never there.
If you only do one thing this week
Pick your five best sellers and write down all four numbers for each.
If on hand and available sit within a unit or two of each other, carry on using either. Nothing bad will happen. If the gap is 20 units on your best seller, you have been making reorder decisions on a number that was 20 units optimistic all year.
Then set your threshold knowing which number it gets compared against. There is a guide to picking it at choosing a low stock threshold. The wider picture of alerting starts at low stock alerts on Shopify.
Know before a SKU hits zero
Stockwell watches every variant at every location and emails your team when stock falls under the level you set. Install it from the Shopify App Store and the first alert is running in a couple of minutes.
Get it on the Shopify App StoreFree plan covers 50 SKUs with a daily summary. Paid plans add instant alerts and more recipients. No card needed to start.