Shopify Inventory Levels: How to Read, Adjust and Fix Them

Shopify Inventory Levels: How to Read, Adjust and Fix Them

Jasmine Grover
October 28, 2026
Summarize with AI

Table of contents

At a Glance:

Shopify inventory levels are stock quantities of an inventory item at one location, split into Available, Committed, Unavailable, Incoming and On hand states.

  • Only Available stock is available for sale; Committed, Unavailable and Incoming units cannot be sold.
  • When the store says sold out but the admin shows stock, check the location’s online-fulfillment setting first.
  • Set To sets the inventory quantity to a specified amount; Adjust By increases or decreases it by a specified amount.
  • Back up your inventory CSV before importing, as imports may overwrite existing quantities depending on the file format and options.

How Sumtracker helps: it keeps stock per warehouse in one place and syncs it to your Shopify locations, so you adjust a count once instead of editing stock in two places.

If you’ve ever seen 40 units in your Shopify admin and a “Sold out” button on your store, you’ve encountered a mismatch between inventory levels and product availability. This guide explains Shopify inventory levels, inventory tracking, how to manage inventory across multiple locations and sales channels, and how to fix stock discrepancies.

Before you start: Shopify only shows and adjusts a level once Track quantity is on for that variant. If it isn’t, turn on inventory tracking first.

One SKU at two locations: what a Shopify inventory level holds

A Shopify inventory level is the record of one inventory item’s stock at one location, stored as several quantity states. Shopify’s developer docs define it as the quantities of an inventory item at a specific location. A variant stocked in two places therefore has two levels, not one.

This inventory data helps Shopify store owners track available inventory and maintain accurate stock levels across multiple locations.

StateWhat it meansSellable?
AvailableNot committed to orders or reserved, and excludes IncomingYes
CommittedUnits in placed orders that aren’t fulfilled yet, plus units reserved for draft ordersNo
UnavailablePhysically at the location but set aside, for example damaged, in quality control, held as safety stock, or held by an appNo
IncomingOn its way from a purchase order or transfer; becomes Available when receivedNo
On handUnits physically at the locationTotal, not a sales number
The five Shopify inventory states and the On hand formula

On hand = Committed + Unavailable + Available

Here is one example SKU, a black canvas tote, used for the rest of this guide:

LocationCommittedUnavailableAvailableOn hand
Warehouse12583100
Retail store021820
Total127101120
Diagram of one Shopify product with separate inventory levels at a warehouse and a retail store

Only locations set to fulfill online orders feed your online store. If the warehouse hits zero, Shopify still shows the item as out of stock online even though the retail store has units. For why 'Committed' rises when orders land, see our committed inventory guide.

Here is how one location’s numbers move when stock changes state:

Animation: one tote moving through the Available, Committed, Unavailable, Incoming and On hand states at a warehouse
EventAvailableCommittedOn hand
Order placed (3 units)−3+3no change
Order fulfilledno change−3−3
Incoming 20 received+20no change+20

How to read Shopify inventory levels in 5 steps, and which number to trust

Open Products → Inventory in your Shopify admin, choose one location, and read On hand, Available and Committed together. The right inventory quantity depends on the decision you’re making.

  1. Go to Products → Inventory in your Shopify admin.
  2. Select one location at a time, because each location holds its own inventory level.
  3. For each variant, read the Available, Committed, Unavailable and On hand values.
  4. Click a variant’s Committed number to see the orders behind it.
  5. Compare On hand with what’s on the shelf; a gap may indicate a stock discrepancy or inventory adjustment error.
If you need to…Read this number
Reconcile against a physical countOn hand
Know whether a customer can buy itAvailable
Explain why Available is below the shelf countCommitted + Unavailable
Plan around a supplier deliveryIncoming
Which Shopify inventory number to read for each decision

Set To or Adjust By: correcting a level after a stock count

Shopify’s admin offers two inventory adjustment modes. Set To sets the inventory quantity to a specified amount, while Adjust By increases or decreases it by a specified amount. Every adjustment records who made it and when (Shopify changelog, May 7, 2026).

  1. Open Products → Inventory and click the quantity you want to change, at the right location.
  2. Choose Set To after a physical count, and enter the counted number.
  3. Choose Adjust By when the stock quantity changes, such as when units become damaged, and pick the origin and destination for the movement.
  4. Add a reason if you want one (it’s optional). Shopify lists Correction, Count, Received, Return restock, Damaged, Theft or loss and Promotion or donation. Then click the check icon and Save.
  5. Open the variant’s Adjustment history to confirm the entry.
Animated walkthrough of the Shopify Inventory page with a moving cursor: choose Adjust by, enter the change, switch to Set to, add a reason and open adjustment history
Rule of thumb: Use Set To for counts and Adjust By for movements. The Bulk Editor is unchanged, so you can still set Available directly there with no origin or destination.
Set To for stock counts versus Adjust By for movements

Common mistake: Saving a count that is already out of date. If stock is fulfilled or received between your count and the moment you save, the number you enter is wrong by that amount. Count in a quiet window, or recheck any variant that moved before you save.

If an inventory app is your stock master: The steps above assume Shopify holds the count. If an app such as Sumtracker is set as the master for a location, adjust stock in the app instead. A change made directly in Shopify’s admin is not something the app detects, so the two numbers drift apart. The master setting depends on your sync setup, so check it for each location before you adjust.

Our walkthrough of viewing inventory adjustment history covers reading the log.

How to bulk-update inventory levels from a CSV without overwriting live counts

