PRACTICAL GUIDE · REVIEWED 21 OCT 2026

Shopify CSV import not working? Find the failing step first.

Is the upload rejected, are some rows ignored, or did the import finish without images? Start with the exact symptom, protect the original export, and test a small copy before trying again.

Keep the originalWork on a copy and keep a rollback export.
Scan locallyYour CSV stays in your browser during the free check.
Fix blockers firstEncoding and row structure come before field cleanup.
Test a small importReview Shopify's preview before the full import.

START WITH THE SYMPTOM

Three different failures need three different checks.

Upload stops before the import preview? Check the header names against Shopify's current sample, confirm UTF-8 encoding, then inspect quoting and column counts near the first reported row.

Shopify reports an invalid or ignored row? Read the confirmation email and inspect that row's handle, title, price, inventory, and variant options. Fix one error class at a time on a copy.

Products appear but images do not? Test the image URL directly without signing in. A local CSV scan cannot prove Shopify can fetch a remote image; verify the result in your store after a small test import. Use the focused missing-images checklist if the import otherwise completed.

Want to see the full path from a blocked file to a safer retry? Follow our synthetic 24-row preflight example. It shows what a local scan can flag, which repairs are deterministic, and which product decisions still need a person. It is a demonstration, not a customer result.

FAST TRIAGE

Read the error before changing the file.

A Shopify import can fail because the CSV itself is malformed, because a product field violates a rule, or because Shopify cannot reach an external resource such as an image. Treating all three as “bad CSV” creates unnecessary edits.

The safest sequence is: preserve the source, identify the first failing row, correct one class of problem, and test a small copy before overwriting products.

REPRODUCIBLE EXAMPLE · CHECKED 21 OCT 2026

One row: a comma, a shifted price, and UTF-8 text.

Synthetic demonstration data, not a customer case. Download both files, choose Shopify in the free local scanner, and compare the results. These files were checked with Data Preflight’s byte decoder, CSV parser, and platform rules. They have not been imported into a live store.

Before: reproduce the failure

The unquoted title Demo cup, blue creates six fields under five headings. Expected local result: blocked, with COLUMN_COUNT and INVALID_PRICE errors.

Fix structure before prices: blue lands in the Price column because the title contains an unquoted comma.

Download before CSV

After: check the intended correction

The title is quoted as "Demo cup, blue — 茶杯" and saved as UTF-8. The comma and multilingual text stay inside one Title field.

Expected local result: one row, five columns, clear, zero findings. Use a fresh export from your store for a real catalog, especially when updating variants.

Download corrected CSV

“Not valid UTF-8” and damaged text need different fixes.

A synthetic byte sequence ending in a lone 0xE9 is rejected as INVALID_UTF8 by our decoder. Re-export from the intact source as CSV UTF-8, then compare titles with that source.

Already-damaged text such as Café can itself be valid UTF-8: our automated check accepts those bytes and the local scan can be clear. Re-saving that text will not restore Café. Recover the original text or a known-good export; do not guess a bulk replacement.

Before trying this in Shopify

Use a development or test store and its current product export. Review column dependencies and overwrite options, then test a small representative copy. Inspect the import preview, completion email, titles, prices, and variants. A local clear result cannot confirm store-side acceptance or recover damaged source text. The demo files omit images and variations and do not test those workflows.

ERROR → CAUSE → ACTION

Eight import problems worth checking first.

01
Encoding

Unexpected characters or symbols

The file may contain invalid UTF-8 bytes, or the source text was already damaged before it was saved as valid UTF-8.

Do this: Re-export the source as CSV UTF-8. Do not repair already-garbled text without checking the original source.

02
Header row

Unexpected token or incorrect headers

A required heading is missing, duplicated, misspelled, or does not match the current Shopify template.

Do this: Compare row 1 with a fresh Shopify product CSV export or sample template, including exact capitalization.

03
CSV structure

Illegal quoting / wrong column count

A comma, line break, or quote inside a cell is not escaped correctly, shifting the remaining columns.

Do this: Inspect the first reported row. Re-exporting from the source spreadsheet is usually safer than editing quote marks blindly.

04
Product identity

Ignored line: no product data

A product row may have a handle without its required title. A continuation row has different requirements from a new product row.

Do this: Give new products a Title and updates both URL handle and Title. Compare continuation or variant rows with a fresh store export before filling values across rows.

05
Prices

Price is blank or invalid

A price contains a currency symbol or other text, or an intended price was left blank.

Do this: Use a plain decimal such as 29.95. Confirm blank prices deliberately because Shopify can apply a 0.00 default.

06
Variants

Options are not unique

The same product handle and option-value combination appears more than once.

Do this: Deduplicate the variant or correct its size, color, or other option values before importing.

07
Inventory

Inventory quantity is not a number

Tracked inventory contains decimals, labels, or blanks that conflict with related inventory fields.

Do this: Use whole numbers and verify the inventory tracker, policy, and fulfillment fields together.

08
Image URL

Shopify cannot download an image

The value is not a complete public HTTP(S) URL, or the remote host does not let Shopify retrieve it.

Do this: Open the direct image URL in a private browser window. Confirm it needs no login and returns the image itself.

TOOL BOUNDARY

What the free check can—and cannot—confirm.

Checked locally
  • UTF-8 and unsupported UTF-16
  • Missing, empty, or duplicate headers
  • Unclosed quotes and shifted columns
  • Handles, prices, stock, status, and common variant conflicts
Still verify in Shopify
  • Every current template heading and exact capitalization
  • Whether a remote image is reachable by Shopify
  • Store-specific fulfillment, location, taxonomy, and metafield rules
  • The effect of overwriting an existing product or variant

A clear preflight result reduces common file risks; it is not a guarantee that Shopify will accept every row in a specific store.

SAFE IMPORT WORKFLOW

Five steps before a production import.

  1. 01
    Export a rollback copy

    Keep the current product export unchanged.

  2. 02
    Start from the current template

    Shopify's columns evolve. Prefer a fresh sample or export over an old spreadsheet copied between stores.

  3. 03
    Run a local preflight

    Correct encoding and structural blockers first.

  4. 04
    Import a small representative copy

    Include a simple product, a variant, and an image row.

  5. 05
    Review the preview and confirmation email

    Only proceed when counts and sample products look right.

中文速查

不要直接在唯一一份 CSV 上反复修改。

先保存 Shopify 当前商品导出作为回滚副本,再检查 UTF-8 编码、首行字段名、引号与列数。随后处理商品 Handle、价格、库存、 变体组合和图片链接。

Data Preflight 的免费检查在浏览器本地完成,不上传文件;它可以提前发现常见结构和字段风险, 但仍需在 Shopify 预览页确认店铺专属规则和覆盖更新的影响。

PRIMARY SOURCES

Verify against Shopify's current documentation.

Importing products with a CSV file Product CSV column reference Common product CSV import problems

STILL BLOCKED?

Turn the failing file into a bounded repair.

One CSV/XLSX, up to 1,000 rows, and one agreed repair rule may fit the $19 Quick Fix. If the cause is unclear or several risks are involved, start with the $49 review instead. Send a non-sensitive description first; no file or payment is needed to ask.