How to bulk edit WooCommerce products
Four routes, three of them free and already installed. And one rule that matters more than which you pick.
Before anything: the rule
Take a database backup before every bulk run, and know how you would undo it.
Not a nightly backup. One taken deliberately, minutes before, because a bulk edit is the single easiest way to destroy a catalogue: one wrong column mapping sets every price to zero, and the built-in tools have no undo whatsoever. The change is applied and that is that.
Everything below assumes you have done this.
1. The built-in bulk edit
Already installed, free, and enough for a surprising number of jobs.
- Products → All Products.
- Tick the products, or tick the header box to select the page.
- Bulk actions → Edit → Apply.
- Change the fields, then Update.
What it does well: price changes including percentage increases and decreases, stock status, catalogue visibility, shipping class, tax class, status.
Where it stops:
- No descriptions, short or long.
- No images.
- No per-product values — everything selected gets the same treatment.
- Variations are not touched. A variable product's own price fields are on its variations, and this screen does not reach them. This surprises people more than anything else on this page.
- One screen at a time, so raise the per-page count first if you are doing hundreds.
The quick edit link on a single row is the same machinery for one product, and it does reach a few more fields.
2. CSV export and import
Also built in, and the right answer for anything per-product: different text for each item, bulk SKU changes, restructuring categories.
- Products → All Products → Export. Export everything, even if you plan to change three columns.
- Keep a copy of that file untouched. It is your undo.
- Edit a duplicate in a spreadsheet.
- Products → Import, upload it, and check the column mapping screen carefully.
- Tick Update existing products, or you will create duplicates of everything.
The traps, in the order people hit them:
- The ID column must survive. Lose it and the importer matches on SKU, or not at all.
- Spreadsheets mangle data. Leading zeros in SKUs disappear; long numbers become scientific notation; commas inside descriptions break naive exports. Import the CSV as text rather than double-clicking it.
- Blank does not mean "leave alone" in every column. Delete the columns you are not changing rather than blanking their cells.
- Variations export as their own rows. Do not delete them.
- Test on five products first, with a filtered CSV. Every time.
3. WP-CLI
If you have shell access, this is the fastest route for a mechanical change and the easiest to reason about, because you can see exactly what it will touch before it touches it.
wp wc product list and wp wc product update are available when
WooCommerce is active. Run the list first and read it. Then run the update.
Still no undo. The backup rule applies.
4. Plugins and the REST API
Bulk-edit plugins mostly give the built-in screen more fields and a spreadsheet-like view. They are worth it if you do this weekly; they are another plugin on a client site if you do it twice a year.
The WooCommerce REST API is the route for anything programmatic, and it is what most tools use underneath. It authenticates with WooCommerce's own keys or with a WordPress application password.
Which to pick
| The job | Use |
|---|---|
| Put every price up 10% | Built-in bulk edit |
| Mark 40 products out of stock | Built-in bulk edit |
| Change prices on variable products | CSV, or the API |
| Rewrite 300 descriptions | CSV, or the API |
| Fix categories across a catalogue | CSV |
| A change with a rule per product | CSV, or the API |
| The same change across several stores | The API |
The undo problem
Worth stating on its own, because it is the actual risk and none of the three free routes addresses it.
Built-in bulk edit: no undo. CSV import: no undo, unless you kept the original export, which is why that step is in the list above and not optional. WP-CLI: no undo.
So your undo is whatever you arranged beforehand. In practice that means a database backup, the untouched export, and a written note of what you were changing, because in an hour you will not remember which forty products you selected.
Where this product fits
Last, because on this question it belongs last: if the built-in bulk edit does your job, use it. It is free and already there.
What it is for is the case that is neither uniform nor a spreadsheet — three hundred descriptions that each need different words, across several stores, without exporting anything. An AI agent you already pay for gets tools for WooCommerce and works through the catalogue in place, with a recorded bulk run that can be undone as a unit.
That undo is the part worth comparing against the rest of this page, because it is the thing every other route on it lacks. What it refuses to do matters more than what it does when the store belongs to a client.