Shopify silent import failure

Shopify Says "Import Successful" — But Nothing Was Imported

The import job finished, the message was green, and your product list is still empty. Shopify skipped every row without raising an error. This page covers the handful of causes behind almost every silent import failure.

What causes this error

  • A UTF-8 BOM or wrong encoding corrupted the first header, so "Handle" wasn't recognized and every row lost its anchor column.
  • Variant or image rows are missing the Handle value — Shopify requires the same Handle on every row of a product, and rows without it are dropped.
  • The file uses semicolons instead of commas (Excel does this in many regional settings), so Shopify sees one giant column.
  • The file was built from Shopify's export, but the export layout doesn't exactly match what the importer expects — extra or reordered columns can cause rows to be skipped.
  • The file is actually an Excel file renamed to .csv, or was exported from Google Sheets/Numbers with formatting Shopify can't parse.
  • The import DID work — but the products landed as drafts, or the results email listing skipped rows went unread.

Why Shopify reports "success" on a failed import

Shopify's import banner reports that the job ran, not that rows were created. Rows that can't be parsed are skipped rather than failed — so a file where every row is unreadable still completes "successfully" with nothing to show for it.

The real outcome lives in the import results email and in the product list itself. Treat the green banner as "the job finished", never as "your products exist".

The two silent killers: BOM bytes and missing Handles

A byte-order mark (BOM) is an invisible three-byte prefix Excel adds when saving UTF-8. Shopify can read the file, but the first header becomes "\xEF\xBB\xBFHandle" instead of "Handle" — and without a recognized Handle column, no row can be imported.

The second killer is variant rows without a Handle. Shopify groups rows into one product by repeating the Handle; a variant or image row with a blank Handle belongs to nothing and is silently discarded. Multi-variant catalogs built by hand in a spreadsheet hit this constantly.

How to fix it

Option A: fix it manually

  1. Check the import results email first — Shopify sends a per-import report, and "successful" in the banner can still mean "0 products created" in the report.
  2. Check Products with the status filter set to Draft — imports with Published unset or FALSE create invisible drafts.
  3. Open the CSV in a plain text editor: confirm the first characters are exactly "Handle," (no invisible BOM), and that fields are comma-separated.
  4. Confirm every row has a Handle, including variant and image rows, and that it matches the parent row's Handle exactly.
  5. Re-save as UTF-8 without BOM, comma-separated, and re-import a 2–3 row test file before the full catalog.

Option B: fix it automatically

  1. Upload your CSV — EcomCSVFix detects BOM and encoding problems, repairs headers, fills missing variant-row Handles, and strips empty rows: the exact causes of silent skips.
  2. Download the cleaned file and re-import. If any rows still can't be made importable, the clean report tells you which ones and why.

Before and after

Before — BOM + missing variant Handles
\xEF\xBB\xBFHandle;Title;Option1 Value;Variant Price
blue-tee;Blue Tee;Small;19.00
;;Medium;19.00
;;Large;19.00
After — clean header, Handle on every row
Handle,Title,Option1 Value,Variant Price
blue-tee,Blue Tee,Small,19.00
blue-tee,,Medium,19.00
blue-tee,,Large,19.00

Fix it automatically in 30 seconds

Upload your CSV, let EcomCSVFix repair the broken rows, then download a Shopify-ready file.

Free for up to 5 files/month. No credit card.

FAQ

Shopify says imported but no products appear — where do I look first?

The import results email, then Products filtered by Draft status. Between those two you'll usually find either the skip reasons or the invisible products.

Why did my products import as drafts?

The Published column was empty, FALSE, or in a format Shopify didn't recognize (Yes/No instead of TRUE/FALSE). Fix the values and re-import, or bulk-publish in admin.

My file worked before and now it doesn't — what changed?

Usually the file, not Shopify: a re-save in Excel can switch the delimiter or add a BOM, and columns copied from a fresh export may no longer line up. Diff the failing file against the last working one in a text editor.

Does the same CSV behave differently in different stores?

It can look that way — differences in existing handles, market columns, and metafield definitions between stores change what gets skipped. The file rules themselves are the same everywhere.

More Shopify CSV fixes