Shopify Bulk Product Import — CSV Template, Variants, Errors

To bulk import products into Shopify, you either format a CSV to match Shopify's exact template, or use an app that accepts your file as-is. This guide covers both methods, plus the variant formatting and errors you'll hit along the way.

How do I use Shopify's built-in CSV importer?

Shopify has a free CSV importer built into the admin at Products > Import.

What columns does the Shopify CSV template need?

Shopify expects a CSV file with specific column names. The key columns are:

Column Required Example
Title Yes Cotton T-Shirt
Body (HTML) No <p>Soft cotton tee</p>
Vendor No Acme Apparel
Type No T-Shirts
Tags No cotton, summer
Variant Price No 24.99
Variant SKU No TEE-BLK-M
Variant Inventory Qty No 50
Image Src No https://example.com/tee.jpg

The full template has over 20 columns. Every column name must match exactly — Variant Price, not Price or variant_price.

How to use it

  1. Go to Products > Import in Shopify Admin
  2. Upload your CSV file
  3. Check "Overwrite existing products that have the same handle" if you're updating
  4. Click Upload and continue
  5. Review the preview and click Import

Limitations

This method works well when you already have data in Shopify's exact format — for example, if you exported from another Shopify store.

What if my file doesn't match Shopify's CSV template?

When your data isn't in Shopify's template format — which is most of the time with supplier files — an import app handles the translation.

Using Csvio

Csvio reads your supplier file as-is and uses AI to map columns to Shopify fields.

  1. Install from the App Store — Csvio on Shopify
  2. Upload your file — Excel, CSV, or PDF. No reformatting needed.
  3. Review the mapping — the AI maps columns like "Trade Price" → Price, "Item Code" → SKU
  4. Import — products are pushed directly into Shopify Admin

For repeat imports from the same supplier, the mapping is saved. Subsequent uploads skip the mapping step entirely.

How do I format variants for Shopify bulk import?

Variants are the most common source of import errors. Here's how Shopify expects them:

What format does Shopify need for variants?

Each variant gets its own row. All variants of the same product share the same Handle. Only the first row has the product-level data (Title, Body, Vendor). Subsequent rows have only variant-level data:

Handle Title Option1 Name Option1 Value Variant Price Variant SKU
cotton-tee Cotton T-Shirt Size S 24.99 TEE-S
cotton-tee Size M 24.99 TEE-M
cotton-tee Size L 26.99 TEE-L

Common variant formats in supplier files

Suppliers rarely structure variants this way. Common patterns:

All sizes in one cell: S,M,L,XL in a single column. This needs to be exploded into separate rows.

One row per variant: Already close to Shopify's format, but columns are named differently and the Handle grouping is missing.

Size columns: Separate columns for each size (QTY_S, QTY_M, QTY_L) where the value is inventory quantity.

Csvio detects all three patterns and handles the conversion automatically.

Why did my Shopify bulk import fail?

"Invalid CSV file"

Your file likely isn't UTF-8 encoded. Open it in a text editor (not Excel), re-save as UTF-8, and try again. Or use an app like Csvio that handles encoding automatically.

Products created without variants

The Handle column is wrong or missing. All variant rows for the same product must have the same Handle value. If Handles don't match, Shopify creates separate single-variant products.

Prices show as $0.00

The price column contains non-numeric characters — currency symbols ($, £, €), thousand separators (,), or spaces. Remove them before importing. Csvio strips these automatically.

Inventory not updating

Make sure you're using Variant Inventory Qty (not Inventory or Stock). Also check that inventory tracking is enabled for the product in Shopify.

Images not importing

Image URLs must be publicly accessible HTTPS URLs. Local file paths (C:\images\tee.jpg) don't work. The image server must not require authentication.

Duplicate products

If you're updating existing products, enable "Overwrite existing products that have the same handle" during import. Without this, Shopify creates duplicates instead of updating.

Which import method should I use?

Scenario Best method
Data already in Shopify CSV format Shopify's built-in importer
Supplier Excel/CSV with non-standard columns Csvio
PDF supplier catalog Csvio (Pro plan)
Weekly supplier file updates Csvio (saved mappings)
Migrating from WooCommerce/Magento Matrixify
Updating metafields or non-product resources Matrixify

Getting started

If you receive product data from suppliers as Excel or CSV files, the fastest way to get them into Shopify is to install Csvio and upload your file. The free plan includes 3 imports per month with up to 100 products — enough to test whether it works for your supplier's format.

← Back to all posts