When a Shopify product CSV import fails, the real cause is often not the row Shopify highlights. A single invisible header space, regional price format, private image URL, or oversized file can make a clean-looking spreadsheet fail at upload time.
Here is the checklist I use before importing a product CSV.
1. Start with the header row
Shopify maps product data by exact column names. Before editing product rows, check the first row:
- no blank header cells
- no leading or trailing spaces
- no duplicate columns after cleanup
- canonical names such as
Handle,Title,Variant Price,Variant Inventory Qty,Image Src, andVariant Requires Shipping
If you rebuilt the file from a supplier sheet, do not assume labels like Product Name, Image URL, or Product Price will import as expected. Map them deliberately.
2. Keep product handles boring
The Handle is the URL-friendly product identity. Use lowercase letters, numbers, and hyphens. Avoid spaces, uppercase-only changes, punctuation, and accidental duplicate handles.
Duplicate handles are not always wrong. Variant rows for the same product normally share a handle. The risky case is two unrelated products sharing the same handle because a spreadsheet formula or copy-paste step flattened them into the same slug.
3. Treat variant rows as groups
For products with variants, keep every row for the same handle together while editing or splitting files. Check that option columns line up:
-
Option1 Nameshould not be filled whileOption1 Valueis blank - variant rows should not be separated from their parent product rows
- SKU alone is not enough to define the product/variant relationship
If you split a large file, split by product handle groups rather than raw row count.
4. Normalize prices before upload
Shopify CSV prices should be plain decimal numbers. Watch for values like:
$19.99USD 19.991,299.0019,99
The first three can often be cleaned safely. Comma decimal prices need manual review because the comma may mean a decimal separator in one locale and a thousands separator in another.
5. Check image URLs before blaming Shopify
Image Src needs a public http or https URL that Shopify can fetch. Local paths, private Google Drive links, Dropbox preview links, and supplier URLs that require a login are common failure points.
Also confirm that image-only rows still carry the correct Handle, otherwise images can attach to the wrong product or disappear during the import.
6. Stay under the 15 MB product CSV limit
Large product CSVs are harder to debug because one failure can hide many smaller issues. If the file is near or over the limit, validate and split it into smaller batches. Again, keep variants and image rows for one handle in the same batch.
7. Test one small import first
Before importing hundreds or thousands of rows:
- export your current products as a backup
- import one product or one handle group
- confirm the product page, variant options, price, inventory, images, and publish status
- then move to a larger batch
For a browser-side scan before upload, I use this free Shopify CSV import fixer to catch headers, handles, prices, booleans, image URL format, UTF-8 issues, and 15 MB size risk: https://shopify-csv.aivismonitor.com/shopify-csv-import-fixer
The important habit is to separate structural CSV problems from Shopify admin behavior. Fix the file structure first, then test a small import so you know exactly what changed.
Top comments (0)