Sheet2Store
Create account

FREE TEMPLATE

Shopify product CSV template: free download and column guide

A ready-to-fill product CSV that uses Shopify’s current column names, with one simple product and one product with color and size variants. Every product is set to draft so a test import can’t go live by accident.

Download the Shopify CSV template

What’s in the template

The file uses the column names Shopify introduced in its updated product CSV format, such as URL handle, Price, Barcodes and Product image URL. It contains two example products you can overwrite:

  • Stoneware Mug: a simple product with a single variant. Shopify stores single-variant products with Option1 name set to Title and Option1 value set to Default Title.
  • Linen Cushion Cover: one product with two options (Color and Size) and four variants, one row per variant.

Both products use Status = draft and Published on online store = false. Image columns are left empty because Shopify downloads every image URL during the import, and a placeholder URL would fail. Add your own public image links before you import.

Which columns are required

For a brand-new product, Shopify only requires Title. As soon as a product has more than one row (variants or extra images), every row also needs the same URL handle, because the handle is how Shopify groups rows into one product. In practice you will also want a Price on every variant row: an empty price fails with “Validation failed: price can’t be blank”.

You can delete columns you don’t use. Shopify fills in its defaults for columns that are missing, but a column that is present and empty counts as a value when you overwrite existing products, so remove columns rather than leaving them blank if you are updating a live catalog.

Column-by-column reference

ColumnWhat to enterExample
TitleProduct name. Only on the first row of each product.Linen Cushion Cover
URL handleUnique ID used in the product URL. Lowercase letters, numbers and hyphens. Repeat it on every row of the same product.linen-cushion-cover
DescriptionProduct description. HTML is allowed. First row only.<p>Linen blend…</p>
VendorBrand or supplier name. First row only.Example Supplier
Product categoryA category from Shopify’s Standard Product Taxonomy (full path or ID). Leave empty if unsure: an unknown value fails the row.
TypeYour own product type for organizing products.Cushion covers
TagsComma-separated tags.home, linen
Published on online storetrue or false.false
Statusactive, draft or archived. If the column is missing, products import as active.draft
SKUYour stock keeping unit for the variant.CUS-001-IV-45
BarcodesBarcode (EAN, UPC, GTIN…). The current format accepts up to 20 barcodes per variant; older files use a single Barcode column.0123456789012
Option1 name / Option1 valueFirst option, such as Color. The name goes on the first row only; every variant row needs a value.Color / Ivory
Option2 name / Option2 valueSecond option, such as Size. Up to three options per product.Size / 45 × 45 cm
PriceSelling price without a currency symbol, using a decimal point.32.00
Compare-at priceOriginal price when the product is on sale.
Cost per itemWhat you paid, for margin reports. Not shown to customers.12.50
Charge taxtrue or false.true
Inventory trackershopify to track stock, or empty for no tracking.shopify
Inventory quantityA whole number. Required when inventory is tracked.0
Continue selling when out of stockdeny or continue.deny
Weight value (grams)Weight in grams, whole number.300
Weight unit for displayg, kg, lb or oz.g
Requires shippingtrue or false.true
Fulfillment servicemanual unless you use a fulfillment app.manual
Product image URLA public, direct image link. Shopify downloads it during import.https://…/cushion.jpg
Image positionOrder of the image: 1, 2, 3…1
Image alt textShort description of the image.Ivory linen cushion
Variant image URLImage shown when this variant is selected.
SEO title / SEO descriptionSearch listing title (up to 70 characters) and description (up to 320).

How variant rows work

Each sellable combination gets its own row. The first row carries the product-level fields (title, description, vendor, tags and the option names). Following rows repeat only the URL handle and fill in the variant fields: option values, SKU, price and inventory.

Title,URL handle,Option1 name,Option1 value,Option2 name,Option2 value,SKU,Price
Linen Cushion Cover,linen-cushion-cover,Color,Ivory,Size,45 × 45 cm,CUS-001-IV-45,32.00
,linen-cushion-cover,,Ivory,,50 × 50 cm,CUS-001-IV-50,36.00
,linen-cushion-cover,,Clay,,45 × 45 cm,CUS-001-CL-45,32.00
,linen-cushion-cover,,Clay,,50 × 50 cm,CUS-001-CL-50,36.00

Two rows with the same handle and the same option values are a duplicate variant and fail with “Validation failed: options are not unique”. Shopify allows up to 2,048 variants and three options per product. Read the full variants guide.

Mistakes that break imports

  • Saving from Excel in the wrong format. Use “CSV UTF-8 (Comma delimited)”. Other CSV types can turn accented letters into symbols like é.
  • Curly quotes or inch marks. A value such as 12" frame must be quoted correctly, or Shopify reports “Illegal quoting on line” or “Missing or stray quote on line”.
  • Line breaks inside a cell that isn’t wrapped in quotes, which triggers “Unquoted fields do not allow \r or \n”.
  • A title on a variant row with a new handle, or a missing title on the first row of a product.
  • Leading zeros removed. Excel turns 0123456789012 into 123456789012. Format SKU and barcode columns as text before pasting.
  • Currency symbols in prices. Enter 32.00, not $32 or 32,00.

Check a finished file with the free Shopify CSV checker before importing, and see the list of Shopify import errors if an import fails.

How to import the file

  1. In Shopify admin, go to Products and click Import.
  2. Click Add file, choose your CSV (15 MB maximum) and click Upload and continue.
  3. Leave Overwrite products with matching handles unchecked for a new catalog.
  4. Review the preview, then click Import products. Shopify emails you when the import finishes.
  5. Open a few imported drafts and check prices, variants and images before you set them to active.

Imports can’t be canceled once they start, so try a small file with two or three products first.

Starting from a supplier price list?

Filling this template by hand is fine for a handful of products. If your products are in a supplier’s PDF or Excel price list, Sheet2Store reads the file, lets you map its columns, applies your markup and writes this format for you, with the variant rows already grouped. You can preview the first five rows free.

Frequently asked questions

Does Shopify still accept the old column names like Handle and Variant Price?

Yes. Shopify keeps backward compatibility with older CSV templates, and the next export you make uses the new names. Don’t mix old and new names for the same field in one file.

Do I need every column in the template?

No. Only Title is required for a new product, plus URL handle when a product has several rows. Delete columns you don’t use rather than leaving them empty if you are overwriting existing products.

What is the maximum file size?

A product CSV can’t exceed 15 MB. Split larger catalogs into several files that each contain complete products, so no product’s rows are split across two files.

Why are the image columns empty?

Shopify downloads every image URL during the import and reports an error for links it can’t fetch. Add your own public image URLs, or add photos in the admin after importing.

Skip the manual copy-paste

If your products are still in a supplier PDF or spreadsheet, Sheet2Store maps the columns, applies your markup and writes the import file for you. Preview five rows free.

Convert a supplier file See pricing