30 min read

Stock & Inventory at a Glance

Track stock, set each product's low-stock alert, configure storefront urgency, and manage out-of-stock behavior.

Your Products screen doubles as your inventory dashboard — there's no separate "inventory" screen to switch to. Every row shows the current stock level and status alongside the rest of the product details.

What you get

  • A live stock number on every product and every variant.
  • One per-product Low-stock alert threshold shared by both admin themes, reports, the dashboard, and notifications.
  • Manual stock adjustment any time you count, receive, or write off inventory.
  • A Keep selling when out of stock switch for products you accept after stock reaches zero.

Reading stock status

Go to Inventory (called Products in the new admin sidebar). A simple product is classified from its own stock. A product with options is classified from its active variant rows, using the saved product's Low-stock alert threshold:

StateRule
In StockThe product is not out of stock, and neither its simple-item stock nor any active variant is between 1 and its threshold
Low StockA simple product or at least one active variant has 1 unit up to and including its threshold
Partly sold outThe product total is above zero, no active variant is low, and at least one active variant has zero units or fewer
Out of StockThe product's total stock is zero or fewer units

The Inventory list shows the store-wide picture. The POS counter in a store that has taken a location live reads stock for its own bound location instead, so a product can be In Stock here and show 0 left at a counter whose location holds none. See Shared Inventory.

Set a product's Low-stock alert

In the new admin, go to Products → Add product / Edit → Pricing & stock, enter the remaining-unit level in Low-stock alert, and select Save product. Leave the field blank or save 0 to use the default of 10; any other non-positive value also falls back to 10.

In the classic theme, go to Inventory → Add Product / Edit Product → Pricing & inventory, enter the same Low-stock alert, and finish Save product in Add or the main Save action in Edit. Both classic dialogs use the same default of 10 when the field is blank or 0.

Products with variants still have one threshold at the parent-product level. Each active variant row owns its In stock quantity and is compared separately with that one number. A row at or below the threshold flags the product only while that row remains above zero, even when the other rows keep its total stock high. A zero-stock row belongs to Out of Stock rather than Low Stock, even when other variants keep the product's total healthy; the product is then eligible for the Out of stock filter and can show Partly sold out. Inactive variant rows do not participate. The editor states this beneath Low-stock alert: “Defaults to 10. Applies to each variant and drives admin badges, dashboard and alerts.”

Out-of-stock products stay listed

An out-of-stock product remains visible on your storefront — it isn't hidden automatically — but shoppers cannot add it to their cart until stock is replenished, unless you've enabled backorders for it (see below).

Adjusting stock

In the new admin, open Products → Edit → Pricing & stock. Turn on Track stock. A single-item product shows Stock here; a product with options shows Stock derived from variants, so edit In stock in the variant grid instead. Select Save product after the change. In the classic theme, use Inventory → Add Product / Edit Product → Pricing & inventory for a single-item product, or Inventory → Add Product / Edit Product → Variants for option rows. Once an option exists, both classic dialogs hide the single-item Stock field and stop requiring it; each generated row owns Stock. In classic Edit, row and bulk changes remain local until you select the dialog's main Save. Use these controls for a count correction, received stock, or a write-off.

If saving a stock number is refused on a batch-tracked item

An item whose stock is kept in batches does not accept a typed-in stock number. When you change Stock on such an item and save, the save is refused and the editor shows:

This item tracks stock by batch, so you can't type a new stock number here. Use Receive stock to add stock, or adjust a batch to correct it.

The new admin editor shows it as the save error; the classic Edit dialog shows the same sentence as one error toast.

To add stock to such an item, use Receive stock (owner screen: see Receive stock and move it between shops). The message also mentions adjusting a batch to correct a count.

Stock history

Stock history lists every change to one item's stock, newest first, so you can answer "why is this number what it is?" It is read-only: you can't edit or delete a row.

Where to find it: in the new admin, go to Products, open a saved product, and select the Stock history tab next to Product. The tab does not appear on Add product, because a product that isn't saved yet has no history. In the classic theme, the same list appears as a Stock history section on the product's detail page.

At the top, Stock: N shows the item's current stock. A product with options also shows a Variant drop-down, set to All variants. Pick one variant to see only its changes; Stock: N then shows that variant's stock.

