All segments

Shopify Inventory Tracking: Set It Up Properly

A step-by-step guide to shopify inventory tracking: the Track quantity and Continue selling settings, locations, transfers, and the step most teams get wrong.

  • Published
  • Reading time 11 min read
  • Author Nafiul Hasan
Shopify Inventory Tracking: Set It Up Properly. Diagram: two records, drifting. RUN Shopify Inventory Tracking: Set ItUp Properly SYSTEM ASYSTEM B pointerflow.com

Short answer

Shopify inventory tracking means turning on the Track quantity setting per SKU so Shopify decrements stock on every sale, then configuring locations, the Continue selling when out of stock toggle, and transfers so the count stays accurate across warehouses, POS and any 3PL. Most oversells trace to one setting left on the wrong SKUs, not to Shopify's tracking failing.

Shopify inventory tracking is the setting that makes Shopify decrement stock automatically on every sale, instead of a merchant editing quantities by hand after the fact. It lives at the variant level — Track quantity, ticked or not, per SKU — and it only works as a system once locations, the Continue selling when out of stock toggle, and transfers between warehouses are configured to match how the business actually holds and moves stock. Most of what looks like a Shopify inventory bug is one of those settings left at its default on a SKU where the default was wrong.

What Do You Need Before You Turn On Shopify Inventory Tracking?

Shopify inventory tracking needs three things in place before the first setting change: a current physical count at every location that will report stock, admin access to Settings → Locations and to each product’s Inventory section, and a decision — made once, not per SKU as problems come up — about which products are genuinely backorderable and which should hard-stop at zero.

A store moving from spreadsheet or POS-native stock counts should not treat this as a Shopify configuration problem to solve after the fact. Every variant’s opening count has to be entered or CSV-imported before tracking goes live, because Shopify has no way to infer a starting quantity — a variant with tracking turned on and no count entered simply shows 0 Available until someone sets it, and a store that skips this step launches tracking into an immediate false stockout.

Step 1: How Do You Turn On Shopify Inventory Tracking for a SKU?

Turn on Track quantity in each variant’s Inventory section, and set Continue selling when out of stock per variant based on whether that specific SKU can genuinely be backordered.

Both settings live in the same place — Products → the individual product → Variants → Inventory — and they answer two different questions. Track quantity decides whether Shopify counts the SKU at all; off, it behaves as if stock were infinite and nothing on the inventory page ever moves for it. Continue selling when out of stock decides what happens once the count hits zero: on, the SKU keeps selling and its count goes negative; off, Shopify removes the buy button the moment Available reaches zero.

The mistake that causes most of the oversells traced back to Shopify is applying one of those settings uniformly across a catalogue instead of per SKU. A make-to-order or drop-shipped variant genuinely has no reason to stop selling at zero — Continue selling on is correct there. A finished-goods SKU with a fixed unit count does not have that property, and leaving Continue selling on for it converts a real stockout into an order the business has committed to but cannot fulfil on time.

Step 2: How Do You Set Up Locations So Multi-Warehouse Counts Stay Accurate?

Add every physical stock-holding site as its own location under Settings → Locations, and set which locations are enabled to fulfil online orders, so Shopify only offers stock from a place an order can actually be picked and shipped.

A Shopify location is not just a shipping address on file — it is the unit inventory is tracked against. A brand running a primary warehouse, an overflow space, and a retail store all report Available separately per location, and Shopify sums them for the storefront’s stock display but allocates a specific order to a specific location behind the scenes. A location left active for online fulfilment after it stops holding stock — an old 3PL relationship, a closed pop-up — keeps showing as sellable inventory until someone deactivates it, which is a common source of orders assigned to a place with nothing left to pick.

Location priority also decides which warehouse an order draws from when more than one holds stock. Under Settings → Shipping and delivery, the location order sets which site Shopify tries first; a store shipping mostly from one coast should have that location ranked above a smaller secondary site, or fulfilment defaults to whichever location happens to be listed first regardless of shipping cost or transit time.

Step 3: How Do You Read Committed, Available and Incoming Stock?

Read Available, not On hand, as the number that governs what a shopper can currently buy, and use Committed and Incoming to explain the gap between the two.

Shopify’s inventory page reports four figures per SKU per location: On hand is the physical count as entered or last adjusted. Committed is the portion of that count already allocated to orders that have not yet been fulfilled. Available is On hand minus Committed, and it is the figure the storefront actually checks before allowing a sale. Incoming is stock expected on an open transfer that has not yet arrived and does not count toward Available until it is marked received.

A SKU showing 60 On hand and 20 Available is not a discrepancy — it means 40 units already belong to unfulfilled orders. Reading On hand as if it were sellable stock is a common reporting mistake at $3M–$30M scale, where a merchandising or buying team pulls the wrong column into a reorder spreadsheet and ends up short, because the number they used was never the number available to sell in the first place.

