Ecommerce

WooCommerce Product Import: Moving a Catalog in Bulk

Moving hundreds of products by hand is a waste of time. Here is how to use WooCommerce's built-in CSV importer to load a catalogue safely.

Quick answer: WooCommerce includes a built-in product CSV importer and exporter (added in WooCommerce 3.1). You prepare a spreadsheet with the required columns, map those columns in the importer UI, run the import on a staging copy first, then import on production and spot-check products, images and variations. Clean data in the CSV matters more than any plugin.

Whether you are migrating from another platform, merging suppliers’ lists, or updating prices in bulk, CSV import is the standard path. WooCommerce 3.3 is current as of early 2018, and the native importer is stable enough for most catalogues. Third-party import plugins still help with complex edge cases, but try core first.

What the built-in importer can do

From Products → Import you can:

  • Create new products from CSV
  • Update existing products when you map a unique identifier
  • Import simple and variable products (with care)
  • Bring in categories, tags, images (by URL), attributes and meta in supported columns

Export is under Products → Export, which is the easiest way to see the exact column headers WooCommerce expects.

Step 1: Export a sample (even from an empty shop)

Create one hand-built product of each type you use (simple, variable, downloadable if needed). Export it. That file becomes your template. Matching the official headers avoids silent mapping mistakes.

Keep a separate working sheet for editing and always save a UTF-8 CSV for upload.

Step 2: Learn the columns that matter

Common columns include:

  • Type (simple, variable, variation, grouped, external)
  • SKU (unique; essential for updates and variations)
  • Name, Published, Is featured?
  • Short description, Description
  • Tax status, Tax class
  • In stock?, Stock, Backorders
  • Regular price, Sale price
  • Categories, Tags (often pipe or comma separated per Woo docs)
  • Images (public URLs, multiple separated as documented)
  • Attribute columns and Meta columns as needed

For variable products you typically have a parent row (variable) plus child rows (variation) linked by SKU or parent identity following WooCommerce’s CSV rules. Read the current importer documentation for the exact parent/child linking fields in your version; guessing here causes orphaned variations.

Step 3: Clean the source catalogue

Before mapping:

  • Deduplicate SKUs
  • Normalise category names so you do not create “Shoes”, “shoes” and “SHOES”
  • Split HTML descriptions from junk from the old platform
  • Confirm price decimals and currency assumptions
  • Decide what to do with out-of-stock archive items (import as draft, private, or skip). Our note on out-of-stock products helps with the SEO side after import
  • Resize or host images where the importer can reach them over HTTPS when possible

If you are leaving Magento, Shopify or another cart, export the richest file you can, then reshape columns rather than editing inside WooCommerce one by one. Platform comparisons such as WooCommerce vs Shopify are useful when the import is part of a wider platform decision.

Step 4: Import on staging first

  1. Copy the site to staging
  2. Upload the CSV under Products → Import
  3. Map each CSV column to the WooCommerce field; save mapping if you will reuse it
  4. Run the import and download the error log
  5. Open twenty random products: prices, categories, images, attributes, variations
  6. Fix the CSV (not the UI) and re-run updates by SKU until clean

Staging protects you from a bad file publishing thousands of wrong prices on the live shop.

Step 5: Handle images carefully

The importer can pull images from URLs. Practical tips:

  • Prefer stable URLs you control
  • Watch timeouts on large files
  • Confirm featured image versus gallery order after import
  • Optimise file weight so the new catalogue does not grind mobile speed; see WordPress image optimization

If image import fails repeatedly, import products without images, then run a second pass or attach media with a dedicated process.

Step 6: Variations and attributes

Attribute taxonomy setup matters:

  • Global attributes versus custom product attributes
  • “Used for variations” flags
  • Exact spelling of option values (Blue versus blue creates duplicates)

Build one variable product manually, export it, and mirror that pattern for the rest of the file. It is slower up front and far faster than repairing a thousand broken variations later.

Step 7: Production import and freeze window

When staging looks right:

  1. Put the live shop in maintenance or pause paid ads briefly if prices could flicker
  2. Backup database and wp-content/uploads
  3. Import (or update) with the proven CSV
  4. Spot-check again on live
  5. Clear caches (plugin cache, CDN)
  6. Re-index anything your search plugin needs

If you are also changing permalinks or migrating domains, map every old product URL to its new address and set up 301 redirects before launch so product URLs do not return 404 errors and lose their rankings.

Step 8: Aftercare for SEO and merchandising

  • Generate or refresh XML sitemaps
  • Check a sample of product canonicals and schema (your SEO plugin)
  • Set up redirects from old product URLs if this import was a platform move
  • Review your SEO plugin settings for product titles, meta descriptions and indexation of thin category pages
  • Configure shipping classes if the CSV did not fully cover them, and test a few checkouts to confirm rates are calculated correctly

Keep a repeatable process

If you will import again (seasonal ranges, supplier price updates), save the column mapping, keep the cleaned master spreadsheet under version control or at least dated copies, and write a short checklist of the steps that worked. The second import should take a fraction of the time of the first. Assign one person to own the master file so changes from buying, marketing and the warehouse land in one place instead of three competing spreadsheets.

When to use a specialist import plugin

Consider a premium importer when you need:

  • Scheduled recurring feeds from suppliers
  • Very complex variation matrices
  • Delta updates from multiple files with custom business rules
  • Direct database-level performance tuning for huge catalogues

For a one-time move of a typical small or mid-size catalogue, core CSV tools plus careful spreadsheet work are enough.

FAQ

Can I update prices in bulk without duplicating products?

Yes. Export, change prices, re-import with SKU mapping set to update existing products. Test on staging first.

Why did my HTML descriptions look wrong?

Often an encoding or spreadsheet auto-formatting issue. Protect cells as text, use UTF-8 CSV, and avoid editors that strip tags.

Do I need the legacy CSV importer extension?

On current WooCommerce 3.x with the built-in importer, most shops do not. Use the Products → Import screen in admin.

How big can the file be?

Host and PHP limits apply (upload size, memory, max execution time). Split very large catalogues into batches of a few hundred or few thousand rows.

Import the spreadsheet, not the headache

WooCommerce product import is straightforward when the CSV is clean and staging has already absorbed the mistakes. Export a template, map carefully, prove variations and images on a copy, then run production with a backup and a spot-check list. If you want help moving a catalogue as part of a wider store build, we can help you turn visitors into customers with a shop that is tidy behind the scenes as well as on the front end.

About the author

Imran M

Leave a Reply

Your email address will not be published. Required fields are marked *

Ready to improve your website?

Let's build a faster, higher performing website.