ColumnWhat it shows
DateWhen the change happened.
What happenedThe reason, in plain words: Sold, Order cancelled, Returned, Courier return, Sale undone, Stock count, Stock set, Opening stock, Damaged, Thrown away, Stock received, Moved in, Moved out. Anything else reads Stock changed. A sale that took stock below zero also carries an Oversold mark; hover it for Sold more than the stock on hand. Count this item and fix the stock.
WhereOnline, Admin, Connected app or Automatic; anything else reads Other.
VariantThe variant name. This column only appears while the drop-down is on All variants.
ChangeThe units added (green, such as +3) or removed (red, such as -1).
Stock afterThe stock once that change was applied. A dash means no balance was recorded for the row.

The list loads in pages. Select Show older changes at the bottom to load the next page.

Why is my history empty, or missing a change I just made?

An item with no movements shows No stock changes yet. The tab reads the saved product, so a stock edit you haven't saved with Save product isn't in the list yet. If loading fails, a red banner appears with Try again; select it to reload. If a variant you just added isn't in the drop-down, save the product first.

Stock count

Use a stock count when you've physically counted your shelves and want the system to match, without losing any sale that happens while you count. It replaces guessing a correction in the Stock field.

Where to find it: in the new admin, go to Products, open a saved product, and select the Stock count tab, beside Stock history. In the classic theme, it is a Stock count section on the product's detail page, below Stock history. Add product has no count tab.

Start the count before you count

Select Start count. This marks the moment your count begins, and the page shows how many units were packed for online orders when you started. Start first, then count: sales made after you select it are kept. If Start count is disabled with Reload this product to load its variants before starting a count., reload the page. If you see Could not start the count. Try Start count again., select it again.

Find your items

The table lists Item, In stock at start, and Counted quantity. A product with options has one row per variant. Use Search item or scan barcode to filter by name, variant or barcode. Press Enter with a single match to jump to its Counted quantity box, which is how a barcode scanner fits in. No matching items. Try a name or another barcode. means nothing matched.

Tell it about the packed parcels

By default the count assumes you counted the parcels you've packed for online orders, since those units are still physically in the shop. If you left them out, tick I did not count the packed parcels and the system won't add them back.

Enter what you counted

Type a whole number in Counted quantity for each item you counted. Leave items you did not count blank. Enter 0 only when there are none. A blank row is skipped, never set to zero. Letters, decimals and negatives show Enter a whole number, 0 or more. and block the next step.

Review changes

Select Review changes. Each row you counted shows Stock N → M under Stock change, with a Status of Not saved yet. The page notes that these changes include sales made since you started. If it shows Could not check the latest stock. Your counts are kept. Try Review changes again., select Review changes again. Select Back to count to change a number, or Cancel count to throw the whole count away without changing any stock.

Save count

Select Save count. You'll see Stock count saved. Sales made during the count have been kept. Select Start another count to begin a new one. Each saved row appears in Stock history as Stock count.

What happens to sales made during the count. Your count is measured as of the moment you selected Start count. When you save, the system works out the change from your count at that moment, so a sale made while you were counting is deducted from your counted number, not lost and not counted twice. The review figure includes sales so far, and any further sales before you select Save count are kept too.

Packed parcels. Stock numbers don't include units packed for unshipped online orders. With the default, those units are added to what you counted, so a count of 20 with 3 units packed sets stock to 17. With I did not count the packed parcels ticked, stock is set to exactly what you typed.

If a save only partly works. Items save one at a time. If one fails you see Some counts could not be saved. Saved rows are marked below. Try again to save the remaining rows. Rows marked Saved are done and won't be saved twice; select Try again to send only the rest. Back to count is unavailable once any row has saved.

Finish or cancel a count before saving the product

While a count is open, Save product is blocked with Finish or cancel the stock count before saving the product. If the count saved but the page couldn't reload the latest stock, you'll see Count saved. Reload this product before editing its stock. Reload the page before editing stock.

Stock changed while you were editing

Stock can move while your edit page is open: a counter sale, an online order, a return, a stock count, or another admin saving the same product. When you then save, the editor checks that the stock it showed you is still the latest. If it isn't, the save is refused instead of overwriting the newer number with your older one.

