The WooCommerce CSV import bug a dot release fixed

Got an urgent call a while back from a client running a big fashion store. They were doing a bulk product update, thousands of products, over CSV, and everything was breaking. Their brand taxonomy in particular was a mess. They had parent brands like ‘Global Kicks’ and child brands like ‘Global Kicks > Running Shoes’, but the WooCommerce CSV import tool ignored the hierarchy and built a flat, useless list of brands. That made filtering almost impossible.

My first thought was user error. 99% of the time it’s a stray comma or a quote that isn’t escaped properly in the CSV. So I spent a good hour sanitizing their file, checking encodings, and I even wrote a quick pre-processor script to format the brand column. It felt like a band-aid, not a fix. The data was right and the format was right, but the import was still wrong. It’s one of those problems that makes you question your own sanity.

Where hierarchical CSV imports break down

So I started digging into the importer logic in WooCommerce core, and there it was. The logic that parses hierarchical taxonomies for product categories wasn’t being fully applied to other taxonomies, like a custom ‘brand’ taxonomy. The importer just wasn’t built to read the ‘Parent > Child’ syntax for anything but categories. It’s a subtle bug, and it can cause real headaches. You follow the documentation exactly, and the machine just says “nope.”

Here’s the part that stung: we were about to write a custom patch for the importer when the official update dropped. As the WooCommerce Developer Blog noted in its post on the 10.3.5 dot release, this exact issue is now fixed. The fix, PR #61873, brings the brand import logic in line with the category logic. It’s a small change, but it matters a lot for any large store using custom taxonomies.

<!-- This is how your 'Brand' column should be formatted.
It finally works as expected. -->
"SKU","Name","Brand"
"SHOE-01","Running Pro","Global Kicks > Running"
"SHOE-02","Casual Walker","Global Kicks > Lifestyle"
"TEE-01","V-Neck Tee","Basic Threads"

A few other fixes worth noting

  • Block theme asset loading: if you use block themes, you can properly disable legacy Woo styles and scripts again. That was a real pain point for performance, since Woo was force-loading assets you didn’t need. Now you have control back.
  • WordPress 6.9 compatibility: the Add to Cart button now inherits styles from the core WordPress Button block. Small fix, but it keeps your buttons from looking out of place after the next major WordPress update.
  • Plugin deactivation guard: a small change stops you from accidentally deactivating the whole WooCommerce plugin when you only meant to disable a bundled payment gateway. That has saved a few heart attacks.

What the dot release taught me

Dot releases are never glamorous. No shiny new features. But this is where the platform gets stronger. Small, targeted fixes like the one for WooCommerce hierarchical CSV imports are what keep an e-commerce site stable instead of leaving you chasing odd bugs. It pays to read the changelogs. They tell you which problems have already been solved for you.

This stuff gets complicated fast. If you’re tired of debugging someone else’s mess and just want your site to work, drop my team a line. We’ve probably seen it before.

Ever been stuck on an import that should have worked but just… didn’t? I’d like to hear about it.

author avatar
Ahmad Wael
I'm a WordPress and WooCommerce developer with 15+ years of experience building custom e-commerce solutions and plugins. I specialize in PHP development, following WordPress coding standards to deliver clean, maintainable code. Currently, I'm exploring AI and e-commerce by building multi-agent systems and SaaS products that integrate technologies like Google Gemini API with WordPress platforms, approaching every project with a commitment to performance, security, and exceptional user experience.