Start from Shopify's own file
Shopify has changed its product CSV over time, and column names differ between older and newer templates. The safest starting point is the sample CSV linked in the import dialog (Products, then Import), or an export of a few products from your own store. Both have the exact headers your store expects. Fill in your products underneath and don't change the header row.
Test with a few products first
Import three or four products, including one with variants, before the full catalog. Mistakes in a small file are quick to spot and quick to delete.
Common errors and their fixes
Quoting or formatting errors on a line number
Cause: A value contains a double quote, comma or line break that isn't wrapped correctly. Product descriptions with HTML or inches (12" frame) are the usual culprits, often after editing the file in a text editor.
Fix: Edit the file in a spreadsheet rather than a text editor, and save it as CSV again: the spreadsheet adds the quoting for you. See commas and quotes in CSV.
Garbled characters (é becomes é)
Cause: Shopify reads CSV files as UTF-8. A file saved in another encoding, such as Excel's plain CSV on Windows, turns accented letters, curly quotes and symbols into junk.
Fix: In Excel, use Save As and choose CSV UTF-8. In Google Sheets the download is already UTF-8. More in the special characters guide.
Columns ignored or missing
Cause: Shopify matches columns by their header. A renamed, misspelled or translated header is ignored, so that data never arrives.
Fix: Start from the sample CSV in Shopify's import dialog (or an export from your own store) and keep its header row exactly as it is. Delete columns you don't use rather than renaming them.
Variants import as separate products
Cause: Every row of the same product must have the same handle. A typo, an extra space or different capitals in the handle starts a new product.
Fix: Copy the handle down from the first row of each product, and keep a product's variant rows directly below it. Title and description only need filling on the first row.
Duplicate or conflicting variant options
Cause: Two variants of one product have the same option values (two rows of Size: M, Color: Blue), or a product uses more than the three options Shopify allows.
Fix: Make each variant's combination of option values unique, and keep option names the same on every row of the product.
Invalid price
Cause: Prices with currency symbols, thousands separators or a decimal comma, such as $1,299.00 or 12,50.
Fix: Use plain numbers with a decimal point: 1299.00. See stripping currency symbols.
Images don't appear
Cause: The image column holds a file path from your computer, or a share link from Google Drive or Dropbox that opens a web page instead of the image.
Fix: Use direct, public https:// links that end in the image itself, or upload images in Shopify afterwards. The URL validation guide explains what makes a link importable.
Barcodes and SKUs changed
Cause: Excel turns a 12- or 13-digit barcode into 1.23457E+11 and drops leading zeros from codes like 00412. Saving the CSV keeps the damaged value.
Fix: Format those columns as Text before pasting, or import the CSV into Excel with the columns set to Text. See the leading zeros guide.
TRUE/FALSE and unit values rejected
Cause: Yes/no columns (published, taxable, requires shipping) expect TRUE or FALSE, and weight units expect g, kg, lb or oz. Values like Yes, 1 or Kilograms don't match.
Fix: Use exactly the values in Shopify's sample file. A spreadsheet dropdown on those columns stops new mistakes.
File too large
Cause: Shopify limits the size of a product CSV, and very large catalogs with long descriptions reach it.
Fix: Split the file into several CSVs, keeping every row of a product in the same file, and import them one after another.
How variant rows work
Most confusing Shopify imports come down to variants. A product with variants takes one row per variant. The first row carries the product details; the rows after it repeat the handle and fill in only what differs: option values, SKU, price, barcode and stock.
One t-shirt in three sizes (simplified):
Handle,Title,Option1 Name,Option1 Value,Variant SKU,Variant Price classic-tee,Classic Tee,Size,S,TEE-S,25.00 classic-tee,,,M,TEE-M,25.00 classic-tee,,,L,TEE-L,27.00
Header names here follow Shopify's long-standing product CSV; use the ones in your own sample file. The rules are the same: one handle per product, the option name on the first row, and a different set of option values on each row.
Checklist before you import
Getting product data from suppliers?
Send them a form instead of a spreadsheet. The Shopify Products template checks prices, image links, yes/no and unit columns as they're entered, keeps barcodes exactly as typed, and downloads a CSV with Shopify's headers.
Try the Shopify templateRelevant Templates
Import Builder is an independent product and is not affiliated with, endorsed by, or sponsored by Shopify Inc. Shopify is a trademark of Shopify Inc.