WooCommerce 10.7 developer update
A technical preview of what’s shipping, what’s changing, and what to test before the final release on . For the canonical developer notes and ongoing updates, see WooCommerce 10.7: what’s coming for developers.
WooCommerce 10.7 has entered its release hardening window following Feature Freeze on . Beta 2 is available for testing, with RC 1 scheduled for and the final release scheduled for .
Release cadence and what to test
Feature Freeze began on , alongside Beta 1. Beta 2 shipped on , with RC 1 planned for and general availability on .
Testing should focus on production-like datasets and high-traffic behaviours: REST API order reads, Store API product reads with embeds, cached cart/checkout flows, and extension compatibility around fulfilments and analytics exports. If you validate RC builds, the WooCommerce Beta Tester plugin is the supported path for installing release candidates.
Performance work: query reductions and cache priming
10.7 delivers some of the sharpest database query reductions seen in recent releases. HPOS order reads via /wc/v4/orders drop from 271 queries to 132 by priming caches and removing N+1 query patterns during REST API serialisation.
Checkout flows also benefit, with around a 15% reduction in total SQL queries. Cache priming is now applied consistently across product grids, linked products, and orders, which should translate into steadier response times under load and fewer edge cases where a single slow object expansion dominates a request.
On the schema side, new database indexes on woocommerce_shipping_zone_methods improve shipping zone method lookups. The Store API products endpoint now caches the Last-Modified timestamp so cache hits can skip a database query, helping headless catalog traffic and CDN-backed storefronts.
High-traffic stores also get a new woocommerce_pre_refresh_order_count_cache filter, enabling targeted opt-out when redundant order count cache refreshes become an avoidable hotspot.
Fulfilments: a real API, still marked beta
The fulfilments system receives its most substantial update to date and remains beta. The biggest practical change is support for custom shipping providers via a new wc_fulfillment_shipping_provider taxonomy, managed in a new settings screen at Shipping > Shipping Providers.
The PHP API becomes more extension-friendly with typed methods such as get_tracking_number(), set_tracking_number(), and get_shipping_provider(). Fulfilment lifecycle events are now logged automatically as order notes, grouped under a new FULFILLMENT order note group constant, which makes auditing and support workflows easier without requiring custom note creation.
For infrastructure teams and plugin authors, the data store can now be registered via woocommerce_data_stores, allowing an extension to provide a custom implementation where fulfilment data needs to live elsewhere or be synchronised with an external WMS.
Store API additions: richer product payloads and relationship embeds
Products returned by the Store API now include weight, dimensions, formatted_weight, and formatted_dimensions. Headless storefronts and block themes can render full specification data without chaining additional product meta calls.
Upsells, cross-sells, and related products are now exposed as embeddable _links with embeddable: true. A single request using ?_embed can pull related product data without a burst of follow-up calls, reducing latency and easing rate-limit pressure when building recommendation rails.
A new ?related=ID query parameter supports filtering products by relationship, which is useful for building “similar items” endpoints or merchandising tools without a bespoke query layer.
Behavioural fixes also land: draft and unpublished products now correctly return 404 on Store API single routes, and thumbnail srcset and sizes adjustments ensure the appropriate image variant is served in cart contexts.
Cart and Checkout blocks: nonce stability, privacy, and UI consistency
The cart store now fetches a fresh nonce on load and waits for it before any POST operations. This addresses 403 errors that tend to appear on aggressively cached pages, particularly where a stale nonce is served and the first write action fails.
Password-protected product descriptions are now redacted in Store API responses, reducing the risk of sensitive content leaking into headless renders or cached API responses.
Checkout presentation is tightened as payment method radio buttons are always shown, even if only one method is available, and dark mode theme styling improves through colour inheritance fixes.
Analytics export filters for customised reporting pipelines
New export hooks are available for Revenue Stats, Taxes, and Variations exports: woocommerce_report_{type}_export_columns and woocommerce_report_{type}_prepare_export_item. These enable column-level control and per-row transformations without forking WooCommerce reports.
Currency and custom filter parameters are now forwarded correctly to background export jobs. This matters for multicurrency implementations and for tooling that relies on consistent report scoping between synchronous UI previews and asynchronous export generation.
Experimental block-based email editor: groundwork for layout and extensibility
The block-based email editor continues to evolve behind a feature flag in Woo core. 10.7 lays foundations for alignfull support, which is a prerequisite for email layouts that can span the full available width when template constraints allow it.
WordPress embed cards now render featured images, titles, and excerpts instead of plain links, giving marketers usable preview cards without manual HTML. Template management also gains a “Reset to default” action for quicker recovery from broken customisations.
Two new filters expand automation and customisation: woocommerce_email_block_template_html for controlling reset template content, and woocommerce_email_editor_send_button_disabled to support auto-save workflows before sending.
Developer advisories: namespace moves and security hardening
Fulfilments namespace change
The fulfilments namespace has moved from Automattic\WooCommerce\Internal\Fulfillments to Automattic\WooCommerce\Admin\Features\Fulfillments. Any extension referencing the previous path directly should be updated before 10.7 to avoid fatal errors during autoloading or class resolution.
Security and data handling updates
XSS protection using wp_kses_post() has been extended to the v4 REST API order notes endpoint, aligning v4 with the protections already present in v1 through v3.
CSRF validation has been added to product and term ordering AJAX handlers, reducing risk around authenticated session abuse where ordering endpoints are exposed in wp-admin contexts.
Payment gateway password fields have also been corrected so values containing % characters are not corrupted, which improves reliability for gateways and integrations that store secrets containing percent-encoded material.
FAQ
When is WooCommerce 10.7 released?
The final release is scheduled for , with RC 1 scheduled for .
What performance changes matter most for high-traffic shops?
Key wins include major query reductions for HPOS order reads on /wc/v4/orders through cache priming, around a 15% SQL query reduction in checkout flows, consistent cache priming across product grids/linked products/orders, and new indexes improving shipping zone method lookups.
Do I need to change anything for the fulfilments feature?
If your code references fulfilments classes by their old namespace, you need to update from Automattic\WooCommerce\Internal\Fulfillments to Automattic\WooCommerce\Admin\Features\Fulfillments. If you are extending fulfilments storage, review the data store registration via woocommerce_data_stores.
What’s new in the Store API for headless storefronts?
Products now include weight and dimensions (plus formatted variants). Related products, upsells, and cross-sells can be embedded via _links with ?_embed, and a ?related=ID parameter supports relationship filtering. Draft and unpublished products now return 404 on single routes.
How does 10.7 reduce cart and checkout 403 errors on cached pages?
The cart store fetches a fresh nonce on load and waits for it before POST requests, preventing write actions from failing when a cached page serves a stale nonce.
Where can I follow the official developer notes for 10.7?
The ongoing developer update and timeline are tracked in WooCommerce 10.7: what’s coming for developers.

