You exported 400 products, tweaked your spreadsheet for two hours, and hit import. Shopify spits out a wall of red text. You have now met shopify csv import errors up close and personal.

This matters beyond the frustration. Every hour those products are not live is inventory your store is not selling. Here is what is actually going wrong, and how to stop it.

🎯 Quick Summary

  • Most failures trace back to wrong column headers, incorrect file encoding, and broken or duplicate handles
  • Always start from Shopify's own sample CSV, not a blank spreadsheet
  • Save as UTF-8 (Google Sheets handles this automatically on export)
  • Handles must be unique, lowercase, and hyphenated with no special characters
  • For large or messy catalogs, hidden data issues almost always surface at import time

⚠️ The Most Common Shopify CSV Import Errors

Shopify's CSV format is strict. One bad cell can reject the whole file. These three culprits are behind the overwhelming majority of shopify csv import errors.

Wrong column headers. Shopify expects exact names: "Title", "Body (HTML)", "Vendor", "Variant Price". Change the casing, add a space, or use a synonym and the column becomes invisible. Your data goes nowhere.

File encoding. Excel saves files in Windows-1252 encoding by default. Shopify wants UTF-8. Any character outside basic ASCII (accented letters, Arabic text, special punctuation) turns into garbage. Products with "Café" in the title show up as "Café", or the import fails with a cryptic error that points you nowhere useful.

Handle problems. The Handle column is Shopify's internal product ID. It must be unique, all lowercase, and hyphenated. "Red T-Shirt" should be "red-t-shirt". Duplicate handles quietly overwrite existing products instead of creating new ones. Missing handles on variant rows cause multi-option products to fall apart, because every variant row for the same product needs the identical handle value.

When your Shopify CSV import is not working, these smaller issues are also worth checking:

  • Prices formatted as "$29.99" instead of "29.99" (no currency symbols allowed)
  • Dates not in ISO 8601 format (YYYY-MM-DD HH:MM:SS)
  • Extra blank rows or hidden columns left over from Excel filtering
  • Variant rows with no Handle value when a product has multiple options

If you are moving from another platform, your old system's export almost never maps cleanly to Shopify's format. The pre-migration checklist is worth reading before you open the spreadsheet.

🔧 How to Clean the File So It Imports First Try

Ready to fix your Shopify product import? Start here: download Shopify's sample product CSV. Go to Products in your admin, click Import, and grab the sample file. Build your data inside that structure. Do not import Shopify into your structure. That never ends well.

Fix encoding:

  • Skip Excel entirely. Paste your data into Google Sheets and export as CSV. UTF-8 by default, no settings required.
  • If you need Excel, choose "CSV UTF-8 (Comma delimited)" when saving, not the plain "CSV" option.
  • For large files, open the CSV in VS Code or Notepad++ and confirm the encoding shown in the status bar reads UTF-8.

Fix handles. Strip special characters, replace spaces with hyphens, make everything lowercase. In Google Sheets, the formula =LOWER(SUBSTITUTE(A2," ","-")) handles most of it. Go through manually for anything with punctuation or numbers that could create duplicates.

For products with variants, every row that belongs to the same product needs the exact same Handle value. Title, Body, Vendor, and image columns only need to be filled in on the first row for that handle. Variant rows below can leave those cells blank.

💡 Pro tip: Import a test batch of 5 to 10 products first. Catch the format problems before you push 2,000 rows and come back to 400 errors.
ErrorWhat's WrongFix
Unknown column nameHeader casing or spelling does not match Shopify exactlyCopy headers from Shopify's sample CSV
Symbols replacing charactersFile saved in Windows-1252, not UTF-8Re-export from Google Sheets or re-save as UTF-8
Existing products overwrittenDuplicate handle values in your fileAudit handles and make each one unique
Variants not grouping correctlyHandle missing or different on variant rowsCopy the parent product's handle to every variant row
Price column rejectedCurrency symbol in the price cellNumbers only: 29.99, not $29.99

For stores with more than a few hundred products, these edge cases add up fast. The guide on bulk editing large Shopify catalogs covers when a spreadsheet approach starts costing more time than it saves.

CartWorks

🔧 Catalog import giving you grief?

CartWorks can map, clean, and import your product data as part of a store build or migration. Tell us what you are working with and we will take a look.

Get help with your data →

🚀 When It Is Worth Getting Help

For a clean 50-product store, you can fix a CSV import in an afternoon with the steps above. For anything bigger, the edge cases multiply.

Duplicate SKUs buried in legacy data. Images that need re-hosting before they can go into the CSV. Metafields that do not exist in the standard Shopify format. Products with 100 variants where a single handle typo breaks an entire group. The file work quietly turns into a project.

CartWorks handles product data imports as part of store builds and migrations. We map your data to Shopify's format, run a test import with a small batch, and do the full import once the structure is confirmed. We can also set up a repeatable import process if you add products in bulk on a regular basis.

If your catalog is the thing standing between you and a live store, send us a quick message and we will work out what it actually takes.

Frequently Asked Questions ❓

The header does not exactly match what Shopify expects. Headers are case-sensitive and must be copied precisely. Download the sample CSV from the Products import screen in your admin and use its column names as your template.
Go to Products in your Shopify admin, click the Import button, and download the sample product CSV file. Build your spreadsheet inside that structure rather than starting from scratch.
Shopify uses the Handle column to identify products. If your import file contains handles that already exist in your store, Shopify treats those rows as updates to existing products. Audit your handles and ensure every new product has a unique value.
Yes. The Image Src column accepts a publicly accessible URL. Shopify fetches the image from that URL during import. Local file paths do not work, so your images need to be hosted somewhere accessible before you run the import.
A handle is the unique identifier Shopify assigns to each product and it also becomes the URL slug. For example, red-t-shirt maps to /products/red-t-shirt. During a CSV import, it tells Shopify which rows belong to the same product and whether to create a new record or update an existing one.
Shopify can import some rows and silently skip others without stopping the import. Check the summary email for errors. Missing or mismatched Handle values on variant rows are the most common cause. For large imports, the bulk catalog editing guide covers how to verify the results after the fact.
CW

CartWorksWe are a Shopify agency. We design, build, migrate, and grow stores for brands worldwide.

Get a free quote →