Troubleshoot a failed or incomplete import
When an import finishes with failures, Csvio shows which rows failed and why. This guide covers the most common errors and how to fix them.
How do I see which rows failed?
After an import completes, the Done screen and the History page both show:
- Succeeded — rows that were imported successfully
- Skipped — rows intentionally not processed (see Why rows are skipped) — not the same as a failure
- Failed — rows that couldn't be imported, with an error message for each
Go to History and click any past import to open its details. Failed rows are grouped by reason, with the biggest group first, so you can see what to fix. Click Download failed rows (CSV) to get every failed row with its row number and the reason. If some rows can work on a second try, a Retry button appears there too. See View import history.
What do the common error messages mean?
Why did my import fail with a blank title error?
Every Shopify product needs a title. If the Title column is blank or unmapped for a row, the import fails for that row.
Fix: Make sure your file has a title for every product, and that the column is mapped to Title on the mapping screen.
How do I fix an invalid price error during import?
The price value contains characters Shopify can't parse — letters, multiple decimal points, or unusual currency formatting.
Fix: Use plain numbers without currency symbols or thousand separators. For example: 29.99 instead of $29,99 or 29.99 EUR.
Why was a row skipped as a duplicate SKU?
Two or more rows in your file have the same SKU. Csvio processes the first occurrence and skips the rest as duplicates.
Fix: Remove duplicate rows from your file, or ensure each row has a unique SKU.
Why did a variant fail with a blank option?
A product has variants but one or more option values are empty. Shopify requires every variant to have a value for each option.
Fix: Fill in the missing option values in your file. For example, if a T-Shirt has a Size option, every variant row needs a size value (S, M, L, etc.).
Why did a row fail over a custom field?
Custom fields that hold a pick from a list your store keeps — Material is the common one — have two ways to stop a row. The reason on the failed row says which:
- "Shopify only allows this custom field on certain product categories, and this product isn't in one of them." — the field is limited to categories, and this product's category isn't one of them, or it has no category at all. Shopify refuses the whole product rather than just the field.
- "This row's value isn't in your list for this custom field." — the field points at an entry on a list your store keeps, and this row's text isn't on it.
Fix: For the first, give the product a category the field covers, or in Shopify admin go to Settings > Custom data, open the field, and add the category your products use. For the second, pick a match on the Review mapping screen, or add the entry under Settings > Custom data.
Csvio checks what it can before pushing, and on a Create import it leaves a field off rather than lose the product over it. It can't always tell in advance on a Bulk edit, because the category lives on the product in Shopify rather than in your file. The Review mapping screen shows which products are affected either way — see Confirm custom field values during import.
What causes an image download failed error?
Shopify couldn't download an image from the URL in your file. Common causes: the URL is broken, the server blocks automated downloads, or the link has expired.
Fix: Open the image URL in a private browser window to confirm it's accessible. Replace broken or expired links with working ones.
Why did a Bulk edit leave a product's old photos in place?
On a Bulk edit, Csvio left a product's photos alone instead of replacing them. Two messages cause this:
- "Shopify couldn't fetch the photo at …" — Shopify couldn't download one of the image links on that row. The product keeps the photos it already had, plus any photos from that row that did upload.
- "This product holds photos or videos we can't safely replace" — the product has a video or a 3D model, or more photos than Csvio can read at once. Csvio doesn't remove media it can't put back.
Fix: For a broken link, open it in a private browser window — it must load an image file directly, not a preview or sharing page — then correct the link and run the update again. For a video or 3D model, unmap the image column to update everything else on that row, and change that product's photos in Shopify directly.
What does a rate limit error mean?
Shopify limits how many changes an app can make per minute. If you're importing a very large file, some rows may be delayed or temporarily fail.
Fix: This usually resolves on its own. Click Retry failed on the import results to re-attempt the affected rows. If it persists, try importing a smaller batch.
Why does the import look wrong when nothing failed?
If the import succeeded but the products don't look right:
- A product you expected to update wasn't touched — check which mode you ran. Create skips rows whose SKU already exists in your store by design; it never overwrites. Use Bulk edit to change products you already have, or run a Resync if the file is a fresh version of a saved supplier.
- Wrong field values — check the column mapping. A common issue is Price and Compare At Price being swapped, or Title and Description being reversed.
- Missing variants — verify that product titles match exactly across rows that should be grouped. See Import products with variants.
- Missing images — check that image URLs are publicly accessible. See Import product images.
- Photos didn't change on a Bulk edit — if one photo on the row was missing from your upload, that product keeps the photos it has. The Done screen shows how many products this affected. Add the missing files and run the update again. See Upload product photos from your computer.
- One field is blank on products that otherwise imported — a value Shopify can't accept costs that one field, not the product. A weight unit with no number next to it, a half-filled unit price, or a custom field the product's category doesn't allow are all left off, and the product imports with everything else. Check that column in your file, then import again or run a Bulk edit to fill it in.
- Unexpected defaults — review the Import defaults card. Values set there are applied to any row where the field isn't mapped or is empty.
How do I retry only the failed rows without re-importing everything?
If some rows failed but others succeeded, you can retry just the failed ones without re-importing everything:
- Go to History and click the import to open its details.
- Click Retry (it shows the number of rows that can be retried).
- Csvio re-attempts only the failed rows.
For more on retrying, see Retry failed rows.
When should I start over with a new file?
If the import is too broken to fix with retries:
- Fix the issues in your source file (correct titles, clean up prices, remove duplicates).
- Upload the corrected file as a new import.
- Choose the mode that matches what you need: Create for products you don't have yet (existing SKUs are skipped, not touched), or Bulk edit to push corrected values onto products you already imported.
How do I get help if my import still fails?
If you've tried the steps above and the import still isn't working, click the chat button in the bottom-right corner of Csvio. Describe what you expected and what happened — you can attach screenshots in the chat too. We reply every day, 9am–7pm IST, and most replies come the same day. If we're offline, leave a message and we'll reply when we're back.
If the import finished with failures, you can also click Report a problem on the results screen. We'll know which import you mean, so there's no need to look anything up.
You can also email [email protected] — for example, to send us the file you were importing.
Still need help? Click the chat button in the bottom-right corner of Csvio, or email [email protected].