A Shopify CSV is both the best and the worst way to manage a catalog. Best: it is the native, official format that lets you edit 10,000 products in one pass. Worst: a badly structured CSV can duplicate, overwrite, or delete your catalog in 3 minutes with no confirmation prompt.
Here is the exact structure, the 6 columns you should never edit in bulk, and the rollback process to recover quickly if something goes wrong.
Open the CSV in a text editor (VS Code, Notepad++). Make sure accented characters and special characters display correctly. If you see broken characters instead of normal text, the CSV is in latin1 or windows-1252. Convert it back to UTF-8.
Excel saves in latin1 by default — avoid Excel for editing a CSV meant for Shopify. Use LibreOffice Calc, Google Sheets, or VS Code.
Check 2 — Comma separator
A Shopify CSV uses a comma as the separator. In French locales, Excel uses a semicolon by default. If all your data appears in one column when you open it, the separator is wrong.
Check 3 — Escaping commas inside fields
If a description contains a comma, which is very common, the field must be wrapped in quotes:
Handle,Title,Body (HTML)
derby-cuir,"Leather Derby Shoe","Elegant, comfortable, made in France"
Without quotes, the comma in "Elegant, comfortable" would be interpreted as a new field and shift everything out of place.
Check 4 — Duplicate rows
A handle that appears twice in the CSV means Shopify will treat the second row as a variant, not as a new product. That can create surprises.
In Google Sheets or Excel, use Data → Remove duplicates to clean it up.
Check 5 — Special characters in image URLs
Image Src must be a public URL, accessible without auth. Test 3-5 random URLs with curl -I https://cdn.example.com/image.jpg — you need a 200 response. If your URLs contain spaces or special characters, URL-encode them (%20 for a space).
Row 1: full product with Title and Option1 Name
Rows 2-3: ONLY the Handle and variant values (Option1 Value, SKU, Price, etc.). Do not repeat Title, Body, Vendor, etc. — otherwise Shopify treats them as modifications and may duplicate data.
This is the native Shopify CSV syntax. It feels odd at first, but it is strict.
Right before the import, export your full catalog (Products → Export → CSV file for Excel, Numbers, or other spreadsheet programs). Store that export with the date in the filename (catalog-2026-04-23-before-import.csv).
Yes. Export everything, keep only the Handle + Variant SKU columns + the columns you want to change, and delete the other columns from the CSV. Shopify will match by SKU and only update the columns present.
Technically unlimited, but in practice Shopify recommends fewer than 50,000 rows per file. Above that, split it into multiple files with a unique Handle per product.
If your CSV contains an Image Src column with a different URL from the existing one, yes — Shopify downloads the new image and replaces it. If you do not want to change images, remove the Image Src and Image Alt Text columns from the CSV.
Use Published = FALSE/Status = draft and publish in batches once validated. The live catalog is not affected during the import. No customer-visible downtime.
No, not through the product CSV. Reviews are managed through Shopify Product Reviews (dedicated export/import in the app) or through your reviews provider (Yotpo, Judge.me).
For managing your Shopify imports with preview, rollback, and AI quality review, see Ecomptimize for Shopify.
WooCommerce includes a native CSV importer you can use without installing WP All Import. Here’s how, with the exact CSV structure and category mapping.