Vector Index AI Search Intelligence

Product data guide

Shopify product CSV import from supplier files

Your supplier sends a spreadsheet; Shopify wants its own layout. Here's how that layout works, how to reshape supplier data into it, and where imports go wrong.

How Shopify's product CSV is laid out

Start from Shopify's sample product CSV or an export from your store. Shopify says the first line of your product CSV file must be the column headers as listed in its column table, and column header names are case-sensitive. If headers are missing or don't match the format, the import fails. You can't add your own columns: Collection is the only column you can add without breaking the format.

Required columns depend on the job. For new products, the only required column is Title, and URL handle is also required if you're adding variants. When updating existing products, URL handle and Title are required. Older templates may use different names such as Handle; Shopify keeps backward compatibility with older column names.

Handles, variants and options

The URL handle is the unique identifier for each product and appears in the product page URL. It can contain letters, dashes and numbers, but no spaces.

For a product with variants, the first row carries all the product fields and the first image URL. Each following row repeats the handle, leaves Title, Description, Vendor and Tags empty, and fills in that variant's details. Variants are defined by Option1 name and Option1 value (then Option2 and Option3), and a product can have up to 3 options. The SKU column holds the SKU of a variant.

Extra images work the same way: one row per image, with the handle copied into each row. Image URLs need to be publicly accessible, and Shopify allows up to 250 images per product.

Getting supplier files into that shape

  1. Export your current products as a backup and template. Shopify says to have a backup of your product data before importing.
  2. Write a mapping sheet: each supplier column, the Shopify column it feeds, any conversion. Decide which fields define a product and which define a variant.
  3. Build handles yourself rather than trusting supplier names. One product, one handle, spelled identically on every row.
  4. Normalize numbers. Price takes only the monetary value without a currency symbol. Weight value (grams) takes only the numerical value, without the unit.
  5. Save as UTF-8 with LF-style linefeeds.

Test with a small batch first

Pick a few products covering the hard cases: several variants, multiple images, odd characters. Shopify tells partners doing large imports for merchants to test a small subset of changes first using a dev store. On a live store, the Status column accepts draft, meaning the product isn't yet ready to be sold, so test products can be checked before they're marked ready. This matters because imports can't be canceled once they begin, and there's no import history.

Common failure points

When it stops being a quick job

It gets harder when two suppliers disagree about the same products, when there are around 100 SKUs with variants, or when someone has to approve product facts before anything goes live. That's what our supplier file preparation service covers: we map two supplier files to your existing import template with your approval, hold back every product with a conflicting or missing fact for you to decide, run a ten-SKU test through your own validator or test store, and hand over the checked file. Your team runs the live import.

The service page has a downloadable synthetic example built on fictional data for a made-up home goods supplier. In it, a bottle listed as 12 US fl oz in one file and 350 ml in the other is held for a decision rather than converted, and a mug with no capacity in either file is held too.

See the supplier file preparation service

Frequently asked questions

Which columns are required in a Shopify product CSV?

For new products, only Title, plus URL handle if you're adding variants. For updates, URL handle and Title.

How do variants work in the CSV?

Each variant gets its own row with the same URL handle. The first row carries the product fields, and a product can have up to 3 options.

What happens to existing products when I import?

If Overwrite products with matching handles is selected, CSV values replace existing ones and blank non-required columns clear existing values. If it isn't selected, products with matching handles are ignored.

Is there a file size limit?

Yes. A product CSV can't exceed 15 MB, so split larger files and upload each one.