Visser Labs – WooCommerce Plugins

How To Bulk Edit WooCommerce Products With CSV (Full Guide)

How To Bulk Edit WooCommerce Products With CSV (Full Guide)

Your supplier just emailed: costs are going up 8% across the board, effective next week. You open your WooCommerce products list, see 1,400 SKUs staring back at you, and your stomach sinks. Editing each product individually is a two-day job. The built-in bulk edit helps a little, but it can’t do percentage-based price changes, and it times out if you select too many at once. The fix is to bulk edit WooCommerce products with CSV instead.

We’ve seen this pattern across WooCommerce stores time and again, and the answer isn’t a single bulk editor plugin. It’s a CSV round-trip that takes about 20 minutes once you know the moves. Export your catalog, edit in a spreadsheet, reimport with the importer set to “update existing only”. That loop handles any bulk edit you can imagine: prices, stock, SEO meta, categories, descriptions, supplier feeds.

This guide walks through the full workflow using Store Exporter Deluxe on the way out and Product Importer Deluxe on the way back in. You’ll get a worked 10% price increase example, the one SKU mistake that creates duplicate products, how to handle variable products, and when in-admin bulk edit is still the right tool.

Why CSV Beats In-Admin Bulk Editing

WooCommerce’s built-in bulk edit screen is fine for tiny jobs. Five products, one price change, one category swap. Once your catalog gets past a few hundred SKUs or your edits involve math, SEO fields, or supplier data, the admin screen runs out of room fast.

Here are the four scenarios where the CSV round-trip pulls ahead every time.

Percentage-based price changes

The admin bulk edit lets you set a flat price or add/subtract a fixed amount. It can’t multiply. If your supplier raised costs by 8%, or you need a 15% markdown across a category for a sale, there’s no formula input in the WooCommerce UI. In a spreadsheet, that’s one cell: =ROUND(B2*1.08, 2), dragged down the column.

SEO meta updates

The admin bulk edit screen doesn’t touch meta titles, meta descriptions, or focus keywords. Those fields live in AIOSEO, Yoast, or Rank Math, and none of them expose a usable bulk editor from the products list. CSV export pulls those fields; CSV reimport writes them back. If you just rewrote your SEO strategy and have 300 products to update, the spreadsheet is the only path that finishes this week.

Category and tag reassignment at scale

Renaming a category, merging two tag groups, or reshuffling products across collections is painful in the admin. In a spreadsheet, you use find/replace or a VLOOKUP against a mapping table and get consistent results in one pass. VLOOKUP is a spreadsheet function that looks up a value in one column and returns the matching value from another. Think of it as a bulk find-and-reassign.

Stock refreshes from supplier feeds

Suppliers send stock counts in their own CSV. Pasting supplier counts into your WooCommerce export keyed on SKU, then reimporting, is the fastest way to keep stock in sync without building an integration. You keep a copy of the “before” export as an instant rollback, which makes the whole round-trip non-destructive.

The Export-Edit-Reimport Workflow

Here’s the shape of the full loop before we go step by step.

  1. Export your products via Store Exporter Deluxe as CSV or XLSX.
  2. Edit in Excel or Google Sheets, keeping an untouched copy as your rollback.
  3. Reimport via Product Importer Deluxe with “update existing only” enabled.

You need both tools because a single plugin can’t give you this loop cleanly. An in-place bulk editor does one-shot edits in the admin and usually struggles past a few thousand rows. WooCommerce core ships a CSV product importer and exporter, but the exporter is basic and the importer lacks “update existing only” with SKU matching. You end up with duplicate products or broken variations.

Visser Labs sells Store Exporter Deluxe and Product Importer Deluxe as a bundle at $79/yr introductory ($158/yr normal). That’s cheaper than buying either tool separately from most alternatives, and they’re built to work together. For teams running multiple stores, the Agency plan at $199/yr covers unlimited sites. Every plan carries a 14-day money-back guarantee, so if the round-trip doesn’t fit your catalog you can get your money back.

Step 1: Exporting Products With Store Exporter Deluxe

This step gives you the source file for your edits. The goal is a clean CSV (or XLSX) with every field you want to change plus the SKU column intact as your match key.

Install and activate the plugin

