Why Does My WooCommerce CSV Import Fail?
Why This Happens
WooCommerce's importer expects a specific CSV structure and encoding (UTF-8 is the safe standard), and deviations from that — a file saved in a different encoding by certain spreadsheet software, unexpected special characters, or a column structure the importer's field-mapping step can't automatically match — each produce their own distinct failure mode, from garbled product names to a complete import rejection.
Common Causes
- Encoding issues, most often from a CSV exported or saved in a non-UTF-8 encoding, causing special characters (accented letters, currency symbols, certain punctuation) to display incorrectly or break the parsing entirely.
- Column headers that don't match what WooCommerce's field-mapping screen expects, requiring manual re-mapping during import rather than relying on automatic detection.
- File size or server execution time limits, particularly for a very large catalog, causing the import to time out partway through rather than failing immediately with a clear error.
- Malformed CSV structure — unescaped commas or quotes within a field value, common when product descriptions contain commas and weren't properly quoted when the file was generated.
- Duplicate SKUs within the file or conflicting with existing products, which WooCommerce may reject or handle unexpectedly depending on the specific duplicate-handling setting chosen.
How to Fix It
- Re-save the CSV with UTF-8 encoding explicitly if any special characters are involved, rather than relying on a spreadsheet program's default save format.
- Carefully review the column mapping step during import, manually correcting any fields the importer didn't automatically match correctly.
- Split a very large file into smaller batches if size or timeout limits are the issue.
- Check for and resolve duplicate SKUs before importing, and confirm the chosen duplicate-handling setting matches what's actually intended.
Isolating the problem row or column
- Import a tiny file first. Use the header row and two or three products. If that works, the mapping is fine and the failure is in particular rows. Halve the file repeatedly until you find them.
- Open the CSV in a plain text editor, not only a spreadsheet. Check that fields are wrapped in quotes where needed and that the separator is a comma. Spreadsheet software in some regional settings saves with semicolons, and the importer has a delimiter option for that case.
- Save as UTF-8. Use "CSV UTF-8" when saving, so accented letters and currency symbols survive.
- Check the SKUs. Duplicates within the file, or matching existing products, behave differently depending on whether you chose to update existing products.
- Watch server limits. If large files stop partway, split them into smaller batches and check PHP's execution time and memory limits.
Before importing into a live store
Try the file on a staging copy and take a backup first. Remember that image columns are fetched from URLs during the import, so unreachable image links slow it down and can fail rows that are otherwise fine.
Need help with a large or complex catalog import? See custom WooCommerce development.