WooCommerce 10.8 is beta is now live! Time to test!
This post is an overview of the features, updates, fixes, and advisories present in the beta release of WooCommerce 10.8. We encourage either downloading the latest zip or using the WooCommerce Beta Tester plugin to test-drive the upcoming release. Please add feedback directly to this post, join us on Slack, or create a discussion on GitHub.
Release Schedule:
- π§ͺ WooCommerce 10.8 beta is available for testing
- Final Release β May 19, 2026
- See updates
Hey folks, on May 4th, we kicked-off our Beta ahead of the release of WooCommerce 10.8 As we begin the testing phase, and get the release ready, we wanted to share some spoilers and document any updates to the expected release timeline.
Check back here for more updates ahead of the WooCommerce 10.8 release, scheduled for May 19, 2026.
Whatβs coming in 10.8
Orders REST API now guards against type mismatches
The Orders REST endpoint in 10.8 will reject PUT updates when the persisted order type isn’t shop_order, instead of silently coercing them. This is a correctness fix for data integrity, but a notable behavior change to validate (#64050).
If your extension or integration has been updating subscriptions or other custom order types through the orders endpoint, those calls will now return a rejection. We recommend running through your test suite against 10.8 beta and updating any code that relied on the old, more permissive behavior to use the appropriate endpoint for the order type in question.
A new product.published webhook topic
10.8 adds a product.published webhook topic, giving extensions and external systems a clean signal when a product transitions to published status (#63555).
This is useful for catalog sync, search indexing, downstream automation, and any workflow that previously had to poll or listen for broader product update events and filter for the publish transition. Existing product.created and product.updated webhooks continue to behave as they do today.
Performance: bounded filter caches and leaner draft order flows
Layered navigation and related caches are now capped by default to protect wp_options from unbounded growth under bot-driven filter exploration. A new filter, woocommerce_product_filter_cache_max_entries, controls the cap (default 1000, set to 0 for uncapped behavior) (#64039).
Draft checkout flows also avoid redundant DELETE queries when line items are cleared before the order exists, trimming unnecessary SQL during checkout sessions (#63890). Broader performance work continues across admin and storefront paths in this release.
Transactional email continues to mature
Work on the block-based email editor and transactional email pipeline continues, with refinements to the email renderer, template sync behavior, coupon-code flows with integration hooks, and REST/schema touchpoints for fulfillments and notes. This release also continues to lay groundwork for richer extensibility in the email editor ahead of broader rollout.
Shipping, blocks, and the long tail
10.8 includes a substantial volume of work across shipping partner suggestions and guided flows, cart and checkout block robustness (including emoji and DOM edge cases), classic cart template safety with filtered products, and reliability fixes aligned with WordPress 7.0. Watch the changelog for the full set.
Experimental features
GraphQL feature flag registration aligned with WordPress loading rules: For sites and extensions using the dual-code GraphQL infrastructure, feature flag registration has been deferred to rest_api_init to avoid early textdomain loads (#64332). This brings registration timing in line with WordPress loading expectations and resolves a class of warnings. The GraphQL dual code feature can now be explicitly enabled; however, due to this being WIP, we suggest not experimenting with it quite yet. Read more about the work in progress here (#63772).
Developer advisories
Orders REST API behavior change: As noted above, PUT requests to the Orders REST endpoint will now reject nonβshop_order order types (#64050). If you maintain an extension that updates subscriptions or other custom order types, please re-test against 10.8 beta and migrate any affected code paths to the correct endpoint.
Security fix for guest fulfillment authorization: 10.8 includes a security fix for an authorization issue affecting guest order fulfillments over the REST API (#64130). The previous permission check compared get_current_user_id() to customer_id; for guests, both values were 0, which caused the check to evaluate true universally. Sites exposing fulfillment REST data should plan to upgrade promptly as part of normal patching.
Monorepo: pnpm 10: Contributors working in the WooCommerce monorepo should align their local tooling; the repo has moved from pnpm 9 to pnpm 10 with supply-chain-oriented settings (#63964). This doesn’t affect store runtime, only contributor and CI environments.
API Changes
Store API and Cart/Checkout API
extensionCartUpdateper-address control:overwriteDirtyCustomerDatanow accepts an object ({ shipping_address?: boolean, billing_address?: boolean }) in addition to a boolean, giving extensions finer-grained control over which address fields get overwritten. (#64032)- Checkout evidence validation: Prevents unintended order completion for orders without checkout context. (#62843)
- Cached filter combinations cap: Limits transient growth from bot enumeration of filter URLs. (#64039)
- Filter query var normalization: Equivalent filter combinations (e.g.,
filter_color=red,bluevsblue,red) now share the same cache entry. (#64041)
REST API
One behavior change to validate before upgrading clients:
- Checkout-draft orders excluded from default order queries: REST API order queries with
status=anyno longer return checkout-draft orders. Consumers relying on draft orders appearing in unfiltered listings will need to explicitly passstatus=checkout-draft. (#63743)
Schema and field updates:
- Tax clarity in Orders REST schema: Schema descriptions now clarify tax inclusion/exclusion, and
total_taxis added to inline refund data. (#63692) - Null meta handling in POST/PUT endpoints: Missing handling for null meta keys/values is fixed. (#63971)
- New
product.publishedwebhook topic: Fires when a product is published β useful for integrations that previously had to listen toproduct.updatedand filter. (#63555)
Security hardening:
- PUT orders no longer convert other order types:
PUT /wc/v(2|3)/orders/{id}will no longer convert non-shop_orderrecords into orders. (#64050) - Guest fulfillment endpoint hardening: Unauthenticated access to guest order fulfillments via REST API has been closed. (#64130)
- V4 products endpoint scope tightening: Sensitive fields (downloads, COGS, purchase note) are now stripped for users without product management capabilities. (#63895)
- Store API
relatedparameter: No longer allows arbitrary product IDs to bloat transients. (#63846)
Database updates
Schema changes: WooCommerce 10.8 includes four database migrations that run automatically on update. No action is required, but if you maintain client stores or extensions that touch order meta, analytics options, or transactional emails, here’s what’s running under the hood:
wc_update_1080_backfill_email_template_sync_metaβ Backfills template sync metadata onto pre-existing block email posts so the new divergence detector can safely classify legacy installs as in-sync, core-updated-uncustomized, or core-updated-customized after future plugin updates. (#64364)wc_update_1080_migrate_analytics_import_optionβ Migrates the scheduled analytics import preference to its renamed option, restoring scheduled imports for stores that updated through the 10.5.0 option rename. (#63808)wc_update_1080_slim_orders_meta_key_indexβ Slims themeta_key_valueindex onwp_wc_orders_metato track only themeta_keycolumn, reducing index size and improving write performance on the HPOS orders meta table. (#63897)wc_update_1080_create_review_order_pageβ Creates the new Review Order page used by the updated checkout flow. (#64628)
As always, back up your database before updating and test on staging first β especially if you have a large wp_wc_orders_meta table, since the index rebuild is the most resource-intensive of the four.
Data integrity and fixes
- Periodic cleanup for place-order debug logs: Adds cleanup for debug log files and dangling order meta the existing batch processor didn’t cover. (#63756)
- Duplicate
wc_customer_lookuprows fix: Prevents duplicates when a guest registers via delayed account creation on the order confirmation page. (#63989) - HPOS cache cross-bleed fix: Resolves data cache bleed between order data store subclasses. (#64067)
- Coupon lookup case sensitivity: Restores case-insensitive coupon lookups on databases with case-sensitive collations. (#63800)
- Stale lookup table data on scheduled sales: Scheduled sale actions no longer leave lookup table data stale. (#63856)
- Sale event scheduling on direct meta writes: Sale events now get scheduled when sale date meta is written directly, so sales activate on time for importers and integrations that bypass WooCommerce CRUD. (#64140)
- Suppressed duplicate-key errors on table creation: Harmless duplicate key database errors logged during table creation on update are now suppressed. (#64188)
Changelog
View the full changelog.
Leave a Reply