Export the current inventory CSV first, edit only the quantity columns, then import. Shopify’s inventory CSV carries one row per location. The all-states version has On hand (current), On hand (new), Incoming, Unavailable and Committed columns; the Available-only version has just Available.

  1. On the Inventory page, choose Export, select your location(s), and pick the all-states format. Save an untouched copy as your backup.
  2. Open a second copy in a spreadsheet and change only the quantity columns, leaving the identifying columns alone.
  3. In the all-states file, change On hand (new). Shopify compares On hand (current) with your live stock, so a row you exported earlier is flagged if the stock has changed since. Shopify calculates Available from the new On hand.
  4. Save as CSV, choose Import, review the import summary, then start the import.
  5. Spot-check three SKUs in Products → Inventory and open their Adjustment history.
Common mistake: Importing from the Available-only format. It overwrites Available with whatever is in the file, and that format doesn’t protect against accidental overwrites.

Plug your counts into the sheet below before you upload anything.

Free download
Shopify inventory level audit sheet

Three tabs: a pre-import checklist, a reconciliation sheet pre-filled with the canvas tote, and the six sold-out causes.

Get the audit sheet (.xlsx)

For other import options, see our inventory CSV guide.

Bar chart: 56% of Sumtracker accounts with two or more warehouses recorded a stock adjustment in the last 12 months, against 34% of single-warehouse accounts
From Sumtracker’s data
55% of active Sumtracker accounts keep stock in two or more warehouses.

What it means for you: If you stock more than one location, you have one inventory level per location per SKU, so a count error in one place never shows up in the other.

Sumtracker is an inventory management, forecasting and planning platform for Shopify and multi-channel eCommerce brands. It keeps stock per warehouse in one place and syncs it to your Shopify locations.

Basis: 669 Sumtracker accounts with at least one order in the last 90 days and at least one active warehouse; 366 had two or more, and 219 had three or more. The adjustment rates in the chart above are 205 of 366 multi-warehouse accounts and 104 of 303 single-warehouse accounts. That gap shows a link, not a cause. Source: Sumtracker data, October 2026. Sumtracker customers skew multi-location, so this is not a Shopify-wide figure.

Honest limit: If you sell only on Shopify from one location, Shopify’s native tools are enough.

Why the storefront says sold out while the admin shows stock: 6 causes

When the storefront says sold out but the admin shows stock, the units are usually at a non-fulfilling location or sitting in a non-sellable state. Check these six causes in order.

#Likely causeFix
1Stock sits at a location that doesn’t fulfill online ordersTurn on Fulfill online orders from this location under Settings → Locations, or move the stock
2Units are Committed to unfulfilled ordersFulfill or cancel the orders; open the Committed list to find them
3Units are UnavailableAdjust the quantity to move units back to Available if they shouldn’t be held
4Stock is Incoming, not yet receivedReceive the transfer or purchase order
5An app manages that product’s inventoryCheck the app’s own location; quantities are allocated only to that app location
6A sync app hasn’t caught up with the latest changeAllow time for the app to catch up, check its sync log, and avoid two apps updating the same products

To get stock to the location that fulfills online orders, use a transfer; see moving inventory between locations. If you use an inventory app, also check any reserve or close-at quantity it sets. In Sumtracker, a close-at quantity set on one location hides that location, not the whole product.

Six causes of a Shopify store showing sold out while the admin shows stock

Not sure which cause applies? Answer up to five questions to find your cause.

Shopify product page Inventory section with Unavailable, Committed, Available and On hand columns and a View adjustment history link

What a level of zero or below means when Continue selling is on

Shopify treats a tracked item as out of stock when its level is zero or below. Turning on Continue selling when out of stock lets customers keep buying anyway. It only works while Track quantity is on and doesn’t apply to POS orders, where staff can sell through zero and below. So Available can go negative.

  1. Open the product, then the variant if it has options.
  2. In the Inventory section, check Track quantity.
  3. Check Continue selling when out of stock.

In one Shopify Community thread, merchants with three fulfillment locations describe a single location going negative while other locations still had stock. Treat a negative level as a prompt to transfer or reorder. Our variant inventory policy guide covers the setting in depth.

What apps and developers see when they read an InventoryLevel

Apps read and write the same level record you see in the admin. Shopify’s GraphQL inventoryLevel query returns the item, the location and a list of named quantities: available, incoming, committed, damaged, on_hand, quality_control, reserved and safety_stock.

Reserved, damaged and safety-stock quantities display as Unavailable in the admin. The inventoryActivate mutation creates a level at a location, and bulk deactivation removes the item’s quantities from that location.

Diagram showing an inventory level connecting an inventory item to a location, with the eight API quantity names

Frequently asked questions

How long does Shopify keep inventory adjustment history?

Shopify shows the last 180 days of adjustment history for each product or variant. History is viewed per variant, not for all variants at once, so export or record anything you need to keep for longer.

Can an inventory level go negative in Shopify?

Yes. When Continue selling when out of stock is on, customers can keep buying past zero, and POS staff can sell through zero too. Available then shows a negative number until you transfer in or receive more stock.

Does Continue selling apply to Shopify POS?

No. Continue selling when out of stock only works while Track quantity is on and doesn’t apply to POS orders. POS staff can sell through zero and below regardless of that setting, so a location can go negative from in-store sales.

Conclusion

Export your Shopify inventory levels to CSV before your next stock count so you have a baseline to compare against. Then run any variant that disagrees with the shelf through the six-cause table above.

If you find yourself repeating this check every week, that is usually the point where a spreadsheet stops scaling. Once stock sits in more than one location, or sells on more than one channel, keeping every level right by hand gets slower and easier to get wrong. Sumtracker keeps stock per warehouse in one place and syncs it to your Shopify locations, so you adjust a count once instead of in each place.

If you want to see how that works with your own products, you can start a 14-day trial below.

Ready to Simplify Your Inventory Management?

Join hundreds of e-commerce merchants who rely on Sumtracker to save time, eliminate errors, and grow their business.