This guide walks through the most common failures in roughly the order you are likely to hit them, with the fix for each. If you want the broader reference, the troubleshooting section of the docs covers stuck imports, memory limits, and license activation too.
The file will not upload or parse
Symptom: The importer rejects the file, or the preview shows columns shifted, merged, or full of strange characters.
Most common cause: an unescaped comma. A CSV separates columns with commas. If one of your product descriptions contains a comma and is not wrapped in quotes, the importer reads it as a new column and everything after it shifts. Most spreadsheet programs handle this automatically when you save as CSV, but a file edited by hand or generated by a script may not.
Fix: Re-save the file from a spreadsheet program rather than a text editor, which adds the quotes correctly. If you opened the CSV in a plain text editor and edited it there, that is likely the culprit.
Second cause: wrong encoding. If accented letters or symbols turn into garbled characters, the file was saved in the wrong character encoding.
Fix: Save as CSV UTF-8.
Nothing imports at all
Symptom: The import runs, reports success, but no products appear.
Common cause: a column mapping problem. If the importer does not know which column is the product name or SKU, it has nothing to create products from.
Fix: Re-check the mapping step. Confirm your name and SKU columns are mapped to the right WooCommerce fields. A live preview that shows what a row will become as a product is the fastest way to see whether the mapping is producing a real product or an empty shell.
Second cause: a fatal error mid-import. If a single bad row throws an error that stops the whole process, later rows never run. Good importers log each row, so you can see exactly where it stopped and why.
Fix: Check the importer's log. If it points to a specific row, fix that row in your spreadsheet and re-run.
Only some products imported
Symptom: You expected 500 products and got 480, or a scattering are missing.
Common cause for variable products: a broken parent link. If a variation row points to a parent SKU that does not exactly match the parent's SKU, that variation is skipped or orphaned. A single typo or trailing space breaks the link.
Fix: Confirm every variation's parent SKU matches its parent exactly. Watch for stray spaces and inconsistent capitalization. The variable products guide covers the parent-and-variation structure in detail.
Common cause for all products: duplicate SKUs. If two rows share a SKU, the second may overwrite the first instead of creating a new product, so your count comes up short.
Fix: Make every SKU unique.
Images did not import
This is one of the most common complaints, and it has a few distinct causes.
The URLs are not public. If an image link requires a login or sits behind a firewall, the importer cannot fetch it.
Fix: Open the URLs in a private browser window. If they do not load there, they are not public.
The URLs have no file extension. Many image hosts and content delivery networks serve images from links that end in something like /600/600 rather than /photo.jpg. Older import tools check the URL text for a .jpg or .png ending and reject anything without one, even though the link points at a perfectly good image.
Fix: Use an importer that inspects the actual file to determine its type rather than relying on the URL ending. This is what lets links from services like Cloudinary, Shopify, and Imgix import correctly.
Your server cannot reach the image host. The import downloads each image from your server, not your browser. Your browser might load an image fine while your server cannot, because of a network restriction, a certificate issue, or a timeout.
Fix: A good importer logs why each image failed, with the actual error, so you are not guessing. If you are testing on a local development environment, be aware that local setups frequently block or fail outbound image downloads even when the same import works fine on live hosting. If images fail locally but the URLs are valid, try the import on your live or staging site before assuming the data is wrong.
Prices or stock are wrong or blank
Symptom: Products imported but prices did not come through, or show oddly.
Common cause: formatting. A price written as $1,299.00 with a currency symbol and thousands separator may not be read as a number.
Fix: Use plain numbers like 1299.00, or an importer that strips currency symbols and separators for you.
The import created duplicates
Symptom: Running the import again doubled your products instead of updating them.
Cause: The import is not matching on SKU, so every run treats every row as new.
Fix: Confirm your products have unique SKUs and that the importer updates existing matches rather than always creating. With matching on, you can safely re-import a corrected file and existing products update in place. See import modes for how insert, update, and insert-or-update differ.
When the data is fine but it still will not work
If you have checked all of the above and a basic import still fails, the issue is more likely with the tool or the environment than your data. A few things worth checking:
- Is the importer hitting a timeout on a large file? Imports that process in the background, in batches, avoid the timeouts that kill a single long request.
- Is something else on the site interfering? A caching or security plugin can occasionally block the import process. Testing with other plugins temporarily disabled can isolate this.
- Are you on a local environment? As noted above, local setups have networking quirks that do not exist on live hosting. Outbound requests, including image downloads, often behave differently.
The short version: Most import failures come down to four things: a malformed file, a mapping mistake, broken SKU links, or unreachable images. Check those first and you will resolve the large majority of problems.