Step 4: How Do You Transfer Stock Between Locations Without Losing the Count?

Create a transfer under Products → Transfers with an origin location, a destination location and an expected arrival date, then mark units received as they physically arrive rather than editing each location’s quantity by hand.

A transfer moves stock from Incoming at the destination to On hand only once it is received — partially or in full — which keeps a shipment in transit visible without prematurely making it sellable at the destination before it has actually arrived. Editing quantities manually instead of using a transfer breaks that visibility: the origin location’s count drops immediately, but nothing shows as Incoming anywhere, so a stock report pulled mid-transfer looks like inventory has simply vanished rather than being in a truck between two warehouses.

Partial receiving matters at volume. A transfer of 500 units that arrives as 480, with 20 damaged or lost in transit, should be received as 480 and the shortfall logged as a separate inventory adjustment with a reason — not force-received as 500 and quietly corrected later, which is how a damaged-goods discrepancy turns into an unexplained inventory write-off nobody can trace back to a specific shipment.

Step 5: How Do You Automate Low-Stock Alerts and Reorder Points?

Build a Shopify Flow workflow triggered on Inventory quantity changed, with a condition against each SKU’s real reorder point, rather than relying on someone opening the inventory page on a schedule.

Shopify’s native inventory page supports filtering to a low-stock view, but it has no built-in email or Slack alert — that has to be built, either in Shopify Flow (included on Shopify and Shopify Plus) or a third-party inventory app. A Flow workflow watching Inventory quantity changed, with a condition comparing the new Available figure to a stored reorder threshold per SKU, closes that gap without adding a separate inventory-management platform: the trigger fires on every relevant stock movement, and the condition step is what keeps it from notifying on every sale rather than only the ones that cross a threshold that matters.

Automating the alert is the point where inventory tracking stops being a reporting exercise and becomes an ops-automation problem: the setting is only as good as the workflow that reacts to it. A store that tracks accurately but checks the report weekly finds out about a stockout after it has already cost sales, not before.

Step 6: How Do You Connect POS or a 3PL Without Breaking the Count?

Give a Shopify POS location its own location record with Point of Sale enabled, and connect a 3PL as a distinct location whose Available count is written by the 3PL’s own sync rather than edited by hand in the admin.

Shopify POS shares the same inventory system as online — a register at a store location decrements the same Available count a website checkout would, in real time, provided that location is correctly enabled for Point of Sale under Settings → Locations. A register accidentally pointed at the wrong location, or a second till added without its own location assigned, sells against a count the storefront never sees change, which is how a product goes out of stock in the store while still showing as available online.

A 3PL relationship works the same way structurally: most 3PL integrations create a Shopify location representing the 3PL’s warehouse, and that location’s count is meant to be driven entirely by the integration’s sync from the 3PL’s own warehouse management system. Manually adjusting a 3PL location’s count in Shopify admin creates a second source of truth the sync will eventually overwrite, so any correction belongs in the 3PL’s own system first, with Shopify’s count following it rather than leading it.

What’s the Step Most Shopify Teams Get Wrong With Inventory Tracking?

The step most teams get wrong is leaving Continue selling when out of stock on for every SKU by default, instead of restricting it to the SKUs that are genuinely backorderable — which makes a real stockout and a planned backorder look identical on the inventory page.

Shopify’s inventory report shows the same thing for both cases: a negative or zero Available count, an active buy button, orders still coming in. Nothing in the admin distinguishes “this is a pre-order we can fulfil in three weeks” from “this SKU is out of stock and nobody has noticed yet” — that distinction lives entirely in whether the toggle was set deliberately per SKU or left at whatever it defaulted to when the product was created or duplicated. A catalogue where every product was cloned from a template with Continue selling already on inherits that setting silently, and the first sign anything is wrong is a customer emailing to ask where their order is.

The fix costs nothing to run — it is a review, not a new tool. Filter the inventory page to SKUs with Continue selling on, then check each one against the actual fulfilment promise for that product: genuinely backorderable stays on; everything else gets turned off so a real stockout removes the buy button instead of silently taking an order the business cannot ship.

How Do You Verify Shopify Inventory Tracking Is Actually Working?

Verify tracking by placing one real test order per fulfilment path — online checkout, POS, and 3PL if one is connected — and confirming Available drops by exactly one unit at the correct location within a minute of the sale.

A tracking setup that looks correct in the admin can still fail silently at one of three points: a variant where Track quantity never actually got ticked, a location not properly linked to the sales channel that sold from it, or a 3PL sync running on a delay long enough that Shopify’s count and the warehouse’s real count disagree for hours at a time. A single test transaction per channel catches all three faster than reading the settings screens, because it tests what actually happens on a sale rather than what the configuration claims will happen.

Repeat the same test after any theme change, app installation, or POS device swap — each of those has, in practice, been the point where a previously correct inventory setup silently stopped decrementing stock, usually because a new app claimed control of the same inventory API endpoint Shopify’s own checkout was already using.

