Shopify "Validation failed: options are not unique": Fix
Shopify's product importer shows Validation failed: options are not unique when one product in your CSV has two variants that can't be told apart. Every variant needs its own combination of option values, and two of them share one.
Why does Shopify say "Validation failed: options are not unique"?
Shopify's common import issues page gives two causes.
Two variants have the same option values. Shopify's example is two medium products, both in black. In a CSV that looks like this:
| URL handle | Title | Option1 name | Option1 value | Option2 name | Option2 value | SKU |
|---|---|---|---|---|---|---|
| linen-shirt | Linen Shirt | Size | M | Color | Black | LS-M-BLK |
| linen-shirt | Size | M | Color | Black | LS-M-BLK-2 |
The SKUs differ, but SKU isn't an option, so Shopify sees two M / Black variants on one product.
The same handle is used twice. If the option values are unique, Shopify's help says the product could be duplicated elsewhere in the CSV with the same handle. Every row with that handle becomes part of one product, so a second copy of the product, or a different product given the same handle, adds variants that clash with the first.
Supplier files cause both in a few common ways:
- A column that differs between variants isn't an option. A supplier lists the same shirt in two fits, but only Size and Color are option columns, so
Slim / M / BlackandRegular / M / Blackboth becomeM / Black. - The same product appears twice, for example once in a "New" section and once in its category.
- Two products share a name, and their handles were made from the name.
How do I fix "options are not unique" in my CSV?
- Find the rows. Sort the file by handle, then by each option value column. Duplicates land next to each other. In Excel you can also add a helper column that joins handle and option values (
=A2&"|"&D2&"|"&F2) and highlight it with Conditional Formatting, then Highlight Cells Rules, then Duplicate Values. - Decide what each pair is.
- The same variant listed twice: delete one row.
- Two real variants that differ in something else, like fit or material: add that as another option (Shopify allows up to 3 options per product), or put the difference into an existing option value (
M Slim,M Regular). - Two different products sharing a handle: give one of them a new handle and its own title.
- Import again. If Shopify names another product, repeat these steps for it.
How does Csvio catch duplicate variants?
Csvio checks every product for repeated option combinations before anything is sent to Shopify, so you see the problem on the mapping screen instead of in a failed import.
- The message names the rows. Csvio lists the product with the combination it found twice and the SKUs of the variants that share it, for example: Two or more variants share the option combination "M / Black" (LS-M-BLK, LS-M-BLK-2). On a long supplier file you don't have to hunt for them.
- It points at the likely cause. The message adds that this usually means a column that reads the same for every variant is mapped as an option, or the column that actually differs between them isn't. You can change which columns are options on the mapping screen, without editing the file. See importing products with variants.
- You can import the rest. Choose Skip this product and import the rest and the other products go ahead. (Csvio offers this while the products with problems are no more than half the file; more than that usually means a column is mapped wrong.) Skipped products show as skipped in the import's results and don't count toward your plan's product allowance.
Csvio groups rows into products by the handle column when you map one, otherwise by the product title. So the second cause from Shopify's help applies here too: two different products with the same title in a file without handles become one product, and if their options overlap, Csvio flags it before the import.
Can I try Csvio on the file Shopify rejected?
Csvio's free plan imports 30 products a month across up to 3 imports. Upload the file Shopify rejected and the mapping screen shows any product with duplicate variants before you confirm.