New admin (Products → Edit):

  1. Select Save product. If the stock moved, the save bar turns red and shows Stock changed while you were editing. Reload this product and try again.
  2. Select Refresh stock, the button beside the message. It is only shown when you edit an existing product, not when you add one, and is disabled while it is loading.
  3. The editor loads the latest stock for the product and every variant. A toast says Stock refreshed. Your other changes are kept. Re-enter the stock and save again. Every other unsaved edit (title, price, photos and so on) stays exactly as you left it. Only the stock numbers you had typed are replaced by the current ones.
  4. Re-enter the stock change you wanted, based on the new number, and select Save product again.

Classic theme (Inventory → Edit Product): the dialog shows a toast with Stock changed while you were editing. Reload this product and try again. There is no refresh button. Close the dialog, reopen the product to see the current stock, and re-apply your edit.

Why did my save say stock changed?

  • It means someone or something else changed the stock after you opened the product. Open Stock history (it lists each sale, return and count with its time) to see what moved it.
  • Nothing from the refused save was written. In the new admin, use Refresh stock and save again. In the classic dialog, reopen the product first.
  • It keeps happening on a busy product: stock is moving every few minutes. Open the product, make the stock edit straight away and save, or use a stock count for stock corrections.

Troubleshooting stock count

  • Counted quantity is higher or lower than I expected after saving: sales made since you started were deducted, and packed parcels were added back unless you ticked I did not count the packed parcels. Check Stock history for the Stock count row and the Sold rows around it.
  • A variant is missing: the count lists saved variants only. Save the product, reload, and start again.
  • I want to count one variant only: fill in only that row and leave the others blank.

Product stock and variant stock

