Structure mistakes we see most
These are the patterns that quietly explode one product into many:
Common Scenarios:
- Handle with trailing spaces or different casing between rows (T-Shirt vs t-shirt).
- Variant rows that omit the Handle entirely, relying on Title matching that never happens.
- Option columns filled inconsistently - some rows use Option1, others skip to Option2.
- Blank Handle on every row when the file should have a generated handle from Title.
Check the structure before Shopify splits it
ShopTools' validator groups rows by Handle, reports rows that break the group, and repairs common structure damage like casing and trailing spaces.
Features:
- Handle consistency check: Flags casing, spacing and missing-handle rows
- Option alignment: Detects rows using different Option columns for the same attribute
- Auto-normalize: Repairs trailing spaces and case inconsistencies
Rules that keep variants grouped
- Copy the exact Handle (same case, no trailing spaces) to every variant row.
- Keep Title identical across all rows of the product.
- Use the same Option column for the same attribute on every row.
- Leave parent rows' price/SKU empty or fill all variants consistently - never mix.
Before and after
- Before: Row1 Handle: t-shirt, Row2 Handle: T-Shirt (case differs) After: Both rows: t-shirt (identical, variants stay grouped)
- Before: Row1: Option1 Value L, Row2: Option2 Value M (different columns) After: Both rows use Option1 Value: L / M
Who hits this
- Stores importing large catalogs: Big files are where structure errors hide
- Migration from other platforms: Flat exports become messy variant groups
Frequently Asked Questions (FAQ)
- How does Shopify know a row is a variant?
- It reads rows with the same Handle as one product. Rows with the same Handle and different Option values become variants.
- Can I have variants without a Handle?
- No - the Handle is what links variant rows to their product. Without it, each row imports separately.
- Is the Handle case-sensitive?
- Shopify normalizes handles, but the CSV importer treats differing handles as different products - so keep them identical in the file.
- What happens if Option columns are inconsistent?
- Shopify may treat them as different option types and split the product, or reject the import.