WooCommerce Store Exporter Deluxe dashboard showing scheduled export filters for products and customer data.

Purchase Store Exporter Deluxe from Visser Labs and upload the ZIP through WordPress admin, Plugins, Add New, Upload Plugin. Activate and paste your license key on the plugin settings screen.

Go to WooCommerce, Store Export in the admin menu, then select the Products tab. This is where you choose format, fields, and filters before running the export.

Choose your format

  • CSV for lightweight edits. Opens fast, works in any spreadsheet tool, best for large catalogs where file size matters.
  • XLSX if you need cell formatting preserved (currency types, date types, text columns with leading zeros). Good for teams who want the file to open in Excel without a Text Import Wizard detour.

For most bulk edits, CSV is the right choice. Go XLSX if you have SKUs with leading zeros (like 00123) that you don’t want Excel silently stripping.

Select your fields

Store Exporter Deluxe lists every product field as a checkbox. At minimum, include:

  • Product ID
  • SKU
  • Name
  • Regular Price
  • Sale Price
  • Stock
  • Stock Status
  • Categories

If you’re editing SEO meta, tick the meta title, meta description, and focus keyword fields. If you’re rewriting copy, include Description and Short Description.

Critical: always include the SKU column. This is your re-import match key. Without it, Product Importer Deluxe can’t tell “update this existing product” apart from “create a new one”.

The WordPress dashboard, showing Store Exporter Deluxe's Product Fields section which contains a list of fields
Store Exporter Deluxe’s Product Fields section

Filter if you only need a slice

You can filter by category, stock status, or product type before exporting. If you’re only bumping prices in the “Wholesale” category, filter to that category first. Smaller file, faster import, less to go wrong.

Click Export

Run the export. Store Exporter Deluxe produces a clean CSV with every column labeled, no mystery columns, no half-broken headers.

For the full context on the export side, see Visser Labs’ full guide to exporting WooCommerce products.

Step 2: Bulk Editing In Excel Or Google Sheets

You now have your source file. Open it in Excel or Google Sheets, and before you touch anything, save a copy as catalog-YYYY-MM-DD-backup.csv. That’s your rollback if the reimport goes sideways.

Common edit scenarios

  • Price updates: use a helper column with a formula like =B2*1.10, then paste values back into the Regular Price column.
  • Stock refreshes: paste your supplier’s stock file into a new sheet, then use VLOOKUP or XLOOKUP keyed on SKU to pull their counts into your Stock column.
  • Category reassignment: find/replace within the Categories column, or build a mapping table and use VLOOKUP for bulk reassignment.
  • SEO meta updates: write or paste new meta titles and descriptions into the SEO meta columns.
  • Description rewrites: use ChatGPT or Claude to generate batch rewrites, paste into the Description column.

Worked example: bulk increase all prices by 10%

Here’s the exact recipe for a 10% catalog-wide price increase. Assume your Regular Price is column B.

  1. In a new helper column (say column Z), enter: =ROUND(B2*1.10, 2)
  2. Drag the formula down to cover every product row.
  3. Select the helper column Z, copy it, then paste values only into the Regular Price column B (in Google Sheets: Edit, Paste special, Values only; in Excel: right-click, Paste Special, Values).
  4. Delete the helper column.
  5. Save as CSV: in Google Sheets, File, Download, Comma-separated values; in Excel, File, Save As, CSV UTF-8.

The ROUND(..., 2) wrapper is important. Without it, floating-point math leaves you with prices like 19.990000000001. Two decimal places keeps the price sensible and avoids reimport warnings.

What not to touch

  • Don’t edit the SKU column. This is your match key on reimport. Changing it breaks the match.
  • Don’t edit the Product ID column. Also used for matching, and touching it can create duplicates.
  • Don’t rename the column headers. Product Importer Deluxe uses headers to map columns to WooCommerce fields. Rewriting “Regular Price” as “Price” forces you into manual mapping.

Step 3: Reimporting With Product Importer Deluxe

This is where store owners destroy their catalog if they’re careless. The single setting you need to get right is “update existing only”.

Install and activate the plugin

A screencap of the landing page of Visser Labs' WooCommerce Product Import Deluxe, a tool designed to import large quantities of product data

