I have shipped enough WooCommerce releases on enough Tuesday mornings to know which ones are quiet and which ones are not. A version that lands on a Tuesday and ships a hotfix on a Wednesday is rarely quiet. WooCommerce 10.9.0 went out on June 23, and 10.9.1 followed less than twenty-four hours later. That alone is worth a paragraph of context before we get to the features.
The headline list — transactional email logging in core, a leaner Store API checkout, a refreshed admin shell, expanded MCP abilities — is genuinely useful. Several of these are things our clients have asked for explicitly. But the speed of the dot release is a reminder of what we have been telling people for two decades: when you are running real revenue through WordPress, you do not deploy the .0 to production on day one. You let it bake.
Here is what is actually in this pair of releases, and what I would do with each piece.
What is actually new in 10.9.0
WooCommerce 10.9.0 was published on the WooCommerce Developer Blog on June 23, 2026, with Brian Coords as release manager. The release notes credit 464 pull requests from 65 contributors. It is backwards compatible and requires a database update on activation.
The four things I want to call out:
- Transactional email logging in core. Email send attempts are now reviewable from WooCommerce > Status > Logs, including whether the send succeeded and any local failure details. You no longer need a separate logging plugin in front of the WordPress mailer just to confirm that the order confirmation actually left the building.
- A leaner Store API checkout. The Store API no longer persists a draft order as early in the checkout flow for new sessions. As the pre-release notes put it, draft creation is deferred closer to place-order time, which reduces orphaned checkout draft rows for shoppers who never complete an order.
- Admin shell refresh. The header got fresh polish and tighter alignment with the WordPress design system, smaller-screen dashboard states received targeted fixes, modals were unified across admin, and the task list reminder bar was removed from most Woo admin pages. Setup guidance still lives in the dashboard and activity panel.
- Email editor that respects your customizations. The block-based email editor can now detect core template updates and help you apply them without wiping your branding. There is auto-apply for unmodified templates, update indicators in the email list and editor, a change-summary endpoint, selective apply, undo, and a three-way diff for customized templates.
On the agent side, 10.9.0 ships the rebuild of canonical WooCommerce domain abilities for product and order operations, with extensions gaining read-only access to subscriptions, payment account details, shipping rules, product add-ons, gift cards, automation workflows, and marketing status. That continues the work outlined in the May post on canonical WooCommerce abilities.
The variation image galleries, color swatches and shopper lists features I have written about in recent weeks are also part of this release, sitting behind feature toggles. The block-based product editor beta is now formally deprecated ahead of removal in 11.0, with one-click revert paths in place.
And then 10.9.1 the next day
About a day after the GA release, the team published WooCommerce 10.9.1. It is not a security update. It is a backwards compatibility fix.
10.9.0 added a required get_entry_count() method to the product feed FeedInterface. That broke third-party implementations that implemented the interface without that method — most visibly, older versions of the WooCommerce Stripe Payment Gateway extension. 10.9.1 removes the requirement from the shared interface and keeps the method on the concrete JsonFileFeed class instead, restoring compatibility for extensions that had not yet shipped an update.
One interface method, one day on production, hundreds of stores throwing fatals on the gateway integration. This is exactly the kind of thing the WordPress.org twenty-four-hour release cooldown was designed to absorb — and exactly the reason we still stage every Woo release internally before letting it touch a checkout we care about.
Why it matters for WordPress and WooCommerce people
Three implications for anyone running production stores.
First, the email logging change is the kind of feature that pays for itself the first time a customer claims they never received their order confirmation. If you have ever spent an afternoon installing WP Mail Logging, reproducing a checkout, and screen-sharing with a host’s SMTP team, you know what I mean. Now it is one click in Status > Logs, which means it is also one click for the support agent who has never opened a developer tool.
Second, the deferred draft order behavior in the Store API is a real database win on busy stores. Every browser that started a checkout and bailed used to leave a draft row behind. On stores doing tens of thousands of checkouts per day, that is meaningful pressure on wp_posts and on whatever cleanup job has to scan it later. Combined with the Action Scheduler 4.0 cleanup work coming in 11.0, the cumulative effect on database hygiene over the summer is real.
Third, the 10.9.1 interface fix is a useful case study in why we keep WooCommerce updates on a staged calendar, not on auto-update. The interface change is a perfectly reasonable refactor in isolation. It is also exactly the kind of change that breaks an extension you have running on a client site that you do not actively monitor. The WordPress.org cooldown saved a lot of stores from a fatal on Tuesday afternoon. It will not always save the next one.
What I would do (or not do) about it
If you manage a single Woo store on your own host, install 10.9.1 (not 10.9.0) in a staging environment this week, run your full checkout matrix against it, and promote when you are happy. The fix in 10.9.1 is the version you actually want in production.
If you manage a fleet of stores, do three things. One: gate auto-updates to skip x.y.0 releases and only apply x.y.1 or later. Two: audit every store running a payment gateway that has not been updated this quarter — Stripe, of course, but also any private or legacy gateway you maintain. Three: turn on the new email logging on at least your highest-volume store and use it. The first time a chargeback hinges on whether a confirmation actually sent, you will be glad the log exists.
If you are still on the block-based product editor beta, this is the moment to plan your revert. 10.9 is the deprecation window. 11.0 on July 28 is when the package, the route, the menu entry and the toggle all come out. Build the time into your sprint.
And if you maintain any extension that ever implemented FeedInterface: the public surface is back to what you remember, but read the 10.9.1 notes and the linked pull request before you ship your next update so you align with the new boundary.
None of this is dramatic. That is the point. WooCommerce does not have to be dramatic to keep winning the long game — it just has to keep landing useful, reversible changes on a predictable cadence, and being honest when one of them misses. This week, both of those held.
Last modified: June 25, 2026
United States / English
Slovensko / Slovenčina
Canada / Français
Türkiye / Türkçe