When Shopify inventory isn't updating, open the variant's adjustment history before you change anything. It lists every change from the last 180 days, what caused it, and which staff member, app or sales channel made it, and the answer is usually sitting in it. The cause is almost always one of seven things: tracking is off, the product isn't stocked at that location, the order came out of a different location, a refund restocked it, an app changed it, a CSV import, or Shopify POS hasn't synced.
The short version
- Read the adjustment history first. Guessing makes it worse.
- "Not tracked" means Track quantity is off for that variant, and Shopify isn't counting it at all.
- "Not stocked" means the variant isn't carried at that location, so nothing there can move.
- A count that "didn't drop" often did, at another location, because of order routing.
- Refunds restock by default. Apps and imports can overwrite you. POS needs to sync.
- For the stock Shopify can't see (batches, deliveries, wholesale), TaroStack keeps the count. More below.
Start with the adjustment history
In the Shopify admin, open the product, click the variant, and in the Inventory section click View adjustment history. Each line shows the date, the activity that caused the change, "the staff member, app, or sales channel that made the adjustment", and how each inventory state moved: unavailable, committed, available, on hand and incoming (Shopify).
You can see only the last 180 days there. For older changes, or to filter by location, app or reason across many products, Shopify points you to its inventory adjustment changes report.
Read it the way you'd read a bank statement. Somewhere there's a line you didn't expect.
A worked example
A jam maker has two Shopify locations: the kitchen, where online orders are packed, and a small shop across town. Monday morning the kitchen shows 120 jars of guava jam and the shop shows 36.
An online order for 3 jars comes in. The owner packs it in the kitchen, checks the admin that evening, and the kitchen still says 120. "Shopify inventory not updating."
It did update. The adjustment history on the shop location shows the order committing 3 jars and then taking them off on hand when it was fulfilled. Shopify's default routing rules "optimize for fulfillment from the closest location within the destination market that has all of the items in the order in stock" (Shopify), and the shop happened to be closer to the customer. So now the shop says 33 while 36 sit on its shelf, and the kitchen says 120 while 117 sit on its shelf. Both wrong, by the same 3 jars, in opposite directions.
The fix is in the routing rules or the location priority, so online orders come from the kitchen. And a count of both locations to put the 3 jars back where they belong.
The seven causes, one at a time
1. Tracking is off: "inventory not tracked"
Symptom: the count never moves, and the product never sells out. Cause: Track quantity is off for that variant. It's set per variant, so the 8 oz jar can be counted while the 12 oz isn't. Fix: open the variant's inventory section, turn on Track quantity, and enter what you have at each location (Shopify).
While you're there, look at Continue selling when out of stock. It lets the online store keep selling past zero on purpose, which is useful for made-to-order products and a surprise for everything else.
2. Not stocked, or not active, at that location
Symptom: the location's cell says "Not stocked", or the Available column shows a dash even though an on-hand number is recorded. Cause: the variant isn't carried at that location, or it's inactive there. Shopify says a dash means the product "is inactive at that location, so it isn't sellable or fulfillable from there even though an On hand quantity is recorded", and that it commonly happens after transfers, adding a location, or updating quantities in bulk or by CSV (Shopify). Fix: stock it at that location and set the quantity.
3. The order came out of a different location
Symptom: the location you're watching didn't drop. Cause: routing, as in the example above. When no single location has everything, Shopify's rules try to minimize split shipments, so the location it picks may surprise you. Fix: open the order and check its location, then adjust the routing rules.
4. A refund restocked it (or didn't)
Symptom: the count went up after a refund, but nothing came back. Or the other way round. Cause: when you refund tracked items, Restock items "is selected by default" (Shopify). Refund a jar that's still in the customer's cupboard and it's back in your count anyway. Fix: untick it when nothing's been returned, and restock when the item is actually back on your shelf.
5. An app changed it
Symptom: you set 40, and an hour later it's 12 again. Cause: an inventory app, a fulfillment service or another sales channel is writing quantities for that location. The adjustment history names the app. Fix: decide which system owns the count for each location, and let only that one write it.
6. A CSV import
Symptom: counts jumped after an import, or some rows didn't change at all. Cause: in Shopify's inventory CSV, a blank
On hand (new) cell means no change, not stocked means never carried there, and "if your inventory changes after
your export, then the affected rows don't import" (Shopify emails you the failures)
(Shopify). Fix: export fresh right
before you import, and read the email.
7. Shopify POS hasn't synced, or sold offline
Symptom: the admin and the till disagree. Cause: the POS hasn't pulled the latest data, or sales made offline haven't been sent yet. Shopify's help: "After you reconnect to the internet, your orders and inventory sync automatically" (Shopify). Fix: in POS, tap the connectivity icon, tap Shopify, and tap Refresh under Products and inventory; if they still disagree, update the app (Shopify).
One more POS detail. "Continue selling when out of stock" doesn't apply at the till, and staff "can continue selling products when available inventory reaches zero and below", after a warning. That's how a Saturday at the shop ends with a negative count on Monday.
Where this stops working
Every fix above makes Shopify's number match what Shopify saw. The trouble for anybody who makes what they sell is everything Shopify never sees: the batch of jam that added 180 jars on Tuesday, the wholesale order invoiced by email, the market sales rung up on a different till, the samples, the jar that broke. Each one is a number somebody has to type into Shopify, and each one is a chance for the kitchen and the shop to drift apart again. Why inventory never matches is the longer version of that story, and how to count inventory is the routine that pulls it back.
How TaroStack does it
Most of this article is about Shopify's own causes, and the adjustment history will find those. The cause it can't find is the work that never goes through Shopify: the batch of guava jam made on Tuesday, the case of jars delivered, the wholesale order that went out the back door. TaroStack keeps the count for that. A batch recorded against a recipe adds the jars and takes the sugar and fruit from the lots that expire first. A delivery received adds stock. A count on a phone, with or without signal, fixes whatever drifted. Wholesale orders live beside your Shopify orders, with the lot on each.
And drift like the example's, three jars wrong at two locations, is what a daily check is for: TaroStack compares its count with the store's and tells you where they differ, rather than silently overwriting either side. You connect your Shopify store and we set it up with you; orders arrive by import and that daily check rather than to the second.
Starter covers one site and Shopify or Square for $49 a month. Standard adds recipes and batches, up to three sites, and both channels, at $99. The first 30 days are free. If you'd like a hand setting up, ask, and we'll do it with you.