Once a product has real, merchant-added variants (Size, Color, or any option you've configured with its own price and stock — see Product variants), its own top-level stock number stops being something you type in directly. Instead it's calculated for you as the sum of that product's active variants' stock, and the platform recalculates and saves it automatically every time:

  • you add, edit, or delete a variant, or bulk-generate the variant matrix
  • a customer places an order that draws down a variant's stock
  • an unpaid order is cancelled or automatically expires and its stock is restored
  • a refund restores stock for a returned item

Enter and adjust In stock on the variant rows themselves rather than a top-level stock field, which becomes a read-only derived total for a product with options.

A variant switched to Inactive is excluded from that total even if the number in its row is still nonzero — deactivating a discontinued option drops it out of the product's stock the same way deleting it would.

Products that have never had a real variant added — where stock has only ever been a single number on the product itself — are unaffected by any of this: that field stays exactly what you type into it.

What the storefront shows for a variant product

The product page and Quick view show the stock of whichever variant is preselected when the page first loads — the variant marked Default in your variant matrix, if it's active, otherwise the first active variant that still has stock. The stock number (and the Sold out / In stock state) updates the moment the shopper picks a different option.

Why does my product show Sold out when its variants have stock?

Before product stock followed variant stock automatically, a merchant who only ever entered stock on the variant rows could be left with the product's own stock number stuck at whatever it was before (often zero) — that's now fixed for every product going forward. If a product still shows Sold out while its variants clearly have stock, check:

  • The Default variant's own stock. The product page preselects the variant marked Default in the matrix regardless of whether it has stock — a depleted Default variant shows Sold out on first load even while other options are in stock. Restock that variant, or set it to Inactive so preselection falls through to the next in-stock option instead.
  • Whether the variants you restocked are Active. An Inactive variant's stock never counts toward the product's total, no matter what number is in its row.

Low-stock alerts

The same per-product number drives every admin low-stock surface, but products with options are evaluated one active variant at a time:

  • The new Products grid/list and classic Inventory table show the amber Low Stock badge when any active variant has 1 unit up to and including the threshold. Both themes name the affected rows and units, such as Navy / M: 2 left, instead of making you infer the problem from the product's total. A zero-stock row is named sold out in the same detail but is not itself classified as low.
  • In Inventory, Low stock and Out of stock are separate filters. The first finds positive low rows; the second finds a zero-stock simple item or any sold-out variant. A product can appear in both when, for example, one variant is low and another is sold out. Needs reorder is the combined view. The NEEDS RESTOCK summary reports the low and out counts; the forecast banner's Review low stock → button (it was labelled Reorder all before) applies the low-stock filter. The platform has no purchase-order step behind that button, so it only filters the list. The stock filters, the row count and the pager are applied on the server across your whole catalogue, not just the first page of up to 100 products, so the pager total matches the NEEDS RESTOCK number even for a store with more than 100 low or sold-out products.
  • Bulk status and warehouse actions. Tick the checkbox on one or more product rows. On the new Products page the bulk bar offers Set active, Set to draft and Assign Warehouse; the classic Inventory table shows Set active (N) and Set to draft (N) buttons in its header while rows are selected. The platform sends one update per selected product and refreshes the list only after all of them finish. The toast reads N product(s) updated, X of Y products updated; Z failed if some updates were rejected, or No products were updated if all failed. If some failed, re-select those rows and try again.
  • The Dashboard Stock Alerts count uses the same per-variant rule and equals the number returned by Inventory's Low stock filter. Its list names each affected variant and the number left. A zero-stock row does not create a low-stock match, although another positive low row on the same product can still put that product in the count.
  • The Inventory report uses the same classifier for its count and table. For a product with options, the Stock column is the lowest active-variant quantity; the report table does not currently name the variant rows.
  • When a stock edit makes a previously healthy product become low because a variant crosses from above the threshold into the positive 1-through-threshold range, one in-app Low Stock Alert is created. It names the variant, for example Hoodie — Navy / M: 2 left, and then reports the effective stock and threshold. When a variant instead reaches zero, the separate Out of Stock alert names it, for example Hoodie — Navy / M is now out of stock! Zero never generates a Low Stock notification. Further below-threshold edits do not repeat the low-stock alert while the product remains low.

For POS stores, turning low stock into draft purchase orders is covered in Reorder advice. Once an outlet is live for per-location stock, that advice has one row per outlet, and each draft is for the outlet whose row you ticked; see Reorder advice for stores with several outlets.

What the numbers at the top of Products mean (new admin)

The new Products screen states each catalogue number once, in the summary strip under the page title. The title area itself carries no count line, and neither the category filter's all entry nor the Needs reorder shortcut repeats a number.

WhereWhat it shows
CATALOGUED tileThe size of your whole catalogue, not just the rows on the current page. Its sub-line, N active, is the store-wide count of products whose status is active.
NEEDS RESTOCK tileOut of stock plus low stock in one number. Its sub-line splits it as N out · N low.
Needs reorder shortcutA text link beside the category filter. It appears only while at least one product needs restocking, and selecting it applies the Needs reorder stock filter (out of stock and low stock together). It shows no number; read the count on the NEEDS RESTOCK tile.
all entry in the category filterClears the category filter. No count is shown beside it.

While the first page is loading, or if the first load failed, the tiles show a dash (—) instead of a zero, and no sub-line.

The N active sub-line is fetched separately from the page of products. If your whole catalogue fits on the loaded page, it is counted from those rows. If it does not, the screen asks the catalogue for the number of active products and shows the sub-line only once that answer arrives. A page of 8 rows in a 1,325-product store can therefore never read "8 active".

Why is the active figure missing under CATALOGUED?

The sub-line is deliberately blank until the store-wide active total has loaded; it is never filled in from the visible page. If it stays blank, refresh the screen. A blank sub-line with a correct CATALOGUED number means only the active-total request has not returned, and nothing is wrong with your products. If both tiles show a dash, the catalogue itself failed to load. Retry from the screen's error state.

CATALOGUED counts every product, active or not

CATALOGUED counts all products in the catalogue, so it can be larger than N active: draft and archived products make up the difference. The classic Inventory screen is unchanged by this and does not have these tiles.

In the new admin, open Products; in the classic admin, open Inventory. A full-page loading skeleton is used for the initial empty load. Once products are present, a refresh keeps the list visible instead of replacing the whole screen with that skeleton.

If a search in the new Products screen finds nothing, the result names the query as No products match “your search”, suggests another name or SKU, and offers Clear search. The catalogue totals above the results remain the full catalogue's numbers; a no-match search is not treated as an empty store. Clear search removes only the search. A non-search filter with no matches instead says no products match your filters. and offers Clear filters. A genuinely empty catalogue keeps its own first-product state and Add product action.

In the classic admin, go to Inventory and search in Search products.... A search with no matches shows No products match “your search” and Clear search in the table. Select it to remove the query. When there is no search term, the classic table keeps its original No products found matching filters. empty row.

On a narrow classic table, the row keeps Edit and its Active/Inactive switch reachable while hiding Reviews and Preview. In both the new list and grid, open More options for edit, Preview, Reviews, and Archive on an active product; an inactive product shows Publish instead of Archive.

Search shows no products

In either admin theme, No products match “your search” means the catalogue still exists: try a product name or SKU, or select Clear search. In the new admin, the catalogue numbers staying visible are another check that this is only a no-match result. Its no products match your filters. message means a category, stock, status, or another filter still excludes every row; select Clear filters. In the classic admin, No products found matching filters. is the unchanged empty row shown when no search is active. In the new admin, the first-product prompt means the catalogue itself is empty, so select Add product.

Set the customer-facing “Only N left” message

The storefront message is a page-layout setting, not the number saved on an individual product. Use the new Store Editor and publish the page after changing it:

Customer surfaceNavigationControls and result
Product cardsOnline Store → Store Editor → Browse → Product ListingSet Low-stock message style to Real inventory only, then set Low-stock threshold from 1 to 20. A card shows “Only N left” when its product stock is positive and at or below that saved page threshold. Off hides the message.
Product pageOnline Store → Store Editor → Browse → Product DetailSet Low-stock message style to Real inventory only and choose Low-stock threshold from 1 to 20. The buy box shows “Only N left in stock” for the selected product or variant when its stock is positive and at or below the saved page threshold. Off hides it. Promotional uses the number in promotional copy instead of testing for genuinely low stock.

Both page thresholds start at 5 on an unconfigured page. Select Save Draft, verify the message with a suitable preview product, then Publish. The existing page-layout editor at Online Store → Theme → Page Layouts can choose the Category or Product template, but does not show these contract-backed control rows.

Other storefront stock labels remain separate and fixed today:

  • The automatic listing-card LOW STOCK badge is eligible when the product tracks inventory and its numeric stock is above zero and at or below 5. It ranks ahead of SALE, BESTSELLER, and NEW; only PRE-ORDER ranks higher. In the Store Editor, Maximum badges controls how many badges a card can show. It defaults to one and accepts one to three, so PRE-ORDER can displace LOW STOCK when the maximum is one.
  • Older customer product cards and cart lines use Low stock below 5 units; older variant comparison and selector labels use Only N left at 10 units or fewer.
  • The product storefront preview inside the classic Add/Edit dialog uses 10 for its preview-only Low stock (N left) label.

These fixed storefront labels, the Store Editor page controls, and a landing page section's own Low stock threshold do not read the admin product's Low-stock alert value.

Why does a product with 200 units show Low Stock?

The 200 is the sum of its active variants. One active row can still have between 1 unit and the product's Low-stock alert and flag the whole product. Read the variant names beneath the inventory badge or in Dashboard Stock Alerts, then restock those rows. Inactive rows are ignored. If a product is not flagged when expected, remember that a zero-stock row is not Low Stock, confirm its threshold was saved — blank or 0 means 10 — and refresh Inventory, Dashboard, or Reports after saving stock. If a different row is at zero, look for Partly sold out or use the Out of stock filter; zero does not qualify that row for Low Stock.

Why didn't a variant alert repeat?

A Low Stock Alert is created only when the stock change moves the product from not low to low. Once one variant has already put the product in Low Stock, another positive edit at or below the threshold — even on a different variant — does not create a second low-stock crossing alert. A variant that reaches zero instead creates a separate Out of Stock alert naming that row. Restock every low variant above the threshold first; a later crossing can then create a new alert. Changing only the threshold does not create a stock-change notification. Optional low-stock email is off until enabled in Settings → Notification Preferences.

Storefront urgency is separate

The customer-facing Only N left message does not use the product's admin alert threshold. If only the storefront differs, confirm Low-stock message style is not Off, the intended variant is selected, the chosen template supports the controls, and the Store Editor draft was published. The fixed storefront labels listed above also do not follow the admin product threshold.

Backorders

Open Products → Add product / Edit → Pricing & stock. Turn on Keep selling when out of stock to keep a tracked product purchasable after its available quantity reaches zero. Leave it off to show the product or selected variant as sold out and block a new add-to-cart action.

The same switch decides the point-of-sale counter: with it off, the counter refuses to add a tracked item at or past zero stock. See Sell past zero stock, or not.

Why is a zero-stock item still purchasable?

Check Keep selling when out of stock on the saved product and confirm you are inspecting the same selected variant on the storefront. Turning the switch off only reaches customers after you select Save product.

Bulk-edit variant stock and prices

Open the unified variant grid

In the new admin, go to Products → Edit, then scroll to Variants. In the classic theme, go to Inventory → Edit Product → Variants. Use Group by Colour, Group by Size, or None to find the rows you need.

Select the affected variants

Select individual rows or Select all. The bulk bar reports how many variants are selected.

Set or adjust values

Choose Set stock to apply one available quantity, Set price for one price, Adjust % for a percentage change, or Turn off to stop selling the selected rows. Inside the drawer, Stock offers Leave as is, Set to, and Add; price rounding offers Round to ₹…9 and No rounding. Review the new price and margin preview, decide whether to Keep each variant’s current compare-at price, and select Apply to N variants. A row with a price different from the product Price becomes independent; applying the exact product Price makes it follow later product Price changes again.

Save the product

Bulk actions change the local product draft; they do not save immediately. Review the rows and select Save product in the new admin or the main Save action in classic Edit Product. In the new admin, a failed save phase is named and offers a retry without repeating successful steps.

Why does one variant keep its old price?

Changing the product Price only updates rows that still follow it. A price typed into one row, or a different price applied with Set price, is an override. Set that row back to exactly the current product Price, apply the bulk change if used, then save the product; it will follow the next product Price change.

Multi-location inventory

If you stock the same product across more than one warehouse, each location tracks its own quantity for that product. Booking a shipment or fulfilling an order draws from the warehouse the product (or variant) is assigned to — see Warehouses & Product Shipping Setup for how that assignment works.

Once a location is taken live for POS, its counters sell from that location's own stock: the counter catalogue, search, variant chips, offline copy and live stock updates show that location's available quantity (level minus safety stock), not the store-wide total. If a product shows 0 left at the counter, check its quantity at that location and transfer stock in. Stores without per-location stock are unchanged. See Shared Inventory.

Overriding the warehouse for a single variant

A product's warehouse is set once at the product level, but if one specific variant needs to ship from a different location — a bulkier size stocked only at a second warehouse, for example — you can override it per variant in the classic admin. Open the direct legacy route /inventory/PRODUCT_ID?manageVariants=1, then under Set variant stock select the row's Edit icon and pick a different Warehouse. Leaving it on the default keeps that variant tied to the product-level warehouse. The classic Inventory table does not currently link to this route, and the unified new-admin grid does not expose warehouse overrides.

Who sees this field

The warehouse field in the variant editor only shows a live picker for vendor accounts with more than one warehouse. Store admin accounts see it as a disabled field showing the store's default provider configuration instead — there's nothing to change there.

Next steps

Count stock at one location

Screen: Inventory (new sidebar: Products) → open a saved product → Stock count. The classic product detail has the Stock count section instead of a tab. Use your authorized admin account and reconnect before starting or saving a count; the cashier's offline catalogue is not a live stock-count screen.

  1. Before Start count, choose Shop to count when the selector is shown. It lists active locations whose inventory has been activated. Default shop asks the server to resolve the target; it cannot replace an explicit choice when your store needs one.
  2. Select Start count, check the shop name displayed with the count, then follow the count, packed-parcel and Review changes steps above. Finish with Save count.
  3. That count keeps its original location and stock version (the location's inventory epoch) through review, save and recovery after reload. A store can have one activated location while another still uses the shared pool; a count at the activated location does not overwrite the other shop's pool.

Why does it say Choose the shop to count, then start again.? Select the intended activated shop, then Start count again. A missing shop may still need its location activation. If the location or stock version changed, reload and start a fresh count; do not send the old count against a different shop. If the location list fails to load, resolve the warning and reconnect rather than assuming the shared stock figure is the selected shop's count.

For Lot code, View history for lot, Hold out of sale, Dispose of this lot and Remove expired stock, follow lot setup and history. Lot setup needs owner authority and enabled lot tracking; holding or disposing requires a reason.