Getting Shopify inventory tracking right is an ops-automation problem before it is a settings problem — every toggle in this guide only holds if something checks it and reacts to what it reports, rather than a person remembering to look. Pointerflow’s ops-automation work builds exactly that layer: workflows triggered on real inventory events, reorder points tied to actual sell-through instead of a guessed threshold, and a POS-to-3PL sync tested with a real transaction on every fulfilment path, not assumed to be working because nothing has broken yet. The catalogue-governance side of the same problem — keeping a product’s canonical record consistent once a second channel is involved — is covered in what a Shopify PIM actually does; the cost side of paying someone else to build the automation itself is covered in what a Shopify automation agency really costs.

Sources

No external figures are quoted; this article is written from how Shopify’s inventory settings, locations, transfers and Flow automation are configured and operated, cross-checked against Shopify’s own documentation for the terminology used for On hand, Committed and Available stock.

Frequently asked

Does Shopify track inventory automatically, or do I have to turn it on?

It is off by default at the variant level. Track quantity is a checkbox in each variant's Inventory section, and Shopify only decrements stock for variants where it is ticked. A new product duplicated from an existing one can silently carry the old tracking setting, so it is worth checking rather than assuming.

What's the difference between On hand, Committed and Available inventory in Shopify?

On hand is the physical count at a location. Committed is the portion of that count already tied to unfulfilled orders. Available is On hand minus Committed — the number Shopify actually offers a new shopper. A SKU can show 40 On hand and 0 Available if 40 units are already committed to unshipped orders.

Why did my Shopify store oversell a product that showed in stock?

The two most common causes are Continue selling when out of stock left on for a SKU that should have stopped selling at zero, and a sale recorded outside Shopify's own count — a POS sale at a location not properly linked to online inventory, or a manual stock edit that did not match the physical shelf. Both leave Available inaccurate without Shopify reporting an error.

Can I set different inventory tracking rules for different variants of the same product?

Yes. Track quantity and Continue selling when out of stock are both set per variant, not per product, so a t-shirt's size run can track and stop selling normally while one made-to-order colour keeps Continue selling on. Shopify does not apply one rule across a product's whole variant set.

Does Shopify inventory tracking work the same way for subscription products?

A subscription SKU tracks inventory the same way a one-time SKU does — Track quantity decrements it on the initial sale — but Shopify does not reserve stock ahead of a future recurring order. A subscription app has to check Available at the moment each renewal bills, so a SKU that sold out between orders can fail a renewal even though the original purchase tracked correctly.

Can I track inventory for a bundle or kit product in Shopify?

Native Shopify tracks the bundle SKU itself, not its components — selling a bundle decrements the bundle's own count, not the count of the products inside it. Keeping a bundle's stock in sync with its components' stock needs either Shopify's own bundle app, a third-party bundling app, or a manual reconciliation step; there is no native setting that links the two.

Does deactivating a location delete its inventory count?

No — deactivating a location under Settings → Locations keeps its inventory count in Shopify's records but stops it from being sold online or shown as fulfillable, and stops it appearing in POS at that location. Reactivating the location restores its role without needing the count re-entered.

Can I reset Shopify inventory counts in bulk instead of editing each product?

Yes — a CSV export from Products → Inventory, edited for the correct on-hand quantities, re-imports through the same screen and overwrites the counts in one pass. This is the standard way to align Shopify with a physical stock count rather than opening each variant individually.

Does Shopify inventory tracking account for damaged or written-off stock automatically?

No — Shopify has no separate status for damaged, lost or written-off units. A manual adjustment on the inventory page, logged with a reason if the store's process requires one, is how that stock is removed from the count; without it, a damaged unit stays counted as sellable until someone notices the mismatch.

How does Shopify inventory tracking interact with a draft order or a manual order?

A draft order does not commit inventory until it is converted to a real order and marked paid — creating a draft alone does not reduce Available. A manual order created and marked paid directly commits and decrements stock the same way a checkout-generated order does.

Do negative inventory counts mean tracking is broken?

Not necessarily. Shopify allows a SKU's count to go negative when Continue selling when out of stock is on, by design, so the store can keep taking orders on a backorderable item. A negative count on a SKU that was never meant to be backorderable is the sign to check — it usually means the toggle was left on by mistake, not that tracking failed.

How do I check that a specific location's inventory feeds Shopify POS correctly?

Open that location's record under Settings → Locations and confirm Point of Sale is enabled for it, then make a small test sale on a low-value SKU at that register and check the same SKU's Available count in admin immediately after. If the admin count does not move, the POS device is likely pointed at the wrong location rather than Shopify's tracking failing.

Next step

Is this your ops automation problem, or a symptom of another one?

Bring your numbers — the churn split, the decline rate, whatever your flows are earning — and we will tell you which of them is the expensive one.

Book a call →