Shopify inventory not updating: a 7-cause diagnostic that takes 10 minutes
Shopify inventory not updating? Work through the 7 real causes in order — tracking, locations, channels, CSVs, POS sync, apps. 10-minute checklist.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
When Shopify's quantities stop matching reality, the cause is almost always one of seven things, in a predictable order of likelihood: tracking is off for that variant, the quantity was set on the wrong location, a sales channel isn't assigned to the location that actually holds the stock, a CSV import half-failed, POS orders are lagging, an app is fighting the admin for the same field, or the numbers are updating and you're looking at the wrong inventory state. Work through them in order — the first three account for most cases and take about ten minutes to check.
Before starting, pin down the symptom precisely. "Inventory not updating" means three different failures: quantities don't change when orders come in; quantities change but the storefront doesn't reflect them; or quantities are simply wrong versus the shelf. Each points at a different rung of the ladder below.
The 10-minute diagnostic checklist
Run these top to bottom. Stop when you find the broken rung.
| # | Check | How | Time |
|---|---|---|---|
| 1 | Is tracking on for that variant? | Open the product → variant → Inventory section → "Track quantity" toggled on | 1 min |
| 2 | Which location holds the quantity? | Products → Inventory → filter to the SKU; look at per-location quantities, not the total | 1 min |
| 3 | Is the sales channel fulfilled by that location? | Settings → Locations → open the location → "Use inventory at this location to fulfill online orders" is on; check order routing priority | 2 min |
| 4 | Did a CSV import half-fail? | Check the import confirmation email for failed rows; re-export and compare a few SKUs | 2 min |
| 5 | Are POS sales lagging? | Compare a recent POS order in the admin; confirm it decremented its location | 1 min |
| 6 | Is an app overwriting quantities? | Review recently installed/updated inventory apps; check the variant's inventory history log for who changed what | 2 min |
| 7 | Are you reading the right state? | On the Inventory page, distinguish Available vs On hand vs Committed vs Unavailable | 1 min |
Now each cause in detail.
1. Tracking is off for that variant
Shopify tracks inventory per variant, and tracking is a per-variant toggle — not a store-wide setting. If "Track quantity" is off, sales will never decrement anything, because there's no counter to decrement. This is the most common cause of "one product doesn't update" reports, and it typically starts when a product was created by CSV import or by an app without the flag set.
Fix: Products → open the product → open the variant → Inventory section → activate Track quantity, then enter the correct Available quantity. If this is missing store-wide, the first-time inventory setup guide covers how tracking is structured in Shopify.
2. The quantity exists, but on the wrong location
Every quantity in Shopify belongs to a location. A classic version of this bug: you imported 40 units to "Warehouse" but the location is actually named "Main Warehouse," the import went to a stale location, or a POS store location was added later and now shows zero. The Inventory page total may look plausible while the location that actually fulfills orders holds nothing.
Fix: Products → Inventory → search the SKU. Read the per-location rows. If the stock sits in the wrong location, either transfer it properly (Products → Transfers) or adjust the quantity at the correct location. Don't "fix" totals with blind adjustments — you'll create a phantom at one location and a negative at another.
3. The sales channel isn't fulfilled by that location
This is the sneaky one for multi-location stores: stock exists, tracking works, but the storefront still shows out of stock — because the location holding the stock has "Use inventory at this location to fulfill online orders" switched off, or your order routing priorities send online orders only to a location that's empty (Shopify Help Center, "Setting up order fulfillment for locations", accessed October 2026). The storefront's available quantity is the sum of the locations that fulfill online orders; a location excluded from that list contributes nothing, no matter how full it is.
Fix: Settings → Locations → open each location → confirm the fulfillment toggle, and review order routing rules so priorities reflect where stock actually lives. Note the same page governs POS ship-to-customer orders, which follow routing rather than the store's own location.
4. A CSV import half-failed
If you recently bulk updated quantities and some SKUs "didn't take," check the email Shopify sent after the import — failed rows are listed there with reasons. The commonest failure: a location name mismatch (the column is case-sensitive and must match exactly), and the safety-validation rejection, where rows whose "On hand (current)" snapshot no longer matches live stock are refused so a stale file can't overwrite newer sales. One row of a 500-row file failing is the system working; re-import just those rows.
If you wrote blanks meaning zeros, or zeros meaning blanks, the results are live and ugly — a full column of accidental sell-outs. Re-export and re-import the correct values immediately, then read the bulk edit failure-modes guide before the next loop.
5. POS and offline order sync delays
Shopify POS normally decrements inventory in near-real time, but offline mode, an unstable connection, or a device that hasn't synced can delay the deduction — and the admin will briefly show more stock than the till has actually sold. The tell: the numbers reconcile themselves later without you doing anything. If a lagging POS sale eventually appears and the quantity snaps into line, nothing is broken; the diagnosis is patience plus a look at the device's connectivity.
For recurring symptoms — counts drifting between the till and the admin, quantities wrong only at the retail location — the failure modes are specific and worth working through in the POS inventory management guide.
6. App conflicts and theme cache
Two apps holding inventory permissions can both write to the same variant, each "correcting" the other. The evidence lives in the variant's inventory history: open the variant, view its inventory adjustment log, and look for changes made by app names rather than staff. If a third-party app's writes coincide with the drift, disconnect one app, stabilize, and re-enable one at a time.
Related but distinct: apps that display stock can lag behind the admin because of caching — page caches, app-side caches, or a theme hard-coding quantities. If the admin is right and the storefront is wrong after a few hard refreshes, the storefront display layer (theme or an app widget) is the suspect, not the inventory engine.
7. The numbers are updating — you're reading the wrong state
Sometimes nothing is broken. On the Inventory page, Available (sellable) excludes Committed (reserved for unfulfilled orders) and Unavailable (damaged, reserved, quarantined), while On hand is the sum. A merchant expecting On hand to equal sellable stock reads the discrepancy as a bug. Check the state columns before adjusting anything — and if you recently imported, remember imports set on-hand, which includes committed units.
The cost of waiting: why lagging numbers are a revenue problem
While you diagnose, the storefront keeps selling against whatever it thinks is true. In the worst direction that's overselling — taking orders for units that don't exist — and its mechanics and fixes are their own discipline (see how overselling happens in Shopify). In the other direction, a product that sold out days ago but still shows stock, or vice versa, means you're blind to what customers actually tried to buy.
That blindness has measured consequences. In the landmark 2002 out-of-stock study commissioned by the Grocery Manufacturers of America, when shoppers hit an empty shelf 31% went to another store, 26% bought a different brand, 19% substituted, 15% delayed the purchase, and 9% bought nothing. Whatever the split in your category, most of those shoppers are revenue you intended to have. The diagnostic fixes today's wrong numbers; it doesn't watch tomorrow's.
Two things worth setting up once the current fire is out. First, know that the core Shopify admin has no native low-stock email alert as of October 2026 — the native tripwires are saved low-stock views on the Inventory page and Shopify Flow automations, and apps fill the rest. Second, the period a SKU spends at zero is itself data: a week recorded at zero sales isn't zero demand, it's zero opportunity. Keeping a ledger of out-of-stock days per SKU is the cheapest honest accounting of that, and it's the core of what we are building InventoryX to do — the days out are facts; the estimated lost sales per SKU are clearly labeled estimates, not facts, and we keep the distinction visible on purpose.
Common questions
Why is my Shopify inventory not updating when orders come in? Check first whether "Track quantity" is enabled on that specific variant — tracking is per variant, and off is the default for some imported or app-created products. If tracking is on, verify the sale's assigned location matches the location where the quantity actually sits, since quantities decrement at the fulfilling location, not store-wide.
Why does my storefront show out of stock when the admin has inventory? The storefront only counts inventory at locations that fulfill online orders. If the location holding the stock has "Use inventory at this location to fulfill online orders" disabled, or your order routing priority points at an empty location, its units don't appear online. Check Settings → Locations and your order routing configuration.
Why is Shopify POS not updating inventory? Usually a sync delay: offline mode or a weak connection holds POS sales until the device reconnects, then quantities reconcile. If the drift never resolves, check that POS sales are assigned to the correct location and that no second inventory app is writing to the same variants. Consistent drift at one location points to a configuration issue, not connectivity.
How do I find out which app changed my inventory? Open the product's variant and review its inventory history log, which records each adjustment with its source. Entries made by an app's name rather than a staff member indicate app-driven changes. If two apps conflict, disconnect one, watch for stability, and re-enable selectively — running two apps with broad inventory write permissions over the same SKUs invites tug-of-war.
Can a CSV import make inventory numbers wrong? Yes, in specific ways: location name mismatches send quantities nowhere; blanks mean "no change" while zeros mean "sell out"; and importing raw shelf counts without subtracting committed units strands open orders. Failed rows are reported in an email after import. Keep the pre-import export — it's both your diagnosis and your rollback.
Next step: run the checklist against your worst offender SKU — the one whose number you trust least. Whichever rung it fails, fix that rung store-wide (one toggle, one location setting, one app), not just for that SKU. The same crack usually runs under a hundred products.