Shopify CSV Import Resets Inventory Policy: The Fix

Importier Team9 min read
Warehouse receiving dock with stacked cardboard boxes and a clipboard with delivery manifests representing incoming inventory and pre-order fulfilment.
On this page

A sporting goods merchant had 15 products configured to keep selling when out of stock. These were popular items: customers placed orders knowing stock would arrive within two weeks. On Monday morning the merchant ran their weekly supplier CSV to update pricing and replenishment quantities. The import completed without errors.

By Tuesday afternoon, the phones were ringing. Customers could not add those 15 products to cart. The add-to-cart button was showing "unavailable." The merchant opened each product in Shopify admin and found the same setting on every one: "Stop selling when out of stock." Their pre-order system had been silently dismantled by a routine price update.

The import did not warn them. The import did not fail. It succeeded, and in doing so it overwrote a field the merchant did not know was being touched.

What Shopify Inventory Policy Actually Controls

Shopify gives every product two inventory policy options. The first, "stop selling when out of stock" (internally deny), is the default: when quantity reaches zero, the product goes unavailable and cannot be purchased. The second, "continue selling when out of stock" (continue), keeps the product purchasable regardless of stock level.

The continue setting is the foundation of three common merchant workflows: pre-orders (accept now, ship later), backorders (known restock date, take orders in advance), and digital products (no physical stock to deplete). Any merchant running these workflows depends on that setting staying set.

Inventory policy is stored in the inventory_policy column of a Shopify CSV. The column accepts two values: deny and continue. The problem is that most supplier exports, third-party CSV tools, and even some Shopify-generated exports either do not include this column or leave it blank. Shopify's importer treats a blank or missing value as deny on product creation, and overwrites with whatever value is present on product update.

How Imports Reset the Policy

There are four distinct paths by which a CSV import silently resets inventory policy to deny:

Path 1: New product creation with no inventory_policy column. When a CSV import creates a new product and the CSV does not include an inventory_policy column, Shopify assigns the default deny policy. This is expected behaviour for new products. The problem arises when the import is meant to update existing products but the import key (handle or SKU) does not match, causing Shopify to create a new product instead, bypassing the existing product's continue setting entirely.

Close-up of a physical toggle switch panel with two positions showing on and off states, mounted on a white surface.

Path 2: Update import with inventory_policy set to blank. When a CSV export from Shopify is opened in Excel, modified (price column updated, for example), and saved again, Excel may leave the inventory_policy column present but blank some cells where the column was empty or formatted inconsistently. A re-import with a blank inventory_policy value on an existing product resets its policy to deny.

Path 3: Supplier CSV that does not include inventory_policy. Supplier-generated exports from MYOB, SAP, distributor portals, or any non-Shopify system do not include an inventory_policy column. If the merchant uses these files to update existing Shopify products via Shopify's native importer, the behaviour depends on Shopify's version: in some cases the field is left untouched; in others it resets. The inconsistency makes this unreliable to depend on.

Path 4: Shopify CSV import with inventory_policy set to deny for all rows. Some export tools or spreadsheet templates default all inventory_policy values to deny as the safe default. A merchant who does not audit their CSV before importing will apply deny to every product, including the 15 that were set to continue.

According to Shopify's inventory management documentation, inventory policy is a product-level setting that controls purchasing behaviour at zero stock. It is not a global store setting: it must be managed per product, which means a CSV import that touches product records can affect it even when the merchant's intention was only to update price or quantity.

What Breaks When Policy Resets

The immediate effect is visible: customers can no longer add the affected products to cart. Shopify's storefront shows the product as unavailable, sometimes with no message explaining why (this depends on the theme).

The less visible effects compound over time.

Pre-order revenue disappears without a notification. A merchant running a pre-order campaign for a product launching next month will not receive orders from customers who visit during the period the product is stuck on deny. Those customers do not contact support to say the product is unavailable. They leave.

Backorder workflows break midway. A merchant who took 40 orders against a product that was set to continue (waiting for a restock) finds, after a routine update import, that no new orders can be placed. The 40 existing orders are unaffected, but no new ones can come in until the policy is manually restored.

Four colour-coded file folders arranged in a row on a wooden table representing four distinct document categories.

B2B merchants who use backorders as a standard fulfilment model (accept orders against a purchase order, ship when the goods arrive) are the most exposed, because they often run regular catalogue imports to maintain pricing alignment with suppliers.

How to Prevent Inventory Policy from Being Reset at Import

