Shopify Product CSV Template: Every Column, and How to Fill It
October 1, 2026
The Shopify product CSV template is the sample file Shopify offers on its help page for importing products. It is a spreadsheet with one header row and one row per product, variant or extra image. To use it, download the sample, delete the two example products, keep the header row exactly as it is, and add your own rows. For new products the only column Shopify requires is Title. Everything else either has a default or can stay blank, and a few of those blanks are where imports go wrong. This guide walks through every column you are likely to fill, the rules Shopify applies to each, and the mistakes that cost sellers an afternoon.
All Shopify behaviour quoted here comes from Shopify’s own help centre, as of October 2026. Shopify renames admin buttons and columns from time to time, so check the help page if something has moved.
Where to get the Shopify product CSV template
There are two ways to get a template, and the second is usually better:
- Download the sample file. Shopify’s page Using CSV files to import and export products links to a sample product CSV. Shopify notes that it “contains two example products, and include some variants”, and asks you to remove all the example products before importing your own.
- Export from your own store. In your Shopify admin, go to Products and click Export. The file you get has the exact column set your store uses, including your markets and any product metafields you have defined. If you already have even one product, this is the safest template, because every header is already spelled the way your store expects.
Open either file in Google Sheets, Numbers or Excel. If you use Excel, Shopify reminds you to check the export settings so the saved file still uses commas between values. When you are done, save it as UTF-8 with LF-style line endings, which is the format Shopify asks for.
The required columns, and the ones that depend on each other
Shopify keeps the required list short:
- Creating new products: only Title is required. If you are adding variants, URL handle is required too.
- Updating existing products: URL handle and Title are required.
The catch is that some columns only make sense together. Shopify’s own example: if you update a variant column such as SKU or Weight value (grams), you must also include Option1 name and Option1 value. Leave the option columns out and Shopify creates a new default variant and deletes the existing ones. That single rule is behind most “my variants disappeared” stories.
Likewise, the four packed product columns (length, width, height and their unit) are all or nothing. Fill all four or leave all four blank; a file with only some of them filled fails to import that product.
Every column in the Shopify product CSV template
This is the current column set from Shopify’s help page, in the order you are most likely to care about. Defaults are what Shopify uses when the cell is blank.
| Column | What goes in it | If left blank |
|---|---|---|
| Title | Product name customers see | Required |
| URL handle | Lowercase words joined by hyphens, no spaces | Built from the title |
| Description | The product description, HTML allowed | Empty description |
| Vendor | Brand, or your store name if you make it | Empty |
| Product category | A category from Shopify’s Standard Product Taxonomy, as a breadcrumb or ID | No category |
| Type | Your own free-form label | Empty |
| Tags | Comma-separated keywords, up to 250 | No tags |
| Published on online store | true or false |
true |
| Status | active, draft or archived |
active if the column is absent |
| Option1 name / value | For example Size and Small |
Default variant |
| SKU | Your stock code | Empty |
| Price | Number only, such as 9.99 |
0.00 |
| Compare-at price | The original price, if on sale | Empty |
| Charge tax | true or false |
true |
| Inventory quantity | Stock on hand, single-location stores only | 0 |
| Continue selling when out of stock | deny or continue |
deny |
| Weight value (grams) | Whole grams, no unit | 0 |
| Requires shipping | true for physical goods |
true |
| Fulfillment service | manual unless you use a service |
manual |
| Product image URL | A public image link | No image |
| Image alt text | Short description of the image | Empty |
| SEO title | Up to 70 characters | Product title |
| SEO description | Up to 320 characters | Product description |
There are more columns for markets, barcodes, gift cards, Google Shopping and metafields. If you do not use those features, you can leave them out of a new-product file.
The columns worth slowing down for
- Price defaults to 0.00. A blank price does not stop the import. It publishes a free product. Fill every price before you upload, or set the products to draft.
- Status and Published together decide visibility. If you want to check everything before customers see it, add a Status column set to
draft. If the Status column is present, Shopify says every row needs a value in it. - Weight is in grams, as a whole number. Shopify’s own example: 5.125 kilograms is entered as
5125, and 4 pounds as1814. Use Weight unit for display if you want shoppers to see pounds or ounces. - Tags use letters, numbers and hyphens. Shopify advises avoiding accented characters and symbols, and separating tags in one cell with commas.
- The handle becomes the product URL. Choose it once, and keep it identical when you re-import to update a product.
Variants and extra images: one product, several rows
A product with no variants takes one row. A product with variants or several images takes several rows that share the same URL handle. Shopify describes the layout like this:
- On the first row, fill in every product field plus the first image URL.
- On each following row, enter the same URL handle, skip Title, Description, Vendor and Tags, and fill in that variant’s options, price, SKU and its image.
- For an extra image with no variant of its own, enter just the handle and the image URL.
A product can have up to three options, such as Size, Color and Material. For a product with no real options, Shopify’s column notes use Default Title for the option.
Changing an Option value on an existing product deletes its variant IDs and creates new ones. Shopify warns that this can break apps that track variants by ID, such as reviews, inventory sync or a marketplace connector. If you only need to change a price or SKU, leave the option values exactly as they are.
Images: the CSV holds links, not files
A CSV is plain text, so it cannot carry an image. Each image cell holds a public URL, and Shopify downloads the file during the import. If your photos only live on your computer, upload them first to Content, then Files in your Shopify admin (or another image host) and copy each link. Two Shopify notes worth knowing:
If the product CSV file was produced by exporting your products from Shopify, then you don’t need to do anything because your images are already on your website.
And if you link to an image already in Files, Shopify downloads it again and keeps a second copy under products, which is expected behaviour.
Adding products to a collection from the CSV
The template has no collection column, and Shopify says you cannot add arbitrary columns. The one exception is a column headed Collection, which you can add anywhere in the file. Put a collection name in it and the product joins that collection, or the collection is created if it does not exist. Each product can join one collection this way, and the column is never included when you export.
Older column names you may still see
Plenty of CSV files in the wild, including ones made by apps and other platforms, use Shopify’s older headers. Shopify says it “maintains backward compatibility with older column names”, so these still import. If you see them, this is how they line up:
| Older header | Current header |
|---|---|
| Handle | URL handle |
| Body (HTML) | Description |
| Published | Published on online store |
| Variant SKU | SKU |
| Variant Grams | Weight value (grams) |
| Variant Price | Price |
| Variant Compare At Price | Compare-at price |
| Variant Inventory Qty | Inventory quantity |
| Variant Inventory Policy | Continue selling when out of stock |
| Variant Taxable | Charge tax |
| Image Src | Product image URL |
Do not mix an old and a new name for the same field in one file. Shopify gives one example outright: a file with both a Barcode and a Barcodes column fails to import.
How to import the finished template
- From your Shopify admin, go to Products and click Import.
- Click Add file and choose your CSV.
- Untick Publish new products to all sales channels if you only want them on your online store.
- Tick Overwrite products with matching handles only if you are updating existing products on purpose.
- Click Upload and continue, review the summary, then click Import products.
Shopify sends a confirmation email once the file is uploaded. A product CSV cannot exceed 15 MB, so split a large catalogue into several files.
Be careful with the overwrite option. With it ticked, Shopify says a blank cell in a non-required column overwrites the stored value with a blank. A column you leave out entirely is left alone. So when you update, delete the columns you are not changing rather than leaving them empty. Our guide to the Shopify bulk editor covers that round trip in more detail, including when the in-admin editor is the quicker tool.
Filling the text columns for many products
The template handles structure. It does nothing for the slowest part of a large import: writing a title, a description, tags and SEO fields for every row. Copying a supplier’s text into the Description column is fast, but every other shop selling that product has the same text.
ListingBrief AI is one way to fill those columns. You paste rough notes for each product, one per line in bulk mode, and it writes the title, description, tags, SEO title, SEO description, product type and suggested options. Each finished batch downloads as a CSV laid out in Shopify’s product columns, with the handle built from the title and the description wrapped as HTML. A few honest limits:
- It uses the older header names (Handle, Body (HTML), Variant Price and so on), which Shopify still accepts as described above.
- Price, SKU, weight and image cells are left empty for you. Fill every price before importing, since a blank price becomes
0.00. - Every product imports as a draft. The file sets Status to
draft, so nothing goes live, even with a blank price, until you review it in your admin and set it to active. - Each product gets one row. If a product has several variants, add the extra variant rows yourself under the same handle.
You can try the description step on its own with the free Shopify description generator, no signup needed. An account gets 5 free generations a day, and pricing covers larger catalogues. For help with the SEO fields specifically, see these Shopify meta description examples.
When the manual way is enough
A CSV is worth the setup when you have dozens of products or are moving a catalogue from another platform. It is more work than it saves when:
- You are adding a handful of products. The product form in your admin shows every field with its rules, and our walkthrough of how to add a product on Shopify covers each one.
- You are changing one field across many products. The bulk editor is quicker for prices, tags or vendors.
- Your products already live on Etsy. A sync app may move them for you. Read how to connect Shopify to Etsy before building a file by hand.
A short checklist before you click Import
- The header row is untouched, and the example products from the sample are gone.
- Every product has a Title, and every variant row repeats its URL handle.
- Every price is filled in, with no currency symbol.
- Weights are whole grams.
- Image URLs open in a private browser window.
- A Status column set to
draftis in place if you want to review first. - You exported a backup of your products before using the overwrite option.
- The file is saved as UTF-8 and is under 15 MB.
Get those right and the Shopify product CSV template does what it promises: a whole catalogue in one upload, with nothing to retype.
Try ListingBrief AI free → Generate an Etsy or Shopify listing from your product notes — 5 free a day, no credit card.
Open your dashboard → Turn your product notes into an Etsy or Shopify listing.