How to update WooCommerce safely: before, on staging, on the live store, and if it breaks
Read the release notes, check your extensions and template copies, and back up. Update a staging copy and place a test order there. On the live store, close the checkout, back up again, update, test, then reopen. With the checkout closed, going back costs no orders.
- By
- WP Ministry
- Published
In short
- Read the release notes first. Each one says whether the release updates the database and whether it carries security fixes.
- Read the "WC tested up to" line of every extension yourself. By default, WooCommerce no longer warns about untested extensions on the Plugins screen.
- Since WooCommerce 9.9 the database update starts by itself once the files are updated. Take the backup before the plugin update.
- On the live store: Coming soon mode first, then the backup, then the update, then a test order. With the checkout closed, a restore loses no orders.
- WooCommerce's documentation allows older files on an updated database only on a staging copy, and only with a database backup that matches.
- Leave automatic updates off for WooCommerce and for payment gateways on a store that takes orders.
A WooCommerce update differs from other plugin updates in three ways. It can change the database as well as the files. Your theme may hold its own copies of WooCommerce's templates, which the update does not touch. And each extension states which WooCommerce version it was tested with.
The safe order follows from those three. Read what the release changes, check your extensions and template copies, and take a backup. Update a staging copy and place a test order there. Then repeat the same update on the live store with the checkout closed, so that going back would cost no orders.
How to safely update WordPress has the method for any update: a backup, one thing at a time, and a way back. This page covers what WooCommerce adds to it.
What makes a WooCommerce update different
| What | What it means for an update | Where you see it |
|---|---|---|
| The database | Some releases change the database as well as replacing files. Since WooCommerce 9.9 that change starts by itself, in the background, once the files are updated. | The release notes say "Database update: Yes" or "No" |
| Templates | A classic theme can keep its own copies of WooCommerce's template files. WooCommerce's files update and the copies do not. | The Templates section of the system status report |
| Extensions | A payment gateway or a shipping extension is a plugin of its own, with its own releases. Its main file names the newest WooCommerce version it was tested with. | The line "WC tested up to" |
Before you update
Step 1: Read what the release changes
WooCommerce publishes release notes for every version on its developer blog, under Changelog. The post for a release gives its date and says whether it is backwards compatible and whether it includes a database update. When a release carries security fixes, or has a known problem with another plugin, the post says so.
The notes for 11.2.0, published on October 7, 2026, show the pattern. They say "Database update: Yes" and list security fixes. Under "Additional advisories" they name a plugin whose older versions cause a fatal error with that release, and say to update it first.
The Advisories page on the same blog carries "Breaking changes, deprecations, security patches, and compatibility notices". Most are written for developers. Scan the titles for the name of anything your store uses.
Step 2: Check what each extension was tested with
An extension's main file can carry two lines for WooCommerce: "WC requires at least" and "WC tested up to". WooCommerce's developer documentation defines the second as "The latest version of WooCommerce that the plugin has been tested with."
- Extensions from the WooCommerce.com Marketplace. Go to WooCommerce, then Extensions, then My subscriptions, and read "Tested up to WooCommerce version" for each.
- Any other plugin. Open its main file, or run the command below from the folder WordPress is installed in. It prints one line per extension, ending in a version such as
WC tested up to: 11.1.
Compare the first two numbers only. Developers are asked to update the line for each new release, not for the small fix releases in between. A value older than the version you are moving to is a signal, not a verdict. WooCommerce's guide says to check for an update to that extension, and to read its release notes or contact its developer before going on.
bashgrep -H "WC tested up to" wp-content/plugins/*/*.phpStep 3: Do not wait for a warning on the Plugins screen
WooCommerce 3.2 added a check that ran before an update. The Plugins screen listed active plugins under the words "Heads up! The versions of the following plugins you're running haven't been tested with WooCommerce", followed by the new version. Much advice still says to look for it.
In current versions that check is off unless a developer switches it on. The note in WooCommerce's own code reads "Since 5.0 all versions are backwards compatible". A Plugins screen with no warning does not mean every extension was tested.
The Plugins screen now runs a different check. A plugin can declare that it does not work with a WooCommerce feature, such as High-Performance Order Storage. When one is active with that feature switched on, this notice appears: "WooCommerce has detected that some of your active plugins are incompatible with currently enabled WooCommerce features. Please review the details." Settle it before you update.
Step 4: Find outdated template copies
Go to WooCommerce, then Status. WooCommerce's guide to fixing templates says to scroll to the end of the page, to the list of templates your theme overrides. The section is headed "Templates". An outdated copy carries a warning, which the documentation gives as "version 3.5.0 is out of date. The core version is 3.7.0". The first number is the theme's copy. The second is WooCommerce's own file.
Update the theme first: WooCommerce says most theme authors fix their templates in good time. For a copy of your own in a child theme, the WooCommerce maintenance routine has the method. All of this applies to classic themes, whose templates are PHP files.
Step 5: Take a backup you could restore
WordPress's documentation says to back up the database "regularly, and always before an upgrade", and that a full restore needs both the database and the files. For a store, WooCommerce's guide names the two parts: the database, and the
wp-contentfolder.A backup counts once it has been restored somewhere. How to schedule automatic WordPress backups shows how to prove one on a staging copy. This backup is for the days of preparation. You take a second one, minutes before the live update, as described below.
Update a staging copy first
WooCommerce's guide is direct about this: "Do not test updates directly on your production site." How to set up a WordPress staging site covers making the copy and stopping it from emailing customers or taking real payments.
Step 1: Make a fresh copy
A copy from last month has last month's plugins and settings. Refresh it, then put every payment gateway on the copy in its test or sandbox mode.
Step 2: Apply the whole set of updates
On staging, WooCommerce's guide says to update WooCommerce, the extensions, the payment gateways and the theme together, because they have to work as a set. Write down every version number you end up with. That list is what you will apply to the live store.
Step 3: Let the database update finish
Go to WooCommerce, then Status. "WooCommerce database version" should show the number of the new release. If it still shows the old one, the update is waiting in the queue. The section on the database update below says how to move it on.
Step 4: Place a test order with each payment method
Go through the store as a customer would: a product page, the cart, the checkout, the payment. WooCommerce's guide to test orders says many gateways offer a sandbox or testing mode for this, and that test payments belong on a staging site. Check shipping and tax on the order, and find it under WooCommerce, then Orders.
If an order stops, WooCommerce checkout not working covers a checkout that will not load or submit. WooCommerce payment gateway errors covers a payment that is refused or not recorded.
Step 5: Check the emails
Go to WooCommerce, then Settings, then Emails. The email preview there shows each store email on desktop and mobile, and "Send a test email" sends one to an address you choose. Look at the emails a customer receives after ordering.
Step 6: Open the pages your theme overrides
Read the Templates section again, now that the new version is installed: a release can change a template that was current until today. Each path names what it draws.
cart/cart.phpis the cart andcheckout/form-checkout.phpis the checkout form. Open each of those pages and use it.
If something fails on staging, the live store has not changed. Stay on the version you have, and work out which part failed. When it is an extension, how to find a plugin conflict has the method.
Update the live store
Step 1: Pick the hour with the fewest orders
Go to Analytics, then Orders. With a single day selected, the chart can be set to show that day by the hour. Look at a few ordinary days and choose the quietest hour.
Step 2: Write down what is installed
Note the version of WooCommerce and of every extension. If you have to go back, you need these numbers.
bashwp plugin list --fields=name,status,version,update_version,auto_updateStep 3: Close the checkout
WooCommerce's guide says to set the live site to Coming soon mode for the update, "so customers do not check out while files and database changes are running". Go to WooCommerce, then Settings, then Site visibility. Select "Coming soon" and switch on "Apply to store pages only". Visitors now see a landing page in place of the shop, the cart and the checkout, and the rest of the site stays open. Logged in, you still see the store.
Step 4: Back up the database, now
This is the backup that matters, because no customer can place an order after it. Take a full backup with your backup tool, or export the database with the command below. It writes the file to your home folder, outside the folder the site is served from: a database file inside the site could be downloaded by anyone who guessed its name. Note the time. When the update is settled, download the file and delete it from the server, because it holds every customer's details.
bashwp db export ~/before-woocommerce-update.sqlStep 5: Update to the version you tested
On the Plugins screen, select "update now" under WooCommerce and wait for it to finish. That installs the newest release, which may be newer than the one you tested. With WP-CLI you can name the version. Replace
11.2.0with yours.bashwp plugin update woocommerce --version=11.2.0Step 6: Finish the database update
On WooCommerce 9.9 and later the database update is already queued. This command runs every pending one at once, without waiting for the queue. It ends with a line that begins "Success:" and gives the database version. If nothing was waiting, it says "No updates required". Without WP-CLI, check the database version under WooCommerce, then Status, as you did on staging.
bashwp wc updateStep 7: Update the extensions, the gateways and the theme
Apply the versions from your staging list. WooCommerce's guide puts these after WooCommerce itself, in the same sitting.
Step 8: Place an order
Do this before you reopen: the guide says to test the live store "before turning off Coming soon mode". It asks for a test order using "an appropriate test payment method or low-risk workflow". Read your payment provider's rules before paying with your own card: Stripe's testing documentation says its services agreement prohibits testing in live mode with real payment details, and WooCommerce's guide to test orders says to keep test payments on a staging site. Where the provider's rules rule it out, go through the checkout as far as the payment step without paying, confirm that each gateway's settings show a live connection with test mode off, and watch the first real orders after reopening reach "Processing". If you did place a test order, check that it appears under WooCommerce, then Orders, and that its email arrives. Then delete it, so that it is not shipped or counted in your figures.
Step 9: Reopen the store
Set Site visibility back to "Live". WooCommerce's documentation notes that a server cache can keep showing the landing page for a while. If it does, clear the cache at your host.
Orders placed between the backup and a restore
A backup holds the orders that existed when it was made. Restore it, and every order placed afterwards is gone from the store, though the customers paid.
How to avoid the problem. The order of the steps above does it: checkout closed, then the backup, then the update, then the test, then reopening. While the checkout is closed, no customer can order, so the backup stays current. If the test order fails, you put back the earlier files and that database, and lose nothing but the test order. WooCommerce's guide says the same: "keep the site out of checkout, restore from your backup if needed, and troubleshoot the issue on staging before trying again on production."
This only holds until you reopen. Do not reopen until the test order has gone through. And before any restore, look at WooCommerce, then Orders, for anything newer than the backup.
If the fault shows after you have reopened. Orders have arrived, and a restore would remove them. Work in this order.
- Close the checkout again.
- Look for a repair that leaves the database alone: an update to one extension, an earlier version of one extension, or a template copy brought up to date. The checkout-down runbook works through these.
- If only a restore will do, export every order placed since the backup first.
The command below writes those orders, with their customers, addresses and items, to a file in your home folder. --user is the ID of an administrator, which WooCommerce's commands require. --after is the time of the backup, on the store's own clock. Set it a few minutes early: an extra order in the file does no harm. The command returns at most 100 orders.
wp wc shop_order list --user=1 --after=2026-10-08T02:00:00 --format=json > ~/orders-since-backup.jsonWithout WP-CLI, go to Analytics, then Orders, set the dates, and use the "Download" link above the table for a CSV. Keep the "New order" emails the store sent you as well.
After the restore, enter each order again: go to WooCommerce, then Orders, and select "Add order". Match each one to its payment in your payment provider's dashboard.
If the update breaks the store
Keep the checkout closed, place a test order, and note where it stops. The fault may lie in an extension or in a template copy and not in WooCommerce itself. The failed update runbook covers a store that will not load at all.
Going back to the previous version
WordPress.org keeps every earlier release of WooCommerce. They are under "Previous Versions" on the plugin's Advanced View, with this warning: "Previous versions of plugins may not be secure or stable. They are not recommended for use on production websites."
The command below replaces WooCommerce's files with those of the version you name, which is the number you wrote down before the update. It does not change the database. --force is needed: without it WP-CLI answers "Plugin already installed" and does nothing.
wp plugin install woocommerce --version=11.1.2 --forceWhy the database may not match
The update changed the database to suit the new code. Installing older files does not change it back. WooCommerce's documentation says: "Reverting to an older version can cause data inconsistencies if the database schema has changed."
Its instruction is to "Use this approach only on a staging environment, and restore a matching database backup before activating the older version." It calls restoring that backup "essential". So the documentation offers a live store no way back by files alone.
| Where you are | What to do |
|---|---|
| The checkout has stayed closed since the backup | Put back the earlier files, then the database from that backup. They match, and no orders are lost. |
| The store has reopened and orders have arrived | Repair it without a restore if you can. If you cannot, export the newer orders, then restore. |
Going back by files alone is least risky when the release notes said "Database update: No", because that release left the database as it was. WooCommerce's instruction to try it on staging first still applies.
Putting the database back
The next command overwrites the database with the file you exported. Every order, customer and setting saved since that export is lost, which is why it belongs to the case where the checkout stayed closed. Run it after the older files are in place. Run it first, and the newer code would begin updating the restored database again.
wp db import ~/before-woocommerce-update.sqlThen read WooCommerce, then Status. "WooCommerce version" and "WooCommerce database version" should both show the earlier release.
After going back by files alone, do not run wp wc update. On the older version it finds nothing to do, and it records the older version's number as the database version without undoing anything.
Stay on an older version only until a fixed one is out.
The "WooCommerce database update required" notice
WooCommerce's update guide describes a notice that appears after some updates, with two buttons: "Update WooCommerce Database" and "Learn more about updates". It says to have a backup before you select the first. A "View progress" link then opens Scheduled Actions, and a "WooCommerce database update complete" message confirms the end.
Since WooCommerce 9.9 you may never see it. The release notes for 9.9 say all stores "will now run database updates and migrations automatically in the background", and that developers can opt out with a filter. So on a current store the notice appears only where someone has switched the automatic update off.
Either way, check that the update finished. Under WooCommerce, then Status, "WooCommerce database version" shows the new release. If it does not, run wp wc update, or go to WooCommerce, then Status, then Tools, and use "Update database".
Version numbers, and how often to update
WooCommerce's release calendar says there is "no distinction between major and minor releases in our versioning system". A move from 11.1 to 11.2 is a full release, like a move from 10.9 to 11.0. Releases "typically occur on a 5-week cycle". Template files can change in any of them.
| Kind | Example | What to do |
|---|---|---|
| A release | 11.1 to 11.2, or 10.9 to 11.0 | Read the notes, update staging, test, then update the live store |
| A fix release, which WooCommerce calls a dot release | 11.1.1 to 11.1.2 | Read the notes. If it repairs something your store uses, or closes a security hole, apply it soon. |
WooCommerce's guide says: "A monthly cadence works well for most stores." It then gives the exception: "Update sooner than your regular schedule if a release includes a security fix or resolves broken functionality your store depends on."
Falling far behind has a cost of its own. WooCommerce's security policy says ordinary security fixes are published for the latest version only. Only for the most severe, a CVSS score of 9 or more, does it patch the last 21 releases, and versions older than that receive nothing. WooCommerce's own extensions are tested against the latest release series and the one before it.
To take a fix release and nothing larger, WP-CLI has --patch:
wp plugin update woocommerce --patchAutomatic updates for WooCommerce
WordPress can update any plugin by itself. On the Plugins screen, "Enable auto-updates" in a plugin's row switches it on for that plugin. WordPress's documentation says these updates run twice a day, that the site emails the result, and that you should be able to go back to a previous version of the site before you enable them.
WooCommerce's update guide does not mention automatic updates. Every step it lists is one an automatic update skips: the backup, the staging copy, Coming soon mode and the test order. On a current version the database update then follows by itself. The result is new files and a changed database, at an hour you did not choose, with the checkout open and no backup taken first.
Leave them off for WooCommerce, and for payment gateways, when any of these is true:
- The store takes orders most days.
- The theme overrides WooCommerce's templates.
- An extension or a gateway comes from a third party.
- Nobody would place a test order the same day.
They can be the lesser risk on a store that would otherwise go months without an update. Pair them with frequent database backups, and read the email WordPress sends.
Switching them off does not rule out every automatic update. For one security patch in September 2021, WooCommerce said automatic updates "began rolling out" to "all stores running impacted versions".
wp plugin auto-updates status woocommercewp plugin auto-updates disable woocommerce switches them off. On a plugin where they are already off, it ends with an error line that can be ignored.
If you would rather hand this over, our WooCommerce maintenance service is the Store care plan: updates are tested on a staging copy first, checkout and payment are tested after every update, and order data is backed up more often.
Common questions
Will updating WooCommerce delete my orders or products?
No. An update replaces the plugin's files. Products, orders and settings are in the database, and WooCommerce's documentation notes that even deleting the plugin leaves that data in place. What loses orders is restoring an older backup of the database, which is why the checkout is closed before the backup is taken.
Should I update WooCommerce or its extensions first?
WooCommerce's guide updates WooCommerce first, then the extensions, the theme and the payment gateways, all in one sitting. The release notes can make an exception. When they name a plugin that must be updated before WooCommerce, do that one first.
Can I skip several versions and go straight to the latest?
Yes. WooCommerce runs every pending database update in turn, however many versions you have passed over. More changes arrive at once, so the staging test matters more, and there are release notes to read for each version in between.
Is it safe to roll back WooCommerce if the update goes wrong?
Not by replacing the files alone on a live store. WooCommerce's documentation says an older version on a changed database can cause data inconsistencies, and tells you to revert only on staging, after restoring a database backup that matches. On a live store, restore the files and the database together from a backup taken while the checkout was closed.
- Cost guideWooCommerce maintenance cost: why a store costs more, and what the extra should buy
- ResourceWooCommerce sale readiness checklist: Black Friday or any big sale
- Error fixHow to fix WooCommerce payment gateway errors
- ResourceWooCommerce checkout is down: a runbook
- Error fixHow to fix a WooCommerce checkout that is not working
- GuideWooCommerce filter URLs indexed in Google: ?orderby, ?filter_ and add-to-cart addresses, and what to do

