SHOPIFY INVENTORY CSV GUIDE

Shopify Variant Inventory Policy: deny vs continue and 8 CSV checks

If Shopify says an inventory policy “is not included in the list,” or products import while stock stays unchanged, start with the exact policy value and its related inventory fields. The same file can fail when a product CSV is used for a location update, tracking is blank, or the row does not match the intended variant.

Check inventory fields privately

QUICK ANSWER

Choose the right CSV first, then verify tracking, quantity, and variant identity.

01Choose the workflow

Use Shopify’s inventory CSV for location quantities and a product CSV for catalog fields.

02Complete the group

Tracker, quantity, policy, and fulfillment fields need to describe one coherent setup.

03Test one SKU

Confirm one known variant and location before a catalog-wide stock update.

INVENTORY IMPORT CHECKS

What each failure usually means

01
Products imported, inventory unchanged

The file uses the product workflow for a location-level stock update

Shopify separates catalog data from location inventory operations. A product CSV can contain variant inventory fields, but it is not a substitute for the dedicated inventory CSV workflow when quantities need to be updated and reconciled by location.

Fix

Start from a fresh export for the job you are doing. Use Shopify’s inventory export and import workflow for location quantities. Use a product export when titles, handles, options, prices, or other catalog fields also need to change.

02
Inventory quantity has no tracker

The row contains a quantity but does not tell the classic product template to track it

In the classic product CSV, Variant Inventory Tracker controls whether Shopify tracks stock for the variant. A numeric quantity next to a blank tracker can look complete in a spreadsheet while describing an untracked variant.

Fix

If Shopify should manage the stock, use the exact tracker value from a current target-store export—classically shopify. Do not invent values for an app or external inventory system; preserve the value that system requires.

03
Inventory quantity is invalid

The value is blank, decimal, formatted text, or stored under the wrong column

Inventory quantities are whole units. Values such as 12.5, 1,000, ten, or a spreadsheet formula can fail or produce an unintended result after CSV export. Zero is a real quantity, not the same as an empty cell.

Fix

Use a plain whole number such as 0, 12, or -3 when that negative stock state is intentional. Remove grouping separators, formulas, and labels, then inspect the exported text rather than only the spreadsheet display.

04
Inventory policy is not included in the list

Shopify Variant Inventory Policy accepts deny or continue

Variant Inventory Policy controls whether customers can buy a tracked variant after its inventory reaches zero. Shopify documents two exact values: deny stops further purchases at zero and is the default; continue allows purchases after zero and can display negative inventory.

The current product CSV header is Continue selling when out of stock. Older compatible templates can use Variant Inventory Policy. Although the current header reads like a yes-or-no question, its accepted CSV values are still deny and continue—not TRUE, FALSE, yes, no, stop, or allow.

01deny

Stop purchases when tracked inventory reaches zero.

02continue

Keep accepting purchases and allow negative inventory.

03Keep dependencies

With tracker set to shopify, include the policy and fulfillment fields together.

Fix

Start from a fresh export from the target store. Preserve that export’s current or classic header set, replace the rejected policy with deny or continue, and check the tracker, quantity, policy, and fulfillment service as one dependent group.

05
Fulfillment service can't be blank

Shopify tracks the variant, but the classic service field is incomplete

A classic product row can depend on both inventory tracking and fulfillment service. The service must match a configured service in the target store. A copied name from another store or a blank cell can prevent the row from describing a valid operational setup.

Fix

Use the exact configured service. For merchant-fulfilled products without an external fulfillment service, Shopify’s classic product CSV normally uses manual. Keep custom app values unchanged unless the app’s documentation says otherwise.

06
Inventory changed on the wrong item—or not at all

The row does not identify the intended variant consistently

Inventory belongs to a variant, not just a product title. Product CSV rows rely on the handle and option combination; inventory workflows rely heavily on stable variant identifiers such as SKU. Blank or duplicate SKUs make reconciliation difficult even when the CSV itself parses.

