Product import — the row wasn't recognized as a variant

"My variant SKUs didn't import" — SKU column dependency on option columns

A SKU cell doesn't stand on its own — Shopify only recognizes a row as a distinct variant if its Option Name/Value columns are filled in correctly. Get those wrong and the SKU next to them has nothing to attach to.

import-shopify-products · xlsx-for-ai

What you'll see

A product imports with fewer variants than your spreadsheet had rows for, and the SKUs on the missing rows are nowhere in the store — not attached to any product, not sitting as an orphaned variant, just absent.

SKU is dependent, not independent

It's tempting to think of a SKU as its own identifier that Shopify either accepts or rejects. It isn't treated that way in the CSV import. Shopify determines that a row is a new, distinct variant of a product by reading that row's Option1 Name / Option1 Value (and Option2/Option3, if used) — for example, Option1 Name "Size" with Option1 Value "Large." The SKU column just rides along on whichever variant that row turns out to be. If the option columns for a row are blank, or don't match the option names already established on that product's first row, Shopify can't tell what variant the row is supposed to represent — and a SKU with no valid variant to attach to doesn't get imported as anything.

How this happens in a real spreadsheet

The first row for a Handle usually defines the options properly, since that's the row you built the product from. Variant rows added afterward — extra sizes, extra colors — are where option values get skipped, because it's easy to fill in the SKU and price for a new row and forget the option columns are equally required on every single variant row, not just the first. A second cause: the option name itself has to match exactly across every row for that Handle — "Size" on one row and "size" or "Sizes" on another creates option sets Shopify treats as inconsistent, which can break variant grouping for the whole product.

How to check and fix it

For every row under a given Handle, confirm the option name(s) match exactly (case included) and that the option value for that specific row is filled in and correct — not copied from the row above. Re-upload once every variant row has its own valid option values alongside its SKU.

More Convert a product spreadsheet to a Shopify import CSV — free. guides

← All Convert a product spreadsheet to a Shopify import CSV — free. guides