WooCommerce 11.2.0 Pre-release notes

Beta

WooCommerce 11.2 is coming soon

This release is now available for testing. Review the highlights below, test the beta, and share feedback before the final release.

Highlights

  • Withdraw emails are configurable
  • Blocks have even more styling options
  • Product CSV importers now much by GTIN and more
  • Beta available now
  • Release week: October 06, 2026
  • Feedback requested

Row matching and cleanup improvements for Product CSV importer

Product CSV importer matches by global unique id’s. With “Update existing products” enabled, the importer now matches rows by GTIN, UPC, EAN, or ISBN when no ID or SKU is present. Match order is ID, then SKU, then Global Unique ID. A non-blank identifier that matches nothing skips the row instead of creating a product, and a match with a different product type is refused, so an update cannot silently change a product’s type.

Import cleanup no longer runs site-wide orphan deletes for variations, post meta, and term relationships. Those added over a minute to small imports on large catalogs and could remove unrelated data, and cleanup now removes only the temporary placeholder products created by that import. (#68392, #68090, #67940)

Date fields in Additional Checkout API

The additional checkout fields API now supports date fields, allowing extensions and developers to collect information such as birthdays and preferred delivery dates through the Checkout block.

Date fields use the browser’s native date picker, including the familiar controls available on mobile. Shoppers enter dates using their browser’s locale, while emails and order details display them using the site’s date format.

Developers can restrict the dates shoppers choose using fixed limits or periods relative to today. For example, a store could allow preferred delivery dates from tomorrow through the next 30 days. These limits apply in the Checkout block and My Account forms. (#68143, #68083, #68048)

Configurable emails

WooCommerce now includes configurable emails for order withdrawal requests, acknowledging customers and notifying merchants when a request is submitted. Store owners can manage both emails from WooCommerce > Settings > Emails, including recipients, additional content, previews, and whether each notification is enabled.

Merchants can now tailor withdrawal communications to their brand and processes, choose who receives notifications, and disable messages they do not need. This creates a more relevant customer experience while giving store owners greater control over their flows and voice. (#67799)

Pump up the styling

Several blocks have been updated to include more styling options. These styles are added on top of the styles that were already supported by those blocks. They can be used by themes to customize the look and feel of a store and they can be overridden by users via global styles (Appearance > Editor > Styles > Blocks) or directly in each block instance.

Product Image — border style support. (#68342)

Product Quantity — border and box shadow styles, also applied to the Cart quantity selector. (#68148)

Product Quantity — border radius styles. (#68000)

Product Quantity — text and background color styles. (#68040)

Product Filters — sticky positioning support. (#68256)

Chips — typography, padding and border radius styles. (#68105)

Developer Advisories

PhotoSwipe error messages no longer include failed image URLs
The %url% placeholder is no longer replaced with the failed image’s source. A custom errorMsg containing %url% will render that token literally after upgrading. (#68888)

Date filters now use the store’s local day for orders and products
wc_get_orders() and wc_get_products() now read a date string like 2026-07-20 as a day in the store’s timezone instead of UTC. Product queries change on every store; order queries only on stores still keeping orders as posts. (#67903, #67827)

Store API cart-session failure responses omit cart headers
A failure loading the cart session now returns a 500 with no Cart-Token or Cart-Hash. Clients must treat missing headers as an unavailable cart rather than a new one. (#67920)

Product attributes can now be deleted and recreated in one operation
wc_delete_attribute() unregisters the taxonomy immediately instead of at the end of the request, so a slug like pa_color can be recreated right away. Code that still reads the attribute after deletion must treat it as missing. (#68212)

Removal of experimental abandoned cart recovery and Agentic Checkout APIs
Both default-off experiments are gone, including the wc/agentic/v1 routes with no replacement endpoint. The 11.2 database update cancels queued recovery actions and drops the wc_email_unsubscribes table. (#67726, #67914)

Changes to settings and email registration
register_wp_admin_settings moves from admin_init priority 10 to 999, so extensions adding settings pages or email classes during admin_init are no longer too late. An un-prioritized remove_action() on it now silently does nothing. (#67718).

Changes to webhook validation for trashed and restored posts
WC_Webhook::is_valid_post_action() now derives the resource from the post ID instead of a request global, ending cross-resource deliveries like a trashed coupon firing product.deleted. A variable product trashed during a front-end request now fires one delivery per variation. (#68208)

Product archive pagination argument changes
Starting in WooCommerce 11.2, the default pagination arguments for non-shortcode product archives on classic themes will use the base and format structure expected by WordPress’s paginate_links() function. (#68116)

Sequential coupon order changes
With sequential discounts enabled, coupons of equal priority and item limit now apply in the order the customer entered them rather than lowest-amount-first. Because each coupon calculates from the price the previous one left, cart totals can shift. (#68030)

The admin order editor no longer accepts negative line item quantities
The order item AJAX endpoints now reject quantities below the minimum, and woocommerce_quantity_input_min_admin gains an add context plus server-side enforcement. Returning '' to remove the minimum no longer works — return a numeric floor instead. (#67921)

Classic product templates now show parent categories first
single-product/meta.php passes a new breadcrumb orderby to wc_get_product_category_list(), turning “Cameras, Electronics” into “Electronics, Cameras”. The woocommerce_product_meta_category_orderby filter restores the old order. (#67633)

Click here for the full list of developer advisories

Custom product category display types are normalized on save
The admin form now runs display_type through sanitize_key() instead of esc_attr(), so Custom_Grid is stored as custom_grid. Any comparison against an uppercase key stops matching once a category is saved.

Legacy product widgets use lookup data for sales and rating ordering
The Products and Top Rated Products widgets now sort from wc_product_meta_lookup rather than total_sales and _wc_average_rating post meta. Stale lookup rows can change widget order even when the post meta is current.

HTML filtering in checkbox descriptions and widget labels
wp_kses_post() now filters checkbox tooltip_html and the number, select, textarea and checkbox labels in WC_Widget::form(). Custom controls, scripts or event-handler attributes embedded there get stripped.

Query hook changes in customer and review report totals
The reviews and customers totals endpoints no longer fire pre_get_comments, comments_pre_query, users_pre_query or found_users_query, and comments_clauses now receives one grouped per-rating query rather than one per rating.

Blueprint exports no longer include payment settings
Payments is gone from the export options and the deprecated ExportWCPaymentGateways class now returns an empty step, so provisioning workflows need a manual gateway setup step after import.

Cart and Checkout blocks use a fixed-width order summary column and a wider two-column breakpoint
The sidebar becomes a fixed 360px flex column instead of 35%, and the is-large two-column threshold moves from 700px to 920px of container width, so custom CSS keyed to percentages or a 700px media query will misalign.

API Changes

REST API
Store API
Additional Checkout Fields API

Database Changes

  • wc_update_11201_invalidate_analytics_reports_cache (#67626)
  • wc_update_11201_migrate_tax_lookup_order_items (#67896)
  • wc_update_11202_reset_refund_returning_customer_markers (#67713)
  • wc_update_11203_normalize_stock_notification_emails (#68386)
  • wc_update_1120_cleanup_inherited_variation_images (#68389)
  • wc_update_1120_delete_surface_cart_checkout_note (#68088)
  • wc_update_1120_migrate_stock_notifications_alpha_constant (#64490)
  • wc_update_1120_remove_abandoned_cart_recovery (#67726)

Test WooCommerce 11.2

Install the WooCommerce Beta Tester plugin, switch to the Beta channel, and update to 11.2.0-beta.1. Please read our Beta Testing documentation for more info.


Leave a Reply

Your email address will not be published. Required fields are marked *