Skip to content
MousaBatarseh
Back to all notes

· By Mousa Batarseh

My WooCommerce CSV Import Checklist Before Anything Goes Live

Most WooCommerce import problems are decided before you click Run. By the time the progress bar starts moving, the file is either right or it isn’t. So my WooCommerce CSV import checklist is mostly about the file, with a short list of checks afterward to prove it landed the way I expected.

I’ve imported catalogs into WooCommerce for the Universal Wholesale store and into Shopify for United Textile, with more than 14,000 SKUs between the two systems at Universal. The platforms differ in the details. The mistakes are the same everywhere: a column mapped to the wrong field, two rows sharing a SKU, a variation pointing at a parent that doesn’t exist, images that never show up.

Before the import: the file

I open every import file in Excel first, even when it came out of another tool that I trust. Here is what I look at, in this order.

  1. Headers match what WooCommerce expects. The built-in importer auto-maps columns when the headers match its own export. If you start from a WooCommerce export and edit it, mapping is mostly automatic. If you start from a supplier file, plan to map every column by hand and read each one.
  2. No duplicate SKUs. I add a COUNTIF column on SKU and filter for anything above one. WooCommerce requires SKUs to be unique, and a duplicate either errors out or updates the wrong product.
  3. No blank SKUs on rows that need them. Blank SKU plus no ID means the importer creates a new product. That’s how stores end up with two copies of everything.
  4. Variations point to real parents. Each variation row needs a parent value that matches the parent’s SKU or ID. I XLOOKUP every parent reference against the list of parent SKUs and fix anything that comes back missing.
  5. Attributes are spelled the same way everywhere. “XL” and “Xl” are two different terms to WooCommerce. One typo becomes a second dropdown option that matches nothing.
  6. Prices are numbers. No currency signs, no thousands separators, no text. I check with ISNUMBER.
  7. Category paths use the right separator. WooCommerce reads a greater-than sign as a level in the category tree. A wrong character creates a new top-level category nobody asked for.

Why are my WooCommerce product images not importing?

This comes up on almost every support forum I’ve read about imports, and it’s usually one of a few causes. The image URL isn’t publicly reachable, so the server can’t fetch it. The URL redirects or sits behind a login. The file name has spaces or odd characters. Or the server times out because the importer is pulling hundreds of large images at once.

My fix is boring and it works. I paste a sample of image URLs into a browser in a private window. If they don’t load there, they won’t load for WooCommerce. For big catalogs I split the file into smaller batches so each run has fewer images to download. If the images already live in the media library, I reference those URLs instead of the supplier’s.

Mapping: read every dropdown

On the mapping screen I go row by row. Any column I don’t want to change gets set to Do not import. That one habit has prevented more damage than any plugin. A stray description column mapped by accident will overwrite product copy someone spent weeks writing.

If I’m updating existing products, I tick the box to update existing products and make sure the file carries ID or SKU on every row. If I’m creating new products, I leave it unticked so the importer can’t touch anything that already exists.

Test with a small batch

I build a test file with a handful of rows that cover each case in the real file: one simple product, one variable parent with two variations, one with several images, one in a nested category. Import it, then look at those products in the admin and on the front end.

If the test batch is clean, the full file usually is too. If the test batch is broken, I just saved myself from cleaning up thousands of rows.

After the import: prove it

Keep a rollback ready

Before any import that updates existing products, I export the full current catalog and save it with the date in the file name. If the import goes sideways, I can re-import the backup to put prices, stock and descriptions back. A database backup from the host is better still, and I take one before any large import.

The whole checklist takes maybe half an hour on a normal file. Cleaning up a bad import of a few thousand rows can take days. Print the list, run it every time, and treat any red mark as a reason to stop.

Have a related task to discuss?

Email Mousa