← All posts

Shopify Product CSV Template (2026): Free Download + Column Guide

TL;DR

Shopify's product CSV has specific columns for product info, variants, images, and SEO, and getting the format wrong causes import failures. You can download the free sample template below, fill it in by hand, or skip the manual work entirely with Ohavah, which generates a correctly formatted Shopify CSV from your supplier invoices automatically.

Shopify's CSV import is powerful, but the format is particular. One wrong column name or a misplaced value and your import fails, often with unhelpful error messages. This guide breaks down every column so you know exactly what goes where, and gives you a working template to start from.

See how Ohavah works — upload a supplier invoice and watch it become Shopify-ready products

Turn a supplier invoice into this Shopify CSV

Upload your PDF and let Ohavah generate the products, variants, SKUs, prices, and images automatically.

Download a Shopify Product CSV Template

Rather than starting from a blank spreadsheet, grab a template that already has the right headers and a couple of complete example products (including multi-variant rows and image rows) so you can see the structure in context.

Free Shopify product CSV template

A ready-to-edit sample with the exact columns, multi-variant rows, and image columns Shopify expects. Open it in Excel or Google Sheets and replace the example products with your own.

Shopify also ships its own blank sample: in Shopify Admin > Products > Import, click "Download a sample CSV template". That file has the correct headers but no realistic example rows, so the template above is usually the faster starting point.

If your products come from supplier invoices, you don't have to fill any of this in by hand. Ohavah turns a supplier invoice into a ready-to-import CSV with the columns below already populated.

Required vs. Optional Columns

Shopify only strictly requires a few columns to create a product:

  • Handle - always required (the URL slug for the product)
  • Title - required on the first row for each handle

Everything else is technically optional, but in practice you'll want to fill in most columns to create useful product listings.

Column-by-Column Reference

Product-Level Columns

These only need values on the first row for each Handle. Subsequent variant rows leave them blank.

Column Description
Handle URL-friendly identifier (e.g., classic-tee). Lowercase, hyphens instead of spaces. Must be unique per product.
Title Product display name shown to customers.
Body (HTML) Product description. Supports HTML tags for formatting.
Vendor Brand or supplier name. Shows up in Shopify filters.
Product Category Shopify's standardized product taxonomy (e.g., "Apparel & Accessories > Clothing > Shirts"). Used for tax and reporting.
Type Your custom product type (e.g., "T-Shirts"). Used for filtering in admin and collections.
Tags Comma-separated tags (e.g., summer, cotton, new-arrival). Used for automated collections and search.
Published TRUE or FALSE. Whether the product is visible on your storefront.
Status active, draft, or archived. Controls product state.

Variant-Level Columns

These appear on every row, including the first row and each additional variant row. If you sell in multiple sizes and colors, this is where most of your rows come from. For a deeper walkthrough, see how to create product variants in Shopify.

Column Description
Option1 Name Name of the first option (e.g., "Size").
Option1 Value Value for this variant (e.g., "Medium").
Option2 Name Name of the second option (e.g., "Color"). Leave blank if unused.
Option2 Value Value for this variant (e.g., "Blue").
Option3 Name Name of the third option. Leave blank if unused.
Option3 Value Value for this variant.
Variant SKU Stock keeping unit - your internal identifier.
Variant Grams Weight in grams (used for shipping calculations).
Variant Inventory Tracker Usually shopify. Set to blank if you don't track inventory.
Variant Inventory Qty Starting stock quantity. Only used on initial import.
Variant Inventory Policy deny (stop selling at 0) or continue (allow overselling).
Variant Fulfillment Service Usually manual.
Variant Price Selling price (e.g., 29.99). No currency symbol.
Variant Compare At Price Original/strikethrough price for sale items. Leave blank if not on sale.
Variant Requires Shipping TRUE or FALSE.
Variant Taxable TRUE or FALSE.
Variant Barcode UPC, ISBN, or other barcode.

Image Columns

Column Description
Image Src Full URL to the product image (must be publicly accessible).
Image Position Order of the image (1, 2, 3...).
Image Alt Text Alt text for SEO and accessibility.

SEO Columns

Column Description
SEO Title Custom title tag for the product page (max ~70 characters).
SEO Description Custom meta description (max ~320 characters).

Row Structure Rules

This is where most mistakes happen:

  1. First row for a handle: fill in all product-level columns plus the first variant's details
  2. Additional variant rows: same Handle, leave product-level columns blank, fill in variant columns only
  3. Image-only rows: same Handle, only fill in Image Src / Position / Alt Text - used to add extra images without creating variants

Example with two sizes and two images:

Handle,Title,Option1 Name,Option1 Value,Variant Price,Image Src
classic-tee,Classic Tee,Size,Small,29.99,https://example.com/tee-front.jpg
classic-tee,,Size,Medium,29.99,
classic-tee,,,,, https://example.com/tee-back.jpg

Common Errors and Fixes

"Invalid CSV file" on upload - Your file might not be UTF-8 encoded. In Excel, use "Save As > CSV UTF-8". In Google Sheets, download as CSV (it's UTF-8 by default).

Products importing without variants - Check that your Option1 Name and Value columns are filled in. If they're blank, Shopify creates a "Default Title" variant.

Duplicate products instead of updates - When reimporting, check "Overwrite existing products that have the same handle". If unchecked, Shopify creates new products even when the handle already exists.

Prices showing wrong - Don't include currency symbols or thousand separators. Use 29.99, not $29.99 or 1,299.99.

Skip the spreadsheet entirely

Ohavah builds the finished, correctly formatted Shopify CSV from your supplier invoice in minutes.

Related next steps