The reliable fix is to control which fields the import updates. A price update import should touch price fields only; it should not touch inventory policy, SEO fields, images, or any other field the merchant manages separately.

  1. 01
    Before importing a CSV intended as an update (price refresh, quantity sync, new product additions), open the file and check whether the inventory_policy column is present. If it is present and contains deny for products that should have continue set, remove the column from the CSV entirely before importing.
  2. 02
    In Importier, open the field mapper after uploading the CSV. Locate inventory_policy in the source columns list. If the supplier CSV includes this column, do not map it to any Shopify field. An unmapped column is ignored and does not reach Shopify at all.
  3. 03
    If you are running a recurring supplier update via Importier's scheduled import, save a mapping profile that explicitly excludes inventory_policy. Subsequent scheduled runs apply the same profile, preserving the policy on every update pass.
  4. 04
    After the import completes, search Shopify admin for the products you know have continue set and confirm their inventory policy is unchanged. This audit takes two minutes for 15 products and confirms the import handled the field correctly.

The key behaviour difference between Shopify's native CSV importer and Importier is in field handling. Shopify's importer applies all fields present in the CSV, and its behaviour on absent fields varies. Importier's field mapper is explicit: only the columns you map to Shopify fields are sent to Shopify. Every column left unmapped in the mapper is skipped, regardless of whether it is present in the CSV.

For a merchant whose supplier CSV includes inventory_policy: deny on every row (because the supplier's export system defaults to it), running that CSV through Shopify's native importer will reset every product's policy. Running the same CSV through Importier with inventory_policy unmapped leaves every product's existing policy untouched.

A supplier CSV that includes inventory_policy set to deny is not an error: it is the supplier's system applying its own default. The merchant's job is to exclude that column from the update, not to ask the supplier to change their export.

Fixing Products Already Reset

If the import has already run and inventory policy has been reset on affected products, the fix requires updating each product's policy back to continue. There are two approaches depending on how many products are affected.

For a small number of products (under 20): open each product in Shopify admin, scroll to the Inventory section, and change "Stop selling when out of stock" to "Continue selling when out of stock." Save each product. This takes about 30 seconds per product for a small set.

For a larger set: build a correction CSV that contains only two columns: Handle and inventory_policy, with the value continue for each affected product. Import this CSV through Importier with Handle mapped as the match key and inventory_policy mapped to the inventory policy field. Set the import to "Update existing" mode. The import applies continue to only the listed products and leaves everything else untouched.

Printed spreadsheet on a worktable with two columns visible, a ruler and highlighter marking specific rows for correction.

The import profiles article covers how to save a field mapping for reuse. For merchants who need to run this kind of targeted correction import regularly, saving a "policy reset: restore continue" profile means the correction takes seconds to apply on any future incident.

After restoring the policy, verify that the affected products are purchasable by attempting to add them to cart from a private browser window. Shopify's storefront cache can take a few minutes to reflect the change.

Without Importier
Shopify native CSV importer
  • Applies all columns present in the CSV, including inventory_policy
  • Resets policy to deny if inventory_policy is blank or missing from the CSV
  • No per-field exclusion available: cannot skip a column that is present
  • Requires manual audit after every import to check policy has not changed
  • No profile system to save safe-update configurations
With Importier
Importier with field mapper
  • Only updates the fields explicitly mapped in the field mapper
  • Unmapped columns are ignored and inventory_policy can be excluded entirely
  • Mapping profile saves which fields are included on each supplier's update imports
  • Preview shows which fields will be updated before anything reaches Shopify
  • Restoring a reset policy takes one correction import with the saved profile

Key Takeaways

  • Shopify's native CSV importer does not protect inventory policy. Any import that includes or processes the inventory_policy column (or creates new products) can reset the policy to deny. There is no warning when this happens.

  • Three merchant workflows depend on continue staying set. Pre-orders, backorders, and digital products all require inventory policy set to continue. A reset silently blocks purchases without a storefront error message.

  • The reliable fix is field exclusion, not spreadsheet editing. Removing inventory_policy from a supplier CSV before importing is error-prone and must be repeated on every update. Excluding it in Importier's field mapper is a one-time configuration saved in the import profile.

  • Unmapped columns in Importier do not reach Shopify. If inventory_policy is not mapped to a Shopify field, it is not sent to Shopify regardless of what value is in the supplier CSV. This is the mechanism that protects the setting.

  • Audit after every update import. For products with non-default settings (continue, compare-at pricing, specific sales channel availability), a two-minute audit after an update import confirms those settings were not touched. Catching a reset the same day it happens is less work than reconstructing a week of lost pre-orders.

Protect your pre-order and backorder products with selective field mapping at importier.app.

Ready when you are

Set up your first import in under five minutes.

Importier brings products into Shopify with AI descriptions, category metafields, and data enrichment on every run.

Install on Shopify