Guide
How to bulk import products to Shopify with a CSV
Shopify does have a real product importer, which puts it ahead of Etsy and eBay straight away. Settings, then Import. What catches people is not the upload. It is the Handle column, and what it quietly does to two products that happen to share a name.
The Handle column decides what is one product
Handle is the last part of the product url, so hand-thrown-mug becomes /products/hand-thrown-mug. That much is obvious. What is not obvious is that the importer also uses it as the product's identity.
So if you generate handles from the title, and you sell "Hand Thrown Mug" in two glazes as two separate products, the import silently merges them. Nothing errors. You are left with one product, one of the two descriptions, and a variant list you did not ask for.
Give every product a handle of its own. Lowercase, hyphens, letters and numbers only. If two titles collide, put the sku on the end of one of them and move on.
The four SEO fields, and the lengths that actually matter
Shopify stores more than the title and the description, and the extra fields are the ones a search engine reads first. The field limits and the useful limits are not the same number.
| Field | Shopify allows | Google shows about |
|---|---|---|
| SEO Title (meta title) | 70 | 60 characters |
| SEO Description (meta description) | 320 | 155 characters |
| Handle (url) | no practical limit | keep it short and readable |
| Image Alt Text | 512 | read aloud, not truncated |
Write to the right hand column. Filling a 320 character meta description because the field holds 320 gets you 155 characters in the result and a sentence that stops mid clause. Alt text is the exception: nothing truncates it, because its job is to be read aloud to somebody who cannot see the picture.
An import can publish straight to your live shop
This is the other one worth knowing before you press the button. If your file sets Status to active and Published to TRUE, those products are on your storefront the moment the import finishes. There is no review step.
Set Status to draft and Published to FALSE while you are still working out whether the file is right. Publishing is a click per product afterwards. Unpicking a bad import from a live shop is not.
The columns worth filling
| Column | What goes in it |
|---|---|
| Handle | the url, unique per product |
| Title | the product name shoppers see |
| Body (HTML) | the description, html allowed |
| Tags | comma separated, for your own filtering |
| Variant SKU | your own code |
| Variant Price | numbers only, no currency symbol |
| Image Src | a url Shopify can reach |
| Image Alt Text | what is in the picture |
| SEO Title | the meta title |
| SEO Description | the meta description |
| Status | draft until you have read it |
Shopify tags are not Etsy tags. You get up to 250 of them at 255 characters each, which sounds generous until you remember nobody searches your storefront the way they search a marketplace. They are filters and collection rules, not a ranking signal. Thirteen good ones and 237 empty slots is the same shop as thirteen good ones.
How this compares to the others
Shopify is the loosest of the four on length and the strictest on identity. Nobody caps your title at 140 characters, but nothing forgives a duplicate handle either. There is a table of all four side by side if you sell in more than one place, and separate pages on Etsy titles, eBay titles and Amazon search terms.
Shopify changes its importer from time to time. This page describes how things stood when it was written, and Shopify's own help pages will say so before ours do.