Fix

Confirm the exact handle, option values, and SKU against a fresh export. Resolve duplicate SKUs before using them as inventory identifiers. For product-group problems, follow the Shopify variant CSV checklist.

07
Quantity did not change at the expected location

The location context or overwrite preview does not match the intended update

A correct whole number is not enough when a store has multiple locations. The target location must exist and the variant must be stocked there. Product overwrite behavior can also update catalog fields without performing the location operation you expected.

Fix

Use Shopify’s inventory CSV export for the relevant locations, preserve its identifying columns, and test one known SKU. In the preview, verify the target product, variant, and location before applying a large stock change.

08
Invalid header or malformed row

The values are correct, but the exported CSV puts them under the wrong fields

A renamed header, wrong delimiter, unclosed quote, or non-UTF-8 export can shift tracker, quantity, policy, service, and SKU values into neighboring columns. Spreadsheet alignment is not proof that the underlying CSV is valid.

Fix

Preserve Shopify’s exact header row, save as comma-separated UTF-8, and inspect the first failing row in plain text. For broader file, image, category, and reference problems, use the complete Shopify CSV import error guide.

KNOW THE BOUNDARY

What can be checked before Shopify applies stock?

Merch Preflight checks locally

  • Whole-number inventory quantities
  • Classic and current policy value formats
  • Quantity with a blank tracker column
  • Shopify tracking with a blank service field
  • Duplicate SKUs and variant combinations

Shopify must check

  • Locations and whether a variant is stocked there
  • Custom tracker and fulfillment app values
  • Store permissions and inventory states
  • Existing product and variant matches
  • The final import and overwrite result
Catch deterministic inventory-field errors locally

Your catalog and stock data stay in this browser.

Check my inventory rows

FIVE-MINUTE TEST

Before you retry the inventory update

  1. 1
    Choose product or inventory CSV

    Use the workflow that matches catalog fields or location quantities.

  2. 2
    Export a fresh reference

    Preserve the target store’s headers, identifiers, services, and locations.

  3. 3
    Validate one known variant

    Check tracker, quantity, policy, service, handle, options, and SKU together.

  4. 4
    Keep the before-state file

    Use it to compare the expected and actual quantities.

  5. 5
    Review Shopify’s result

    Confirm the exact variant and location before updating the whole catalog.

FAQ

Shopify inventory CSV questions

Why did products import but inventory stay unchanged?

First confirm the workflow. Use the inventory CSV for location quantities. In a product CSV, check that the tracker, whole-number quantity, policy, fulfillment service, and variant identity form a complete row.

Should I use a product CSV or inventory CSV?

Use the inventory CSV when the goal is to update stock by location. Use the product CSV when you also need to create or update product and variant catalog fields.

What does Variant Inventory Tracker mean?

In the classic product CSV, it tells Shopify whether the variant is tracked. The classic Shopify-managed value is shopify. Preserve the exact value from the current target-store export for custom systems.

What values belong in Shopify Variant Inventory Policy?

Use deny to stop purchases after inventory reaches zero, or continue to keep accepting purchases and allow negative inventory. Current exports use the header Continue selling when out of stock; older templates can use Variant Inventory Policy.

Why does Shopify say “inventory policy is not included in the list”?

The policy cell usually contains an unsupported value such as TRUE, FALSE, yes, no, stop, or allow. Replace it with deny or continue, preserve the exact header from a fresh export, and include the related fulfillment field when the inventory tracker is shopify.

Does a clean validation report guarantee inventory will update?

No. Local checks can find deterministic field problems, but Shopify still validates locations, services, product matches, permissions, and the final stock operation.

Official references

This guide follows Shopify’s current documentation on product CSV inventory columns and their valid values, exporting and importing inventory with CSV, and common product CSV import problems. Shopify can change templates and inventory behavior; its current exports, documentation, and import result remain the final authority.