CatalogClean
CatalogCleanShopify Admin Bulk Product CSV Importer · Matrixify Shopify Import

Shopify CSV Import: "Line 2: Missing Handle" and "Options Are Not Unique" Fix

Exact error
Line 2: Missing Handle

A merchant exporting a product catalog from a POS system or spreadsheet gets "Line 2: Missing Handle" the first time they try to re-import it, and after fixing that, hits "Validation failed: Options are not unique" or "The variant 'Default Title' already exists" on the same file.

Files never leave your browserChecked in under a second$15 one-time Import Pass
VARIANT ROW INSPECTOR · PRODUCT_EXPORT.CSVSHOPIFY + WOOCOMMERCE
HANDLEOPTION1SKU (blank) Line 3: Missing Handle Line 5: Options are not unique Line 7: parent Type → variable Fixed CSV ready for re-import
HANDLE BACKFILLED FROM TITLE · LINE 3FIXED
DUPLICATE OPTION TUPLE · LINE 5 REMOVEDFIXED
VARIATION PARENT SKU NOT FOUND · LINE 9REVIEW
Shopify / Matrixify CSVWooCommerce CSV
catalogclean://exports/product_export.csv
ready
–
Format detected
–
Rows checked
–
Issues found
–
Auto-fixed
Import diagnostics
LineCodeDiagnosis & repairStatus
Fixed rows (preview)
First 6 columns shown
PLAIN-ENGLISH BRIEF // FOR NON-SPECIALISTS & TEAMS

Not steeped in Shopify CSVs? Here is what actually happens.

01

The Everyday Problem

A product spreadsheet is like a packing list for a clothing store — every shirt size and color needs its own label, and that label has to point back to the right parent shirt.

02

Why Computers Reject It

If one label is missing, two labels say the exact same size twice, or a size's label points to a parent that was never listed, Shopify or WooCommerce refuses to import the whole list — not just the one bad label.

03

What Our Tool Does in 1 Second

Drop the spreadsheet in: CatalogClean finds every broken label, instantly fixes the ones that only have one right answer, and lists the rest so you can decide — all inside your browser, the file never leaves your computer.

Bottom line: Think of it like spellcheck, but for the product spreadsheet your online store refuses to import until every label matches.
Why it happens

Root cause & deterministic fix

Root cause

Shopify requires every row to carry a Handle, but spreadsheet exports often leave it blank on the first row of a product (losing the Title-to-handle link) or on variant continuation rows. Separately, Shopify rejects the whole product if two rows under the same handle share the exact same Option1/2/3 Value combination, which happens when a variant is copy-pasted or exported twice.

What CatalogClean does

CatalogClean slugifies the Title into a handle whenever Handle is blank on a row that defines a product, inherits the previous row's handle for blank variant continuation rows, and removes the second occurrence of any duplicate option-value combination within a handle so the file re-imports as one clean product with unique variants.

AsinglemissingHandleorduplicateoptionvaluemakesShopifyorWooCommercerejecttheentireproductfile—notjustthebrokenrow.CatalogCleanfindseveryonebeforeyoure-upload.

How it works

The exact import rules, checked row by row.

Each rule is a plain, inspectable check — not a model's best guess.

Every row checked against the real import rules

Missing Handle, unknown option values, non-unique options and WooCommerce's missing-parent error are detected with the same validation Shopify and WooCommerce run at import — not a guess.

Parents and variations, matched correctly

Variation rows are matched to their parent by SKU or id:, reordered so parent rows import before their variations, and promoted to Type=variable automatically when they have variations.

One fix when there is one right answer

Blank handles are backfilled from the Title, duplicate option tuples are deduped, and mismatched option names are normalized — an unresolvable parent SKU is flagged instead of guessed.

Code level determinism when you need it. Browser simplicity when you do not.

The same CSV produces the same fixed CSV every time. No AI guessing at your catalog, no account to create, nothing uploaded to a server.

Pricing, plainly

What it costs compared to the usual options.

Published list prices as of October 2026. No sales call required.

CatalogCleanMatrixifyManual re-export
Price$15 one-time Import Pass$20–$200 / monthStaff hours
Fixes an existing CSVYesRebuild in Shopify adminRetype by hand
Missing Handle / Options not uniqueAutomaticManual reviewManual
WooCommerce missing-parent repairAutomaticNoManual
Where the file is processedYour browserShopify app installYour desk
Pro Import Pass coming soonThe free tier above is fully usable right now · no payment collected · join the waitlist by email for the Pro Import Pass
FAQ

Questions we hear most.

Which columns does my CSV need?

For Shopify/Matrixify exports: Handle, Title, Option1-3 Name/Value and Variant SKU at minimum. For WooCommerce exports: Type, SKU, Parent and Attribute N name / Attribute N value(s). CatalogClean auto-detects which format you pasted or uploaded.

Does it work with WooCommerce exports too?

Yes. CatalogClean detects WooCommerce's Type/SKU/Parent/Attribute column layout automatically and runs a separate set of checks for variation-to-parent matching, alongside the Shopify option/handle checks.

What exactly does "Options are not unique" mean?

Shopify rejects the whole import if two rows under the same Handle have the identical combination of Option1/2/3 Values — it cannot tell the two variants apart. CatalogClean finds the duplicate tuple and removes the repeated row, keeping the first one.

Why does WooCommerce say "Missing parent ID or parent does not exist yet"?

A variation row's Parent column has to match another row's SKU (or an id: reference) that appears in the same file, and the parent product's Type must be variable. If the parent is listed after its variations, or is still Type=simple, WooCommerce throws this exact error — CatalogClean reorders the rows and fixes the Type automatically.

Is my product data uploaded anywhere?

No. Parsing and fixing both run in JavaScript inside your browser tab. You can disconnect from Wi-Fi after the page loads and it still works.

Is there a paid Pro tier?

Not yet. The free tier above finds and fixes everything that has one correct answer and exports a clean CSV at no cost. A paid Pro Import Pass ($15 one-time) for larger, multi-file batches is coming soon — use the waitlist link in the top right and we will email you at launch.