← All Shopify CSV import errors

Variant and option errors in Shopify product CSV imports

Almost every variant error comes from one rule: rows that share a handle are the same product, and each of those rows must describe a different variant. Break that and Shopify either rejects the file or creates products you didn't ask for.

"The variant 'Default Title' already exists"

Validation failed: The variant 'Default Title' already exists.

Cause: two or more rows share the same Handle, but none of them have option values that tell the variants apart. A product with no options has exactly one variant, which Shopify names Default Title internally — so the second such row is a duplicate of the first, and the import stops.

This nearly always means one of two things:

1. They were meant to be separate products

Two different products accidentally got the same handle — often because the handle was generated from a truncated name, or the column was filled down in a spreadsheet.

Fix: give each product its own unique handle. blue-widget and blue-widget-large, not blue-widget twice.

2. They were meant to be variants

They're genuinely one product in two sizes, but the option columns are empty.

Fix: fill in Option1 Name and Option1 Value so each row is distinct.
Handle,Title,Option1 Name,Option1 Value,Variant SKU,Variant Price
blue-widget,Blue Widget,Size,Small,BW-S,19.99
blue-widget,,Size,Large,BW-L,24.99

Note the second row: no title, no repeated product details — just the handle, the option that makes it different, and its own SKU and price.

3. They were extra image rows

If the extra rows exist only to add more images, they must carry only the handle and the image columns. Repeating the title, price or SKU on them turns them into variant rows, which triggers this same error. See image errors.

"You must add option values"

Cause: the product declares an option (say Option1 Name = Size) but some row under that handle leaves Option1 Value empty. Every variant of a product with options needs a value for every option the product defines.

Fix: fill the missing value. If one variant genuinely has no size, the product's options are wrong — a product can't have some variants with options and some without.

The same rule applies in order: you can't use Option2 without Option1, or Option3 without Option2.

Duplicate variants

Cause: two rows under one handle have the identical option combination — two rows that are both Size: Small / Color: Red. Shopify requires each variant's combination to be unique.

Fix: change one of them, or delete the duplicate row. Watch for invisible differences: Small and Small  (trailing space) look identical in a spreadsheet but are two different values — and small vs Small may collide.

The first row of a product must have the Title

Cause: Shopify reads product-level fields (title, description, vendor, type, tags, status) from the first row of each handle only. If that row's Title is blank, there's no product to create. Titles on later rows are ignored — so if you put the title only on the second row, it vanishes.

Fix: make sure the first row of every handle carries the title and the other product-level fields, and that variant rows leave them blank.

"Inventory management is …, so fulfillment service must also be …"

Inventory management is 1, so fulfillment service must also be 1

Cause: this confusing message comes from a mismatch between Variant Inventory Tracker and Variant Fulfillment Service. It usually appears when the tracker column has been filled with a number or a boolean — a 1, 0, true — instead of either a real tracker name or nothing at all.

Fix:

Check your file before you import

Our free browser tool checks every rule on this page — duplicate Default Title rows, missing option values, repeated option combinations, titles on the wrong row, tracker/fulfillment mismatches — and shows the real row number for each. Nothing is uploaded; your catalog stays on your device.

Open CSV Preflight for Shopify →

Drop your product CSV, see every error and warning free, download the fixed file. Name your price — free if you need it.