ClearStock is live on the Shopify App Store.Install free →

← All blogs

Guides9 min read

Shopify bulk edit inventory: the three native ways (and when a tool beats them)

Shopify bulk edit inventory three ways — the inline bulk editor, the CSV export/import loop with exact columns, and when a tool beats the CSV loop.

InventoryX is in development and not available today. ClearStock is the live Shopify app.

You can bulk edit inventory in Shopify three ways without paying for anything: the inline bulk editor (select rows, edit cells in a spreadsheet-like grid), the inventory CSV export → edit → import loop (unlimited rows, works offline), and per-variant edits from each product page (for surgical changes). Everything under a few hundred rows usually belongs in the bulk editor; anything larger or recurring belongs in the CSV loop. Here's exactly how each works, verified against the Shopify admin and Help Center as of October 2026, plus the failure modes that make imports silently misbehave.

One distinction first: Shopify tracks inventory at the variant level, not the product level — so every bulk edit you make is really an edit to variants. If some of your products show no quantity fields at all, tracking may be off; that's a prerequisite, not a bulk-edit problem (see whether Shopify tracks inventory).

Method 1: the inline bulk editor

Best for: fixing dozens of rows fast, adding SKUs or barcodes, adjusting quantities with visual confirmation.

  1. Go to Products (or Products → Inventory for inventory quantities) in the admin.
  2. Check the boxes for the products or variants you want to change.
  3. Click Bulk edit.
  4. Click Columns and add the fields you need — Available, SKU, Barcode. The table now behaves like a spreadsheet.
  5. Edit cells directly. Drag a cell's fill handle to copy its value up or down; hold Alt/command-click to select multiple cells and edit them at once.
  6. Click Save.

Two quirks worth knowing (Shopify Help Center, "Bulk editing", accessed October 2026):

  • Multi-variant products must be edited from the Inventory page. The bulk editor from the Products list only reaches a product's details; when a product has variants, its inventory quantities are editable in bulk only via Products → Inventory.
  • Sorting carries in, but grouping doesn't. The inventory bulk editor shows variants in the order you sorted them, not grouped by parent product — so sort on the Inventory page before opening the editor if you want variants to appear together.

The editor also has a hard edge at size: the more rows and columns you change at once, the slower the save. It's fine for a few hundred rows; it's not how you reset 4,000.

Method 2: the inventory CSV export → edit → import loop

Best for: hundreds to thousands of variants, offsite backup, recurring updates, or importing a full count.

Step 1 — Export. Products → Inventory → Export. Choose the location (or All locations), and choose your format:

  • Available export: one row per variant, location names as column headers with available quantities beneath. Simple, but Shopify's docs note this format "doesn't provide protection against accidental overwrites."
  • All states export (recommended): one row per variant per location, with Incoming, Unavailable, Committed, Available, On hand (current), and On hand (new) columns. The "current" column is your export-time snapshot — more on why that matters below.

Step 2 — Edit. Open the file in a spreadsheet. You change quantities by writing the absolute new quantity, not a delta: if you exported 150 and sold 8, you write 142 in On hand (new). Shopify's own scenarios confirm this: the file says 150 → 142 to represent eight sold. Rules from the Help Center:

  • Whole numbers only — no 1.5. Positive, negative, and 0 are valid.
  • Leave On hand (new) blank for rows you don't want to touch. Blank means "no change," not zero.
  • Use Not stocked for variants that have never been stocked at a location (first-time stocking of a new location, for example).
  • The file can't exceed 15 MB.

Step 3 — Import. Products → Inventory → Import → Add file → Upload → review the summary → Start import. Failed rows generate an email explaining what failed; fix and re-import just those rows.

The safety validation (and why to keep On hand (current) intact). When your file carries both On hand (current) and On hand (new), Shopify compares the "current" snapshot against live inventory before applying anything. If sales changed a row since your export, that row is rejected and reported by email — your stale numbers can't overwrite a fresher truth. In an emergency you can clear the current column to skip validation, but you're then explicitly removing the overwrite protection; don't do it as a workaround for lazy editing.

Required columns. Per the Help Center, every row needs:

Column Required because
Handle uniquely identifies the product
Option1 Value (plus Option2/3 Value if the variant has them) uniquely identifies the variant — use Default Title for products with no options
Location which location's quantity you're setting — case-sensitive, must match the location name exactly

Other columns (Title, SKU, Bin name, HS Code, COO, the state columns) ride along for identification or optional updates. Note that the SKU column in the inventory CSV does not update SKUs — SKU changes go through the product CSV.

