Shopify CSV Template
Free download, with every column explained.
The fastest way to break a Shopify import is to use the wrong template. Wrong columns get ignored. Required columns missing cause the whole import to fail. Columns you didn’t mean to include overwrite live data.
This is a working template, with every Shopify product CSV column documented and an example row you can adapt. It’s the same structure Shopify uses in its own exports — so your file will be accepted on the first try.
What’s in the template
The file includes all 50+ columns Shopify recognizes, with one example row so you can see what valid data looks like. Delete the example row before adding your own data.
The columns fall into six groups:
1. Product identity
Handle, Title, Body (HTML),
Vendor, Type, Tags,
Published, Status, Product Category,
SEO Title, SEO Description.
These describe the product itself. Only the first row of each product needs values here — variant rows leave most of these blank.
2. Variant options
Option1 Name, Option1 Value,
Option2 Name, Option2 Value,
Option3 Name, Option3 Value.
Shopify supports up to three option dimensions per product (Size, Color, Material, etc.). Each variant row fills in the combination that makes it unique.
3. Variant pricing & identity
Variant SKU, Variant Price,
Variant Compare At Price, Variant Barcode,
Cost per item.
Every variant row should have its own SKU and price, even if they’re the same as other variants.
4. Inventory
Variant Inventory Tracker, Variant Inventory Qty,
Variant Inventory Policy, Variant Fulfillment Service,
Variant Weight Unit, Variant Grams.
Set Variant Inventory Tracker to shopify if
you want Shopify to track inventory. Leave it blank if you don’t.
5. Shipping & tax
Variant Requires Shipping, Variant Taxable,
Variant Tax Code, Gift Card.
Usually set to TRUE for physical products. Digital products
typically set Variant Requires Shipping to FALSE.
6. Images
Image Src, Image Position,
Image Alt Text, Variant Image.
Multiple images require additional rows. Each image row has the same
Handle and Title left blank. Only Image Src and
Image Position are filled.
The columns you actually need
Shopify accepts over 50 columns, but most merchants only use a handful. Here’s what matters for different use cases:
Absolute minimum (new product import)
Handle— the URL slugTitle— the product nameVariant Price— the price
With just these three columns, Shopify will create a product. It won’t have images, descriptions, or variant options, but it will exist.
Recommended minimum
- Everything above
Body (HTML)— the descriptionVendor— the brandType— the product typeTags— comma-separated keywordsPublished— TRUE or FALSEVariant SKU— for inventory trackingImage Src— the product image URLStatus— active, draft, or archived
Required if you’re updating existing products
Handle— this is the only way Shopify matches rows to existing products- Every other column becomes optional — include only the columns you want to update
If you include a column in an update import, blank cells in that column are treated as intentional clears. See our blank overwrites guide for the full explanation.
How to fill in the template
Step 1 — Prepare your product data
Gather everything in one place first: titles, prices, SKUs, image URLs, descriptions, tags, and any variant options. Trying to enter data directly into the CSV while looking at other sources is a recipe for blank cells and typos.
Step 2 — Fill in the first row for each product
The first row of each product includes all the product-level fields: Handle, Title, Body (HTML), Vendor, Type, Tags, Published, Status, and any product-level attributes.
Every subsequent row of the same product should have the same Handle but leave Title, Body, Vendor, Type, and Tags blank. Only the variant-specific fields get values.
Step 3 — Add variant rows below each parent
Below each parent row, add one row per variant. Every variant row must have:
- The same
Handleas the parent - The same
Option1 Name(e.g., “Size”) - A unique
Option1 Value(e.g., “Small”) - Its own
Variant SKUandVariant Price
Step 4 — Add image rows
For each additional image beyond the first, add a new row with:
- The same
Handle - Only
Image SrcandImage Positionfilled - All other cells blank
Step 5 — Validate before importing
Before you upload, run the file through a validator. Manual review always misses something — a stray space in a SKU, a duplicate handle, an image URL that isn’t HTTPS.
Validate your filled-in template
Autonom Shopify Guard checks your CSV for 30+ import errors before you upload it. Free, browser-based, no account needed.
Open Shopify CSV Validator →Common mistakes with the template
Adding extra columns of your own
Shopify ignores columns it doesn’t recognize. If you add a “Notes”
column, it will be silently dropped. If you need to store extra data,
use Tags or metafields.
Renaming column headers
Shopify matches column headers exactly. “Product Title” is not the same as “Title”. “Price” is not the same as “Variant Price”. Renaming a column makes Shopify treat it as an unknown column and ignore it.
Reordering columns
Shopify doesn’t care about column order — but Excel formulas and Google Sheets references do. If your template has specific column positions, keep them. Otherwise you’ll break your own calculations.
Forgetting to remove the sample row
If you leave the example row from the template in your file, Shopify will create a product called “Example Product.” Delete it before importing.
Saving as .xlsx instead of .csv
Shopify only accepts CSV. If you edit the file in Excel and save it
as .xlsx, Shopify won’t read it. Always “Save As” →
“CSV UTF-8 (Comma delimited)”.
Editing in Google Sheets and downloading as Excel
Google Sheets exports CSV correctly. Excel sometimes re-encodes on export. If you edit in Google Sheets, use File → Download → CSV. Don’t download as .xlsx and re-save as CSV.
Related guides
Frequently asked questions
Where can I download a Shopify CSV template?
You can download ours above, or export a template from your own Shopify store (Products → Export → All products → Plain CSV). The Shopify export is the most accurate source because it includes every column your specific store uses.
What columns are required in a Shopify product CSV?
For a new product, only Handle and Title are strictly required, but you’ll also want Variant Price for the product to be sellable. For updating existing products, only Handle is required.
Can I delete columns I don’t need?
Yes. Shopify ignores columns that aren’t in its schema, and it only processes columns you’ve included. The only caution: for update imports, don’t leave a column in the file if most of its cells are blank — you’ll trigger blank overwrites.
Does column order matter?
No. Shopify matches column names, not positions. You can reorder columns freely.
Can I add custom columns?
You can add them, but Shopify will ignore them unless they’re metafield columns. To store custom data, use metafields (columns starting with Metafield:) or the Tags column.
What file format does Shopify accept?
Shopify only accepts CSV files (.csv extension) with UTF-8 encoding and comma delimiters. Files that are .xlsx, .xls, or .numbers will be rejected.
Can I use this template for Shopify Plus?
Yes. The template works for both standard Shopify and Shopify Plus. Plus stores support more variants per product (up to 2,000 vs 100), but the column structure is identical.
What’s the difference between this template and Shopify’s default export?
Our template includes the same columns but with one example row and clearer column descriptions. Shopify’s export contains your actual store data with no examples — which is what you want for updates, but not helpful as a blank starting point.
