Shopify product CSV troubleshooting

Shopify CSV import errors: 10 checks before you upload

Use this checklist to find the row, understand the likely cause, and correct common product CSV problems before another import attempt.

Check your CSV freeJump to the checklist ↓

The checker runs locally in your browser. Your file is not uploaded.

Start safely

Before changing the file

01Keep a backup

Shopify warns that product imports cannot be canceled after they start.

02Use a current export

For updates, export products first so your headers and existing identifiers match.

03Test a small subset

Validate a few rows before importing the full supplier catalog.

Error-by-error checklist

Find the message that matches your problem

01

Invalid or missing CSV headers

Likely cause: A header is missing, misspelled, has extra spaces, or uses the wrong capitalization.

Fix: Start from a fresh Shopify export or sample CSV. Keep header text and capitalization exactly as provided by Shopify.

Example: Use “Handle”, not “handle” or “Handle ” in templates that use the Handle header.

02

Ignored line because the handle already exists

Likely cause: Two different products use the same handle, or an import is unintentionally matching an existing product.

Fix: Use one unique handle per product. Rows for variants or extra images of the same product should intentionally repeat that product handle.

Example: linen-shirt and linen-shirt-blue identify different products; repeated linen-shirt rows can identify variants.

03

Line did not contain product data

Likely cause: A product row includes a handle but its first row has no product title.

Fix: Add the product title to the first row for that handle. Variant rows can leave product-level fields blank when the first row already contains them.

Example: The first linen-shirt row needs “Linen Shirt” in Title.

04

Price can’t be blank or is invalid

Likely cause: A variant price is empty or contains a currency symbol, text, or an invalid number format.

Fix: Enter a plain numeric value using a period as the decimal separator and no currency symbol.

Example: Use 29.00, not $29 or 29,00.

05

Inventory quantity is blank or not a number

Likely cause: Inventory tracking is enabled but the quantity is missing, or the value is not a whole number.

Fix: Use a whole-number quantity when inventory is tracked. If it is not tracked, leave the inventory tracker field blank as Shopify instructs.

Example: Use 0, 4, or 25—not 4.5 or “in stock”.

06

Fulfillment service can’t be blank

Likely cause: The fulfillment service column has no recognized value.

Fix: Use the correct service handle. Shopify says to use “manual” when you are not using a fulfillment service.

Example: manual

07

Options are not unique

Likely cause: Two variants under the same product have the same combination of option values.

Fix: Make each option combination unique and keep option positions consistent across the product.

Example: Do not include two rows that are both Size: Medium and Color: Black.

08

Image download or validation failed

Likely cause: The image URL is incomplete, private, points to a preview page, or the host blocks Shopify.

Fix: Use a publicly accessible direct image URL beginning with https:// and test it in a private browser window.

Example: A direct .jpg or .png file URL works better than a password-protected sharing page.

09

Illegal quoting or stray quote

Likely cause: Curly quotes, an unmatched quotation mark, or an unescaped comma breaks the CSV structure.

Fix: Save the file as UTF-8 and replace curly quotes with straight quotes. Fields containing commas must be wrapped correctly in double quotes.

Example: "Blue shirt, relaxed fit" stays in one CSV cell.

10

Unexpected characters after import

Likely cause: The CSV was exported using a character encoding other than UTF-8.

Fix: Reopen the source file and export it as UTF-8 CSV. Google Sheets exports CSV in UTF-8 by default.

Example: Check accented letters, apostrophes, and non-Latin product titles before the full import.

60-second preflight

Run these checks before every import

  • Headers match the current Shopify export or sample exactly.
  • The file is saved as comma-separated UTF-8 CSV.
  • Each product has the intended handle and its first row has a title.
  • Variant combinations are unique; prices and quantities are numeric.
  • Image links are direct, public, and open without a login.
  • A small sample has been tested before the full import.
Run the free CSV check

Choose the next step

Fix it yourself or send a small file for correction

The $9 kit gives you a reusable workflow. The $29 service covers a written review and correction of up to 20 rows within 48 hours—no call or store access needed.

Frequently asked questions

Shopify CSV import FAQ

What columns are required in a Shopify product CSV?

For new products, Shopify says Title is required; a URL handle is also required when adding variants. For updates, URL handle and Title are required. Other columns can become required depending on the data you update.

Can I test a Shopify CSV before importing it?

Yes. Run a local structural check first, keep a backup of existing product data, and test a small subset before a large import.

Does this checker upload my CSV?

No. The checker reads the selected file in your browser and does not upload its contents to a server.

Why did Shopify skip my product images?

Shopify needs publicly accessible direct image URLs. Private links, preview pages, missing files, and hosts that block Shopify can cause images to be skipped.

Official Shopify references

This guide summarizes Shopify’s current help documentation. Check the official pages for store-specific details and template changes.