Method 3: per-variant edits

For a handful of SKUs, the loop is overhead. Open the product, open the variant, set the quantity in the Inventory section, save. On the Inventory page you can also adjust a single variant's quantity inline. Slower per row, zero setup, and no import to second-guess — for under ten changes it's the fastest method you have.

Common CSV import failure modes

These account for nearly every "my import didn't work" support thread:

Location name mismatch. The Location value is case-sensitive and must match your admin location name character for character. Warehouse A vs warehouse-a vs Main Warehouse — any drift means Shopify can't find the location, and those rows fail or (with certain formats) target nothing. Copy the location names straight from Settings → Locations into your sheet.

The "Not tracked" overwrite risk. If a variant has quantity tracking disabled, the import can't set a meaningful quantity — the variant has no counter to set. And if your CSV writes a number where tracking is off, you can end up with a value that looks right on the Inventory page but isn't decrementing at sale time. Before a big import, confirm tracking is on for the affected variants; the inventory-not-updating diagnostic starts with exactly this check.

Stale snapshot rows. Exported Monday, imported Wednesday: every row that sold in between is rejected by the safety validation. Not a bug — the protection working. Re-export and apply only your outstanding edits.

Blank-vs-zero confusion. Writing nothing means "no change"; writing 0 means "this location now has zero." An accidental keystroke of 0 down a column is a full sell-out of every variant it touched, live immediately. Freeze and re-export before doing anything else.

Committed and unavailable overwrites. On hand includes units committed to unfulfilled orders. If you import a quantity you counted without accounting for committed units, you'll strand open orders. When in doubt, import to match the available picture, not a raw shelf count — or run a proper count cycle using the inventory counts workflow, which handles expected-vs-counted comparison natively.

If quantities changed but the storefront didn't notice, or numbers drift right after an import, that's usually location or channel configuration rather than the file — the troubleshooting guide owns that diagnosis.

When a tool beats the CSV loop

The native loop has real ceilings. You're fine on it if your bulk changes are occasional, single-location, and done by one person who's comfortable in a spreadsheet. You're fighting it when:

  • Multiple locations and channels make "available" arithmetic genuinely hard, because committed units and routing rules differ per location.
  • Updates are recurring — weekly replenishment adjustments, periodic recounts — and each loop costs the same hour it cost last week.
  • Several people edit stock, and the CSV export/import cycle is now a versioning problem as much as an inventory problem.
  • You want changes derived from data (suggested reorder quantities, threshold adjustments) rather than typed by hand.

At that point the spreadsheet is your inventory system, and it's worth considering whether the system should move. The spreadsheet exit guide maps what to migrate and in what order. For most stores the honest sequence is: bulk editor for small fixes, CSV loop for big ones, and a tool only once recurrence and multi-location make the loop itself the bottleneck.

Common questions

How do I bulk edit inventory quantities in Shopify? Select products on the Products → Inventory page, click Bulk edit, add the Available column via Columns, edit cells, and save. For larger sets, export the inventory CSV (Products → Inventory → Export), write new absolute quantities in the On hand (new) or Available column, and import it back. Multi-variant products can only have inventory bulk edited from the Inventory page, not the Products list.

What columns are required in a Shopify inventory CSV? Handle, Option1 Value (plus Option2/3 Value when the variant has more options), and Location. Location must match your admin location name exactly, including case. The Available export uses location names as column headers; the All states export uses a Location column with On hand (current) and On hand (new) for the quantity update.

Why did my inventory CSV import fail for some rows? Most often a location name mismatch (it's case-sensitive), a stale On hand (current) snapshot after sales changed the row since export, decimal quantities, or variants without tracking enabled. Shopify emails you the failed rows when a partial import occurs — fix those rows and re-import rather than re-importing the whole file.

Does bulk editing inventory affect committed or incoming stock? You're setting on-hand quantities, and on-hand includes units committed to unfulfilled orders. If you import a raw shelf count while orders are open, you can strand those committed units. Account for committed and unavailable units before importing, or apply quantity changes during a quiet window after fulfilling open orders.

Can I undo a bulk inventory edit in Shopify? There's no single undo button, but every adjustment is recorded in the variant's inventory history, and an export taken before the edit gives you the prior quantities to re-import. This is why the habit of exporting immediately before any large import matters — your pre-edit export is the rollback file.

Next step: before your next bulk update, export an All-states inventory CSV right now and file it. That snapshot costs two minutes and is both your rollback file and your template — and if you find yourself doing this every week, that's the signal that the loop has become the system.