Purchase Product Importer Deluxe from Visser Labs and install the ZIP through WordPress admin, Plugins, Add New, Upload Plugin. Activate and paste your license key.

Go to WooCommerce, Store Import, then select Products. Upload your edited CSV.

Select “Update Existing Only” mode

This is the single most important setting in the entire workflow. “Update Existing Only” tells the importer: don’t create new products, just match on SKU and update the fields that changed. Without it, any row the importer can’t match cleanly gets created as a brand-new product. That’s how duplicate catalogs happen.

Confirm the match key

Product Importer Deluxe lets you match on SKU or Product ID. SKU is usually more resilient because IDs can shift when products are deleted and restored. If every row in your file has a SKU, use SKU as the match key.

Let intelligent column detection do its work

Product Importer Deluxe maps default WooCommerce fields (Regular Price, Sale Price, Stock, Categories, Description) automatically as long as the column headers match the original export. The columns you’ll typically need to confirm manually are custom meta fields, third-party plugin fields, and anything you’ve renamed.

Watch the import log

Product Importer Deluxe runs a real-time log as the import progresses, showing which products are matching, which fields are being written, and which rows are being skipped. Read this log. If it shows zero matches, your match key is wrong. If it shows new rows being created when you expected updates, “Update Existing Only” is off.

Run the import

Click through to run. Larger files take longer; a typical 1,000-to-2,000-row file with a handful of changed columns finishes in a few minutes on a normally-resourced WordPress host.

💡 For broader context on the reimport side, see Visser Labs’ full guide to importing WooCommerce products and the dedicated WooCommerce CSV import workflow article.

What We’ve Seen: The single most common mistake we see is store owners editing the SKU column during bulk edit, either “cleaning it up” or accidentally letting an autocorrect break it. When the SKU changes, the importer can’t match the row to the existing product, and if you’re not in “Update Existing Only” mode, it creates a duplicate product with the new SKU. We’ve seen more than one store catalog double overnight because of this. Rule: lock the SKU column before editing, or hide it entirely. Your SKU is your match key. Treat it like a primary key in a database.

Handling Variable Products In Bulk Edits

Variable products (a t-shirt with size and color options) export as a parent row plus one row per variation. Each variation has its own SKU, its own stock, and its own price. This is where bulk edits get tricky.

Match on variation SKU, not parent SKU

Each variation’s SKU is the match key for that variation row. The parent row’s SKU is the match key for the parent product only. If you try to update variation prices by editing the parent row, nothing happens on the front end. Variations override parent pricing.

Filter your spreadsheet to variation rows for variation-specific edits

If you’re bumping stock by size across 200 variations, filter your sheet to show only variation rows (usually the Product Type column contains “variation” for these rows). Apply your edit, remove the filter, save.

Common gotcha

If you edit the parent row’s Regular Price but forget the variation rows, variations keep their old prices and the parent’s price doesn’t show. Your 10% bump looks like it did nothing. Always check whether the field you’re editing lives on the parent, the variation, or both.

A pattern we see consistently with variable product bulk edits: variation rows with blank SKUs silently skip during reimport. Where every variation has a unique, consistent SKU, the bulk edit behaves the same as a simple product import. Where SKUs are missing on some variations, those rows go nowhere.

Banner promoting 'WooCommerce Import Variable Products (2 Easy Methods)' with pink gradient background and cosmetic product illustrations, including the VisserLabs logo.

For the full variation workflow, see Visser Labs’ variable product import workflow article.

Common Gotchas And How To Avoid Them

  • Preserve SKU as match key. Covered above, worth repeating. Lock the SKU column before editing.
  • Currency formatting. Excel sometimes converts prices like $19.99 into formatted currency cells. Export as raw numbers. On reimport, make sure the Regular Price column contains numbers only, no dollar signs or thousands separators.
  • Date formatting on sale dates. For Sale Price Start/End dates, use YYYY-MM-DD. Excel’s locale-based date formats (MM/DD/YYYY vs DD/MM/YYYY) can flip values during export and import. A sale that ran on 3 May becomes one that ran on 5 March.
  • Leading zeros in SKUs. SKUs like 00123 get stripped to 123 if Excel treats the column as a number. When opening a CSV, use File, Import (not double-click) and force the SKU column to Text. Or use XLSX, which preserves the type.
  • Special characters in descriptions. Curly quotes, em dashes, and non-ASCII characters can render differently after a CSV round-trip. Test with one product before reimporting 1,000.
  • Large file timeouts. If your CSV has 10,000+ products, split it into batches of 2,000 to 5,000 rows to avoid PHP timeouts. PHP timeout is the server-side limit on how long a single import can run (controlled by max_execution_time in your PHP config); large files can hit it and stop mid-import.
  • Backup first. Always export a “before” snapshot before editing. If the reimport goes wrong, you can reimport the snapshot to restore the prior state.

