Skip to content

Guides

Fixing Shopify product CSV import errors

The usual reasons a product CSV fails or comes in without its photos, and what to change before you upload it again.

By Darien Nouri. Published October 29, 2026.

Start with the file itself

Most failed imports come down to the file, not the products in it. Shopify reads a CSV file saved as UTF-8 and separated by commas, with the headers in the first row. The headers have to match Shopify's template word for word, including capitals and spaces. A misspelled header isn't read as the column you meant, so check them first when a field comes in empty on every product.

If you build the file in Excel, save it as CSV UTF-8. A plain CSV from Excel can garble accented letters and curly quotes.

Photos that don't come in

Shopify copies each photo from the link in the file while the import runs. The link has to be a public https address that opens the image itself, with no sign-in and no password. A Google Drive or Dropbox page that shows the photo isn't enough.

A product with several photos takes one row per photo. The first row carries the product. Each further row carries only the URL handle, the photo link, its position and its alt text. If those extra rows have a different handle from the product, their photos won't attach to it.

Shopify takes up to 250 photos per product. Once the import finishes, it keeps its own copies, so the original links only need to work until then.

Products that merge or split

Shopify uses the URL handle to tell products apart. Rows with the same handle are treated as the same product. So two different items with the same handle merge into one, and a product whose rows have slightly different handles splits into several.

Handles should use only letters, numbers and dashes, with no spaces. Building them from the title plus a stock or lot number keeps them unique without much thought.

Prices and status

  • Price and Compare-at price take a plain number, like 450.00. No currency sign and no thousands separator. A blank price comes in as 0.00, so check that one before you publish.
  • Status takes active, draft or archived. If the column is there, every product row needs a value.
  • Published on online store takes true or false.

Tags, SEO fields and alt text

  • Tags are comma separated, up to 250 per product. Letters, numbers and hyphens are safest. Accented letters and symbols can cause trouble.
  • SEO title can be up to 70 characters, and SEO description up to 320. Leave them blank and Shopify uses the title and description.
  • Image alt text can be up to 512 characters. A short, plain description of the photo is better for shoppers using screen readers anyway.

Import as drafts first

Set Status to draft and Published on online store to false for every product in the file. Everything comes in hidden, so you can check titles, prices and photos in the Shopify admin and publish when you're happy. If something went wrong, you fix it there or delete the drafts and import again, and no shopper ever saw it.

Where to go next

Cataloger writes this file from your photos, with every product as a draft and the price from your own rule, and checks these limits before you download. See every column it writes, or read how it works for online stores.