Guide · updated 2026-10-22

How to Import Products to Shopify with a CSV File

Everything you need to bulk upload products with Shopify's CSV importer: the template, which columns matter, variants, images, saving the file correctly, and how to fix the errors that stop an import.

What is a Shopify product CSV file?

A CSV (comma-separated values) file is a plain-text spreadsheet. Shopify uses one to create or update many products in a single upload. Each row describes one variant of a product, or one extra image, and a column called Handle ties the rows of a product together.

Shopify's CSV import is free and built into every plan. It's the standard way to move a catalog from WooCommerce, Wix, Squarespace or Magento, or to edit hundreds of prices at once. Its downside is preparation: the file has to follow Shopify's format exactly, or the import stops with an error.

Step 1: Get the template

Start from a file that already has the right headers. You have two options:

  • Download a template. Our free Shopify CSV template comes blank, as a sample with variants, or as a 50-product dummy store for testing a theme.
  • Export your own products. In Shopify admin go to Products → Export. The file has every column your store uses, including metafields, which makes it the best starting point for updates.

Step 2: Fill in the columns that matter

The full template has more than 40 columns, but most are optional. Only Handle is required, and new products need a Title. These are the ones most stores fill in:

Key Shopify CSV columns
ColumnExampleNotes
Handleclassic-cotton-teeLowercase, hyphens, unique per product. Becomes the URL.
TitleClassic Cotton T-ShirtFirst row of each product only.
Body (HTML)<p>Soft cotton…</p>The description. HTML allowed.
Vendor, Type, TagsDemo Brand, T-Shirt, "cotton, basics"Used for filters and automated collections.
Option1 Name / Option1 ValueSize / MUse Title / Default Title when there are no variants.
Variant Price19.99A plain number: no $ sign, no thousands separator.
Variant SKU, Variant Inventory QtyTEE-BLK-M, 25Stock as a whole number.
Image Srchttps://…/tee.jpgA public, direct link to the image file.
Statusactiveactive, draft or archived.

The template page explains every column, including inventory policy, weights and SEO fields.

Step 3: Add variants

Each variant gets its own row with the same Handle. Fill in the product details (Title, Body, Vendor, option names) on the first row only. Every variant row needs its option values, price and SKU.

A T-shirt with two variants
HandleTitleOption1 NameOption1 ValueVariant SKUVariant Price
classic-cotton-teeClassic Cotton T-ShirtSizeSTEE-S19.99
classic-cotton-teeMTEE-M19.99

A product can have up to three options (for example Size, Color and Material). Each combination of option values must be unique, so two rows with Size M and Color Black in the same product will fail.

Step 4: Add images

Put the main image in Image Src on the product's first row. For each extra image, add a row with only the Handle, Image Src and Image Position (2, 3, 4…). To attach an image to a specific variant, put its URL in that variant's Variant Image column.

Step 5: Save as CSV UTF-8

Accented characters and symbols break if the file isn't UTF-8 encoded. How to save it correctly:

  • Excel: File → Save As → CSV UTF-8 (Comma delimited) (.csv).
  • Google Sheets: File → Download → Comma-separated values (.csv). Sheets always uses UTF-8.
  • Numbers: File → Export To → CSV, with Text Encoding set to Unicode (UTF-8).

Then drop the file into our Shopify CSV checker. It finds misspelled headers, duplicate variants, bad prices and broken image links in your browser, before Shopify rejects them.

Step 6: Import the CSV into Shopify

  1. In Shopify admin, go to Products → Import and add the file.
  2. Tick Overwrite products with matching handles only if you're updating existing products.
  3. Click Upload and preview, check the preview, then click Import products.

Large files import in the background, and Shopify emails you when they finish. Afterwards, open a few products, especially ones with variants, and check their images, prices and options.

Updating existing products with CSV

To change prices, tags or descriptions in bulk, export the products, edit the columns you want to change, and re-import with Overwrite products with matching handles ticked. Shopify matches rows by Handle and updates those products.

Be careful with blank cells when overwriting: a column you include but leave empty can clear the existing value. Delete columns you don't want to change from the file instead of emptying them.

Common Shopify CSV import errors and how to fix them

Shopify CSV errors
What you seeCauseFix
Illegal quotingA quote mark inside a cell isn't escapedRe-save from a spreadsheet app as CSV UTF-8, or double the quote marks.
Missing headersA required column is missing or misspelledCopy the header row from the template. Names must match exactly.
Title can't be blankA new product's first row has no TitleAdd the title, and keep each product's rows together.
Price is not a numberCurrency symbols or commas in the priceUse plain numbers like 1299.00.
The variant … already existsTwo rows share the same option valuesMake each combination of option values unique.
Images missing after importLinks aren't public or directUse direct image URLs, or upload to Content → Files first.
Characters like é in textFile isn't UTF-8Save as CSV UTF-8 and import again with overwrite.
File too largeOver Shopify's 15 MB limitSplit the products across several files.

Faster: skip the CSV and import from a link

CSV is the right tool for migrations, but it's slow for adding products that already exist online. If your products are on Amazon, AliExpress, eBay or another Shopify store you manage, 1Click reads the page and fills in every column for you: title, description, images, variants and a price converted to your currency, with an AI rewrite of the text.

1Click import page: a collection URL pasted, source currency set to USD, and 9 of 12 found products selected
Paste a link, then pick what to import

For whole collections, see bulk upload without a CSV and copying products between Shopify stores.

FAQ

Shopify CSV import: FAQ

Still stuck? Email contact@ecomfusion.net.

Can I bulk upload products to Shopify?

Yes. Shopify's CSV import (Products → Import) creates or updates many products at once. An importer app like 1Click can also bulk import a whole collection from a Shopify store you manage, without a spreadsheet.

Can I import an Excel file into Shopify?

Not directly. Open the .xlsx file in Excel and use File → Save As → CSV UTF-8 (Comma delimited), then import the CSV.

How many products can I import with one CSV?

Shopify limits the file to 15 MB. Larger catalogs need to be split into several files, imported one after another.

Why are my Shopify products not importing?

Usually a misspelled column header, an empty Handle or Title, a price with a currency symbol, duplicate variants, or a file not saved as UTF-8. Run the file through our free CSV checker to find the exact row.

Do I need every column in the template?

No. Only Handle is required, and new products need a Title. Missing columns get Shopify's defaults, or keep their current values when you overwrite existing products.

How do I import inventory to Shopify with CSV?

For stock levels, export and import the separate inventory CSV from Products → Inventory, which has a column per location. The product CSV's Variant Inventory Qty column works for a single location.

Done with spreadsheets?

Import products from a link with 1Click: images, variants and AI-written copy included. Free for 3 imports.