When To Use This Workflow (And When Not To)

The CSV round-trip is a heavy hammer. It’s not the right tool for every nail.

  • Perfect for: bulk price changes, seasonal stock refreshes, SEO meta updates, category reassignment, description rewrites, supplier feed updates.
  • Overkill for: editing five to ten products. Just use the admin.
  • Not ideal for: image updates (images need a separate upload workflow, not CSV rows), complex metadata that doesn’t map cleanly to CSV columns.
  • Use in-admin bulk edit when: you’re changing a single field on a small group of products and don’t need percentage math or SEO field access.

Honest assessment: the CSV workflow is the right tool for catalogs over a few hundred products or any edit involving math, SEO, or supplier data. Below that scale, the built-in bulk edit screen saves you the round-trip.

Frequently Asked Questions

Do I need both Store Exporter Deluxe and Product Importer Deluxe to bulk edit WooCommerce products with CSV?

Yes. One exports, one imports. Visser Labs sells them as a bundle at $79/yr introductory ($158/yr normal) that’s cheaper than buying them separately from most alternatives. See the bundle pricing page for the current offer.

Can I use WooCommerce’s built-in CSV import instead?

The built-in importer works for basic updates but lacks “update existing only” mode, intelligent column mapping, and reliable variation handling. If you’re doing regular bulk edits, the paid tools pay for themselves in saved cleanup time after one avoided duplicate-catalog incident.

What happens if my import creates duplicate products?

You likely weren’t in “Update Existing Only” mode, or your SKUs changed between export and reimport. Delete the duplicates, restore from your backup CSV, and re-run with “Update Existing Only” enabled and SKU as the match key.

Can I automate recurring bulk edits?

Partly. Store Exporter Deluxe supports scheduled exports with FTP/SFTP delivery, and Product Importer Deluxe supports remote FTP imports from a URL or file path. Pair those with an external trigger (a cron job, a Zap that fires when your supplier drops a new stock file into an SFTP folder, or a similar automation tool) and you’ve got a supplier-feed loop running without manual touches.

What format should I use, CSV or XLSX?

CSV for most catalogs; it opens fast and every spreadsheet tool handles it. XLSX if you have SKUs with leading zeros, currency fields that Excel mangles on open, or a team that prefers Excel’s native format.

Can I bulk edit products from multiple stores at once?

Not directly within a single WooCommerce instance. If you run multiple stores, the Agency plan at $199/yr covers unlimited sites, so you can run the same workflow on each store without separate licenses.

Start Running Bulk Edits With CSV

The export-edit-reimport loop is the most powerful WooCommerce workflow you’re probably not using. Once you’ve run it once, every future job to bulk edit WooCommerce products with CSV drops from a multi-day admin slog to an afternoon with a spreadsheet.

Here’s a quick recap of what we covered:

If you’re ready to bulk edit WooCommerce products with CSV the right way, get the Store Exporter Deluxe + Product Importer Deluxe bundle for $79/yr intro with a 14-day money-back guarantee.

author avatar
Katrine Villanueva

Popular articles

Share article

Add A Comment

We're glad you have chosen to leave a comment. Please keep in mind that all comments are moderated according to our privacy policy, and all links are nofollow. Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.

Your WooCommerce Data, Exported.

Get your data in and out of WooCommerce easily with Visser Labs WooCommerce Export and Import tools.

Visser Labs – WooCommerce Plugins
  • PO BOX 4362 Gumdale QLD Australia
  • ABN: 51 604 474 213
  • We're hiring remotely!
Resources