Why did my Shopify product CSV import delete variants, and how do I prevent it? (2026)

Updated · 5 min read

A Shopify product import deletes variants when "Overwrite products with matching handles" is ticked and the file does not describe every variant the product has today: Shopify's help center says that if the Option1 name and Option1 value columns are missing, "a new default variant is created and existing variants are deleted", and that changing an option value deletes the variant ID and creates a new one. The same overwrite also replaces store values with blanks wherever a column is present but a cell is empty. To prevent it, keep the option columns on every row, list every variant you want to keep, remove columns you don't intend to change, and compare the file with a fresh export before importing.

What overwrite actually does

When you import from Products › Import, the dialog offers Overwrite products with matching handles. Without it, "the products that match an existing handle are ignored during CSV import" (Shopify: Importing products). With it, each product whose handle matches is rewritten from the file. Shopify documents four rules:

Situation in your CSVWhat happens to the product in your storeSource
A non-required column is present and the cell is blankThe store value "is overwritten as blank" (Shopify's example: a blank Vendor erases John's Apparel)Importing products
A non-required column is absent from the fileThe store value is keptUsing CSV files
SKU or weight columns are present but Option1 name / Option1 value are not"A new default variant is created and existing variants are deleted"CSV columns
An Option1, Option2 or Option3 value differs from the storeThe existing variant ID is deleted and a new variant ID is createdCSV columns

A fifth effect is not stated in the help center but is how Shopify's community instructions delete variants on purpose: remove the variant's row from an export and re-import it with overwrite (Shopify Community, "How To: Deleting product variants using a CSV file"). So a variant row that is missing from your file, for a handle that is in your file, should be treated as a variant that will be removed.

The five files that delete variants most often

  1. A "price update" file with only Handle, Variant SKU and Variant Price. The SKU column is there, the option columns are not: Shopify recreates a default variant. This is the case in the January 2026 community thread where a merchant updated prices with the native import and found variants "silently deleted", with "no error message or anything" (Shopify Community).
  2. A filtered export. You exported, filtered the spreadsheet to the variants you wanted to change, and imported the visible rows. The hidden rows are not in the file.
  3. A supplier file with renamed option values. "S / M / L" in your store, "Small / Medium / Large" in the supplier file. Every variant gets a new ID, which resets anything tied to the old ID.
  4. A sorted spreadsheet. Sorting by title or price separates variant and image rows from the first row of their product. Shopify warns that a CSV sorted in Excel or Numbers can lose the product's images (Importing products).
  5. Columns kept "just in case" but left empty. An empty Vendor, Tags, Cost per item or Compare-at price column erases that field on every product in the file.

How to check a file before importing

  1. Export the current products (Products › Export) and keep the file. Shopify's own instruction is to "make sure that you have a backup of your product data" before an import.
  2. Delete every column you are not changing, except Handle, Title and the Option name/value columns. Absent columns keep store values.
  3. Make sure each handle has the same number of variant rows as in the export, with identical option values.
  4. Make sure each handle's rows are contiguous and the first row carries the product fields.
  5. Compare the file with the export, variant by variant, before you click Import products.

Step 5 is the slow one by hand. The checker at Shopify product CSV checker does it in the browser: tick "I will use Overwrite", add the export as the reference file, and it lists each variant that would be deleted, each SKU whose option change would recreate the variant, and each store value a blank cell would erase, with the row and column.

Variant limits that also trigger failures

LimitValueSource
Options per product3Using CSV files
Variants per product2,048 (since 15 October 2025; previously 100)Shopify developer changelog
Images per product250Using CSV files
File size15 MBImporting products

The developer changelog notes that apps still using the older REST product APIs may not handle products with more than 100 variants.

FAQ

Can I undo a CSV import that deleted variants? Re-import the export you made before the import, with overwrite. The deleted variants come back as new variants with new IDs, so links held by apps, reviews or feeds that pointed to the old IDs do not return. Without an export made before the import, there is nothing to restore from.

Does an import without overwrite delete anything? No. Without the overwrite option, products whose handle already exists are skipped, and only new handles are created.

Can a CSV import delete whole products? No. Shopify states that CSV files can't be used to bulk-delete products. Products absent from the file are left as they are.

How do I update only prices safely? Use an export of the products concerned, change only the price column, and keep Handle, Title and all Option name/value columns. Remove the other columns, then import with overwrite.

Is it safe to re-import Shopify's own export unchanged? For variants, yes: the export contains every variant with its option values, which satisfies the rules above. Its empty cells are fields that are already empty in the store. Problems start once the file is filtered, sorted or trimmed in a spreadsheet.

Shopify product CSV checker

  • CSV
  • Excel
  • CSV
  • Excel

Report on screen · fixed CSV $4.99

Check a product CSV