
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.
- Export your products via Store Exporter Deluxe as CSV or XLSX.
- Edit in Excel or Google Sheets, keeping an untouched copy as your rollback.
- 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

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.
Navigate to the product export 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”.
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.
- In a new helper column (say column Z), enter:
=ROUND(B2*1.10, 2) - Drag the formula down to cover every product row.
- 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).
- Delete the helper column.
- 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

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.
Navigate to the import screen
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.

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.99into 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
00123get stripped to123if 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_timein 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:
- Start with the export step and pull a clean file with SKU as your match key.
- Apply your edits in a spreadsheet using the worked 10% price example as a template.
- Reimport with “Update Existing Only” and let intelligent column detection handle the mapping.
- Handle variable products carefully by matching on variation SKU, not parent SKU.
- Watch the gotchas around currency formatting, leading zeros, and date locales.
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.










