WooCommerce CSV product import: errors, missing images and when to use a conversation
WooCommerce CSV product import most often fails for four reasons: the wrong file format, columns that don't match the WooCommerce schema, repeated SKUs and image addresses the server can't download. Start by saving the file in UTF-8 and comparing it with an export of a few products from your store. Check the images by opening their addresses in a browser.
Author: The TellMyShop team. A guide for WordPress site and WooCommerce store owners: the cause, the manual fix and the same work in a chat conversation.
Last updated: · 7 min read
The most common import errors and what they mean
You'll find the built-in importer under Products → All Products, with the Import button at the top of the list. After the import it shows a summary: how many products it created, updated, skipped, and which ones had an error. The CSV importer and exporter documentation describes the file rules, and the import schema on GitHub has the full list of columns.
| What you see | Most common cause | What to do |
|---|---|---|
| Accented characters turned into gibberish | the file isn't in UTF-8 | save as CSV UTF-8 and import again |
| Rows skipped because the product already exists | the SKU or ID is already in the store | tick update existing products, or change the SKU |
| Empty names, prices or descriptions | columns weren't matched in the mapping step | assign the columns by hand in the mapping step |
| Price of 0 or an odd amount | the spreadsheet changed the number format | compare the price format with the sample file and stick to it |
| Products with no category or with new, odd categories | a typo in the category name or a wrongly written subcategory | check the category names and the hierarchy format in the schema |
| Import stops halfway | a time or memory limit on the server | split the file into smaller parts, ask your host about limits |
| Variations without a price or attributes | variation rows don't point to the parent product | check the parent column and the attributes in variation rows |
The WooCommerce documentation also warns about spreadsheets that silently change formatting and encoding. Before you import a file edited in a spreadsheet, open it in a plain text editor and see whether the columns and characters look the same as in the export.
Why images don't import
This is the most common complaint after an import: the products are there, the images aren't. During the import WooCommerce downloads each image from the address in the file and adds it to the media library. If the download fails, the product is created without an image. Check these in order:
- The address opens the image itself. Paste it into a private browser window. You must see an image, not a login page, a cloud drive preview or a file download.
- The address is public. Images from a wholesaler's logged-in area or from a private folder won't be downloaded.
- The images column is written correctly. Several images for one product go in one column, separated as the schema shows. The first image becomes the main image.
- The supplier's server doesn't block downloads. Some servers reject bulk downloads from another site. The only fix is to download the images and upload them to the media library yourself, or ask the supplier.
- The images aren't too large. Very large files can exceed the server's time or memory limit. A smaller batch of products per import often solves it.
- A file name instead of an address. If the images are already in the media library, you can give their names in the file instead of full addresses. The month the files were uploaded to the library can then matter. WebToffee's guide to image import errors lists typical reasons downloads fail.
When images are missing only from some products after an import, list those products and compare their image addresses with the ones that worked. The difference usually points straight to the cause.
How to prepare the file so the import works first time
A file built on an export from your own store gives the fewest errors:
- Add two or three products by hand, including one with variations, and export them to CSV.
- Paste the supplier's data into the same columns without changing the headers.
- Import five rows first. Check the name, price, category, images and variations in the store.
- Only then import the rest, in parts of a few hundred rows if the server tends to be slow.
- You can import new products as drafts, so you can check them before publishing.
The WP Engine guide to importing products from CSV describes the built-in importer as a good choice for small and medium stores with simple data. For complex supplier files and regular updates, a scheduled import plugin is often better.
CSV or a conversation with the chat: when to use which
The TellMyShop plugin for WordPress and WooCommerce doesn't replace an import of thousands of products and doesn't read the importer's error report. It helps in two situations: when there are only a handful of new products, and when you need to find what went wrong after an import.
| Situation | Better choice | Why |
|---|---|---|
| Thousands of products from a wholesaler file | CSV import or an import plugin | one file, one process, repeatable every week |
| Daily price and stock updates from a supplier | a scheduled import plugin | runs by itself, no conversation needed |
| A handful of new products from a supplier email | a conversation with the chat | no file to build, description written straight away |
| Checking after an import: products without images, description, category | a conversation with the chat | the list of gaps in one reply |
| Fixes after an import: descriptions, categories, images | a conversation with the chat | batches with a preview instead of re-importing |
After the import: the gaps in one list
The free TellMyShop Free version reads products and their full data, so your chat (Claude or ChatGPT) finds products without a main image, without a description, without a category or with a price of zero. In TellMyShop Pro it can fix those gaps: add images from public addresses, assign categories and write descriptions, always with a preview. It saves prices and stock only once the Sales switch is on in the plugin panel. A sample conversation, with example numbers:
You: Yesterday I imported 400 products from a new supplier. Check what's missing.
Your chat: Of the 400 new products, 37 have no main image, 12 have no category, and 5 have a price of €0. All 37 without an image belong to one brand, Trail. Check their image addresses in the file and open one in a private window: if you see a login page instead of the image, the download was blocked.
You: You're right, it's a login page. I'll get the images from the supplier. Assign the categories by name, as with the other products.
Your chat: Preview for 12 products:
I'll save it after your ‘yes’. The zero prices need the Sales switch.
Trail travel mug 450 ml
old version: no category
new version: Mugs and flasks
The chat creates new products from a list a few at a time, up to 10 in one batch, as drafts that aren't visible in the store. We show how adding products from a supplier email works in the post on how to add a product in WooCommerce. Every change goes into the change history and you can undo most changes.
You can try the free version from the free version page. Plugin details are on the TellMyShop for WordPress and WooCommerce page, prices on the pricing page. If products don't appear in the store after an import, go through the guide product not showing in WooCommerce, and when the problem concerns variations, the checklist for product variations.
Questions and answers
Why are accented characters replaced with strange symbols after a CSV import?
The file wasn't saved in UTF-8 encoding. Spreadsheets often save CSV in a different encoding. Save the file again as CSV UTF-8 and import it once more with the option to update existing products.
Why don't images import from the CSV file?
Most often the image address doesn't open publicly, the supplier's server blocks downloads, or the addresses in the images column are separated incorrectly. Open a few addresses from the file in a private browser window. If you don't see the image itself, WooCommerce won't download it either.
How do I update prices of existing products by CSV without creating duplicates?
In the first step of the import, tick the option to update existing products. WooCommerce matches rows to products by ID or SKU. Without this option, a row with an existing SKU ends in an error or is skipped.
Will the chat replace an import of thousands of products?
No. For thousands of items from a supplier file, a CSV import or a scheduled import plugin is better. The TellMyShop plugin helps with a handful of new products from an email or a list, and with checking what needs fixing after an import.
Where can I find a sample CSV file for WooCommerce?
WooCommerce provides a sample CSV file, which its importer documentation links to. The simplest template is also an export of a few of your own products from the admin, because that file already has the correct column names.
WordPress is a trademark of the WordPress Foundation. WooCommerce is a trademark of Automattic Inc. Claude is a trademark of Anthropic PBC. ChatGPT and OpenAI are trademarks of OpenAI. TellMyShop is not affiliated with these companies.