Shopify's product CSV format is the same whether you export it from Shopify or prepare it by hand for import. Once you understand a few core rules — handles, options, variants and images — the whole spreadsheet makes sense. This guide explains the format column by column, with the most common mistakes to avoid.
The file has one row per variant. A product with three sizes produces three rows, and a product with no variants produces exactly one row. The Handle column is what ties rows together: all rows with the same Handle belong to the same product.
Product-level fields — Title, Body (HTML), Vendor, Tags and so on — only need to be filled on the first row of each product, exactly like a file Shopify itself exports.
| Column | What it does |
|---|---|
| Handle | Unique URL slug. Groups all variants of one product together. |
| Title | Product name. Only on the first row of each product. |
| Body (HTML) | Product description. HTML tags are allowed. |
| Vendor | Brand or manufacturer name. |
| Type | Your custom product type. |
| Tags | Comma-separated tags used for filtering and collections. |
| Option1/2/3 Name + Value | Variant options like Size or Color, and their values. |
| Variant SKU | Stock keeping unit for the variant. |
| Variant Price | Price as a plain number, e.g. 24.99. |
| Variant Compare At Price | Original price — shows a sale when higher than the price. |
| Image Src | Image URL. Position 1 is the main product image. |
| Status | active, draft or archived. |
A product can have up to three options (for example Size, Color and Material). Each combination of option values is one variant row. A product with no variants still needs Option1 Name set to Title and Option1 Value set to Default Title — this is what Shopify uses internally for single-variant products.
The first image of a product goes on the product's first row with Image Position 1. Additional images go on their own rows below the variants, each with an increasing position number. A variant can also link to a specific image through the Variant Image column — useful when the image should change with the selected option (for example a red shirt photo for the red size).
Our free Shopify Products Importer generates a flawless CSV in this exact format from any store link — no manual spreadsheet editing needed. For the full import walkthrough, read how to import products into Shopify.
The easiest way is to export one product from your own store (Products → Export) and use that file as your template — the headers are guaranteed to be correct. Alternatively, our free tool can generate a perfectly formatted CSV from any store link in seconds.
A plain UTF-8 CSV file where the first row lists Shopify's exact column names (Handle, Title, Body (HTML), Vendor and so on), followed by one row per product variant. A byte-order mark (BOM) at the start helps Excel and Shopify read the file correctly.
The most common causes are renamed header columns, missing Handle values, duplicate handles, or prices containing currency symbols. See the common mistakes section above for the full list and how to fix each one.
Generate a Shopify-ready CSV from any store link — free, no sign-up.
Open the free tool