Guide · Shopify CSV Template

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.

Download the template (CSV) →

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 slug
  • Title — the product name
  • Variant 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 description
  • Vendor — the brand
  • Type — the product type
  • Tags — comma-separated keywords
  • Published — TRUE or FALSE
  • Variant SKU — for inventory tracking
  • Image Src — the product image URL
  • Status — 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
⚠
The update trap.

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 Handle as the parent
  • The same Option1 Name (e.g., “Size”)
  • A unique Option1 Value (e.g., “Small”)
  • Its own Variant SKU and Variant Price

Step 4 — Add image rows

For each additional image beyond the first, add a new row with:

  • The same Handle
  • Only Image Src and Image Position filled
  • 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.

Scroll to Top