=== WooCommerce ===
Contributors: automattic, woocommerce, mikejolley, jameskoster, claudiosanches, rodrigosprimo, peterfabian1000, vedjain, jamosova, obliviousharmony, konamiman, sadowski, wpmuguru, royho, barryhughes-1, claudiulodro, tiagonoronha, ryelle, levinmedia, aljullu, nerrad, joshuawold, assassinateur, haszari, mppfeiffer, nielslange, opr18, ralucastn, tjcafferkey, danielwrobert, patriciahillebrandt, albarin, dinhtungdu, imanish003, karolmanijak, sunyatasattva, alexandrelara, gigitux, danieldudzic, samueljseay, alexflorisca, opr18, tarunvijwani, pauloarromba, saadtarhi, bor0, kloon, coreymckrill, jorgeatorres, leifsinger, neosinner
Tags: online store, ecommerce, shop, shopping cart, sell online
Requires at least: 7.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 11.2.1
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Everything you need to launch an online store in days and keep it growing for years. From your first sale to millions in revenue, Woo is with you.

== Description ==

[WooCommerce](https://woocommerce.com/woocommerce/) is the open-source ecommerce platform for WordPress.

Our core platform is free, flexible, and amplified by a global community. The freedom of open-source means you retain full ownership of your store’s content and data forever.

Whether you’re launching a business, taking brick-and-mortar retail online, or developing sites for clients, use WooCommerce for a store that powerfully blends content and commerce.

- **Create beautiful, enticing storefronts** with [themes](https://woocommerce.com/product-category/themes/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) suited to your brand and industry.
- **Increase revenue** with an optimized [shopping cart experience](https://woocommerce.com/checkout-blocks/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) that converts.
- **Customize product pages in minutes** using modular [product blocks](https://woocommerce.com/document/woocommerce-blocks/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).
- Showcase physical and digital goods, product variations, custom configurations, instant downloads, and affiliate items.
- Sell [subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), [bookings](https://woocommerce.com/products/woocommerce-bookings/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), or [memberships](https://woocommerce.com/products/woocommerce-memberships/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), with our developer-vetted extensions.
- **Rise to the top of search results** by leveraging [WordPress’ SEO advantage](https://www.searchenginejournal.com/wordpress-best-cms-seo/).
- **Build on a platform that scales.** Get flexible ecommerce for [high-volume stores](https://woocommerce.com/high-volume-stores/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= ALL THE TOOLS YOU NEED TO SELL =

Built-in tools and popular integrations help you efficiently manage your business operations. Many services are free to add with a single click via the optional [Setup Wizard](https://woocommerce.com/document/woocommerce-setup-wizard/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

- **Choose how you want to get paid**. Conveniently manage payments from the comfort of your store with [WooPayments](https://woocommerce.com/payments/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) (Available in the U.S., U.K., Ireland, Australia, New Zealand, Canada, Spain, France, Germany, and Italy). Securely accept credit cards, mobile wallets, bank transfers, and cash thanks to [100+ payment gateways](https://woocommerce.com/product-category/woocommerce-extensions/payment-gateways/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) – including [Stripe](https://woocommerce.com/products/stripe/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), [PayPal](https://woocommerce.com/products/woocommerce-gateway-paypal-checkout/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), and [Square](https://woocommerce.com/products/square/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).
- **Configure your shipping options**. Print USPS labels right from your dashboard and even schedule a pickup with [WooCommerce Shipping](https://woocommerce.com/products/shipping/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) (U.S.-only). Connect with [well-known carriers](https://woocommerce.com/product-category/woocommerce-extensions/shipping-methods/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) such as UPS and FedEx – plus a wide variety of delivery, inventory, and fulfillment solutions for your locale.
- **Simplify sales tax**. Add [WooCommerce Tax](https://woocommerce.com/products/tax/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) or [similar integrated services](https://woocommerce.com/product-category/woocommerce-extensions/tax?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) to make automated calculations a reality.

= Grow your business, add features, and monitor your store on the go =

WooCommerce means business. Keep tabs on the performance metrics most important to you with a powerful and flexible central dashboard built into WooCommerce.

Expand your audience across marketing and social channels with [Google Ads](https://woocommerce.com/products/google-ads/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), [HubSpot](https://woocommerce.com/products/hubspot-for-woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), [Mailchimp](https://woocommerce.com/products/mailchimp-for-woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), and [Facebook](https://woocommerce.com/products/facebook/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) integrations. You can always check out the in-dashboard [Marketing Hub](https://woocommerce.com/document/marketing-hub/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) for fresh ideas and tips to help you succeed.

Enhance store functionality with hundreds of free and paid extensions from the [WooCommerce Marketplace](https://woocommerce.com/products/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing). Our developers [vet each new extension](https://woocommerce.com/document/marketplace-overview/#section-6?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) and regularly review existing extensions to maintain Marketplace quality standards. We are actively [looking for products that help store builders create successful stores](https://woocommerce.com/document/marketplace-overview/#section-2?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

Manage your store from anywhere with the free WooCommerce [mobile app](https://woocommerce.com/mobile/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) (Android and iOS). Spoiler alert: Keep an ear out for the slightly addictive "cha-ching" notification sound each time you make a new sale!

= Own and control your store data – forever =

With [WooCommerce](https://woocommerce.com/woocommerce/), your data belongs to you. Always.

If you opt to share [usage data](https://woocommerce.com/usage-tracking/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) with us, you can feel confident knowing that it’s anonymized and kept secure. Choose to opt-out at any time without impacting your store.

Unlike hosted ecommerce solutions, WooCommerce store data is future-proof; you’re free to export all your content and take your site to any platform you choose. No restrictions.

= Why developers choose (and love) WooCommerce =

Developers can use [WooCommerce](https://woocommerce.com/woocommerce/) to create, customize, and scale a store to meet a client’s exact specifications, making enhancements through extensions or custom solutions.

- Leverage [hooks and filters](https://woocommerce.com/document/introduction-to-hooks-actions-and-filters/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) to modify or create functionality.
- Integrate virtually any service using a robust [REST API](https://developer.woocommerce.com/docs/getting-started-with-the-woocommerce-rest-api/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) and webhooks.
- Design and build custom content blocks with React.
- [Inspect and modify](https://developer.woocommerce.com/docs/category/extension-development/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) any aspect of the core plugin code.
- Speed up development with a lightning-fast [CLI](https://developer.woocommerce.com/docs/category/wc-cli/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

The core platform is tested rigorously and often, supported by a dedicated development team working across time zones. Comprehensive documentation is updated with each release, empowering you to build exactly the store required.

= Be part of our growing international community =

WooCommerce has a large, passionate community dedicated to helping merchants succeed – and it’s growing fast.

There are [WooCommerce Meetups](https://woocommerce.com/meetups/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) in locations around the world that you can attend for free and even get involved in running. These events are a great way to learn from others, share your expertise, and connect with like-minded folks.

WooCommerce also has a regular presence at WordCamps across the globe – we’d love to meet you.

= Contribute and translate =

WooCommerce is developed and supported by Automattic, the creators of WordPress.com and Jetpack. We also have hundreds of independent contributors, and there’s always room for more. Head to the [WooCommerce GitHub Repository](https://github.com/woocommerce/woocommerce?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) to find out how you can pitch in.

WooCommerce is translated into multiple languages, including Danish, Ukrainian, and Persian. Help localize WooCommerce even further by adding your locale – visit [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= Connection to WooCommerce.com =

You can connect your store to [WooCommerce.com](https://woocommerce.com/) to manage your subscriptions on WooCommerce Marketplace and receive product updates without leaving WordPress admin. Connection also enables installation of purchased products right from WooCommerce.com and streamlines access to technical support. If you’d like to learn about what data is gathered and how it is used, please refer to our [Privacy Policy](https://automattic.com/privacy/).

== Frequently Asked Questions ==

= Where can I find WooCommerce documentation and user guides? =

For help setting up and configuring WooCommerce, please refer to [Getting Started](https://woocommerce.com/documentation/plugins/woocommerce/getting-started/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) and the [New WooCommerce Store Owner Guide](https://woocommerce.com/guides/new-store/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

For extending or theming WooCommerce, see our [documentation](https://github.com/woocommerce/woocommerce/tree/trunk/docs), as well as the [Plugin Developer Best Practices](https://github.com/woocommerce/woocommerce/blob/trunk/docs/extension-development/extension-development-best-practices.md).

= Where can I get help or talk to other users about WooCommerce Core? =

If you get stuck, you can ask for help in the [WooCommerce Support Forum](https://wordpress.org/support/plugin/woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) by following [these guidelines](https://wordpress.org/support/topic/guide-to-the-woocommerce-forum/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), reach out via the [WooCommerce Community Slack](https://woocommerce.com/community-slack/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing), or post in the [WooCommerce Community group](https://www.facebook.com/groups/advanced.woocommerce?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) on Facebook.

= Where can I get help for extensions I have purchased from the WooCommerce Marketplace? =

For assistance with paid extensions from the WooCommerce Marketplace: first, review our [self-service troubleshooting guide](https://woocommerce.com/document/woocommerce-self-service-guide/). If the problem persists, kindly log a support ticket via [our helpdesk](https://woocommerce.com/my-account/create-a-ticket/). Our dedicated Happiness Engineers aim to respond within 24 hours.

= I’m having trouble logging in to WooCommerce.com – what now? =

First, troubleshoot common login issues using this helpful [step-by-step guide](https://woocommerce.com/document/log-into-woocommerce-com-with-wordpress-com/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing). Still not working? [Get in touch with us](https://woocommerce.com/contact-us/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= Will WooCommerce work with my theme? =

Yes! WooCommerce will work with any theme but may require some additional styling. If you’re looking for a theme featuring deep WooCommerce integration, we recommend [Storefront](https://woocommerce.com/storefront/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= How do I update WooCommerce? =

We have a detailed guide on [How To Update WooCommerce](https://woocommerce.com/document/how-to-update-woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= My site broke – what do I do? =

Start by diagnosing the issue using our helpful [troubleshooting guide](https://woocommerce.com/documentation/get-help/troubleshooting-get-help/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

If you noticed the error after updating a theme or plugin, there might be compatibility issues between it and WooCommerce. If the issue appeared after updating WooCommerce, there could be a conflict between WooCommerce and an outdated theme or plugin.

In both instances, we recommend running a conflict test using [Health Check](https://woocommerce.com/document/troubleshooting-using-health-check/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) (which allows you to disable themes and plugins without affecting your visitors) or troubleshooting the issue using a [staging site](https://woocommerce.com/document/how-to-test-for-conflicts/#section-3?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing).

= Where can I report bugs? =

Report bugs on the [WooCommerce GitHub repository](https://github.com/woocommerce/woocommerce/issues?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing). You can also notify us via our support forum – be sure to search the forums to confirm that the error has not already been reported.

= Where can I request new features, themes, and extensions? =

Request new features and extensions and vote on existing suggestions on our official [feature request board](https://woocommerce.com/feature-requests/woocommerce?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing). Our Product teams regularly review requests and consider them valuable for product planning.

= WooCommerce is awesome! Can I contribute? =

Yes, you can! Join in on our [GitHub repository](https://github.com/woocommerce/woocommerce/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) and follow the [development blog](https://developer.woocommerce.com/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) to stay up-to-date with everything happening in the project.

= Where can I find REST API documentation? =

Extensive [WooCommerce REST API Documentation](https://developer.woocommerce.com/docs/apis/rest-api/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) is available.

= My question is not listed here. Where can I find more answers? =

Check out [Frequently Asked Questions](https://woocommerce.com/document/frequently-asked-questions/?utm_medium=referral&utm_source=wordpress.org&utm_campaign=wp_org_repo_listing) for more.

== Installation ==

= Minimum Requirements =

* PHP 7.4 or greater is required (PHP 8.0 or greater is recommended)
* MySQL 5.5.5 or greater, OR MariaDB version 10.1 or greater, is required
* WordPress 7.0 or greater
* (Recommended) WordPress [memory limit](https://woocommerce.com/document/increasing-the-wordpress-memory-limit/) of 256 MB or greater.
* (Recommended) [HTTPS](https://woocommerce.com/document/ssl-and-https/) support.

= Automatic installation =

Automatic installation is the easiest option -- WordPress will handle the file transfer, and you won’t need to leave your web browser. To do an automatic install of WooCommerce, log in to your WordPress dashboard, navigate to the Plugins menu, and click “Add New.”

In the search field type “WooCommerce,” then click “Search Plugins.” Once you’ve found us,  you can view details about it such as the point release, rating, and description. Most importantly of course, you can install it by! Click “Install Now,” and WordPress will take it from there.

= Manual installation =

Manual installation method requires downloading the WooCommerce plugin and uploading it to your web server via your favorite FTP application. The WordPress codex contains [instructions on how to do this here](https://wordpress.org/support/article/managing-plugins/#manual-plugin-installation).

= Updating =

Automatic updates should work smoothly, but we still recommend you back up your site.

If you encounter issues with the shop/category pages after an update, flush the permalinks by going to WordPress > Settings > Permalinks and hitting “Save.” That should return things to normal.

= Sample data =

WooCommerce comes with some sample data you can use to see how products look; import sample_products.xml via the [WordPress importer](https://wordpress.org/plugins/wordpress-importer/). You can also use the core [CSV importer](https://woocommerce.com/document/product-csv-importer-exporter/?utm_source=wp%20org%20repo%20listing&utm_content=3.6) or our [CSV Import Suite extension](https://woocommerce.com/products/product-csv-import-suite/?utm_source=wp%20org%20repo%20listing&utm_content=3.6) to import sample_products.csv

== Changelog ==

= 11.3.0-beta.1 2026-10-26 =

**WooCommerce**

* Fix - Add the missing space between sentences in the footer of back-in-stock notification emails. [#69812](https://github.com/woocommerce/woocommerce/pull/69812)
* Fix - Align the customer stock notification admin screens with the order screens: even page gutters, a full-width action dropdown, rounded meta box corners, and a right-aligned submit button. [#68851](https://github.com/woocommerce/woocommerce/pull/68851)
* Fix - Allow JavaScript detection to work with nonce-based Content Security Policies. [#69811](https://github.com/woocommerce/woocommerce/pull/69811)
* Fix - Allow mobile zoom in the Core Profiler without triggering automatic input zoom. [#68171](https://github.com/woocommerce/woocommerce/pull/68171)
* Fix - Allow the Order Fulfillments drawer to be scrolled with the mouse wheel on desktop. [#69634](https://github.com/woocommerce/woocommerce/pull/69634)
* Fix - Allow turning off "Stock notifications" for a product that has never had the setting changed. [#69497](https://github.com/woocommerce/woocommerce/pull/69497)
* Fix - Always apply the offline payment methods' "Enable for shipping methods" setting at checkout, including on requests that reference an order. [#68976](https://github.com/woocommerce/woocommerce/pull/68976)
* Fix - Analytics: add a Status > Tools tool, plus an inbox note pointing to it, that finds and re-imports orders whose partial-then-full refunds were counted twice in the Revenue report's returns. [#66505](https://github.com/woocommerce/woocommerce/pull/66505)
* Fix - Analytics: fix the custom date range calendar reading out the wrong date to screen reader users. [#68514](https://github.com/woocommerce/woocommerce/pull/68514)
* Fix - Analytics: typed custom dates now follow the format shown in the field hint, so day-first locales get the right dates. [#69701](https://github.com/woocommerce/woocommerce/pull/69701)
* Fix - Analytics: typed dates in the historical data import and advanced date filters now work in Czech, Croatian and other locales. [#69745](https://github.com/woocommerce/woocommerce/pull/69745)
* Fix - Analytics report exports no longer lose rows or skip the download email when their batches finish out of order. [#68955](https://github.com/woocommerce/woocommerce/pull/68955)
* Fix - Apply the full coupon discount and no discount tax to VAT-exempt orders. [#69441](https://github.com/woocommerce/woocommerce/pull/69441)
* Fix - Apply the offset parameter when listing webhooks through the REST API, in wc/v1, wc/v2, and wc/v3. [#68499](https://github.com/woocommerce/woocommerce/pull/68499)
* Fix - Avoid a duplicate Inter or Cardo font in the editor font picker in Coming Soon mode when the theme already provides that font. [#69670](https://github.com/woocommerce/woocommerce/pull/69670)
* Fix - Checkout block: keep the collapsible order summary expandable by mouse and keyboard before the container width has been measured. [#68531](https://github.com/woocommerce/woocommerce/pull/68531)
* Fix - Checkout block: stop Space scrolling the page and Enter submitting the form when toggling the collapsible order summary. [#68531](https://github.com/woocommerce/woocommerce/pull/68531)
* Fix - Check the order notes query ability permission against the actual order type. [#69956](https://github.com/woocommerce/woocommerce/pull/69956)
* Fix - Customer Account block: display WP default avatar for logged-in users that don't have an avatar [#68832](https://github.com/woocommerce/woocommerce/pull/68832)
* Fix - Disable the Mini-Cart checkout button and show a loading subtotal while a quantity change or other cart update is in progress. [#69792](https://github.com/woocommerce/woocommerce/pull/69792)
* Fix - Email editor: applying a template update no longer duplicates a block or restores a block the merchant deleted. [#69007](https://github.com/woocommerce/woocommerce/pull/69007)
* Fix - Email editor: template updates listed as applying automatically are now applied, and blocks you edited wait for your decision. [#69057](https://github.com/woocommerce/woocommerce/pull/69057)
* Fix - Ensure customer email verification and guest order linking use the address confirmed during a password reset or key confirmation. [#68787](https://github.com/woocommerce/woocommerce/pull/68787)
* Fix - Ensure Order Fulfillments REST API requests operate on the fulfillment and order identified by the route. [#69564](https://github.com/woocommerce/woocommerce/pull/69564)
* Fix - Erase back-in-stock sign-ups made under a customer's previous account email when their personal data is erased. [#69498](https://github.com/woocommerce/woocommerce/pull/69498)
* Fix - Escape the order status tooltip in the orders list as an attribute, so quotes in a status label no longer break its markup on WordPress 7.2. [#70192](https://github.com/woocommerce/woocommerce/pull/70192)
* Fix - Exclude child cart items from interactive Add to cart button counts; extensions declare them with the new Store API `parent_item_key` field and `woocommerce_store_api_cart_item_parent_item_key` filter. [#69204](https://github.com/woocommerce/woocommerce/pull/69204)
* Fix - Explain My Subscriptions update failures caused by WordPress or PHP requirements, and keep Try again from reloading the page. [#69818](https://github.com/woocommerce/woocommerce/pull/69818)
* Fix - Featured Category: remove unnecessary request from the editor [#68929](https://github.com/woocommerce/woocommerce/pull/68929)
* Fix - Fix a fatal error on the legacy Extensions page when WooCommerce.com categories can't be loaded. [#69599](https://github.com/woocommerce/woocommerce/pull/69599)
* Fix - Fix a fatal error when applying a coupon to a refund or to a custom order type that has no customer ID or billing email. [#69625](https://github.com/woocommerce/woocommerce/pull/69625)
* Fix - Fix alignment of the cookies consent checkbox in the Reviews Form [#68696](https://github.com/woocommerce/woocommerce/pull/68696)
* Fix - Fix an accessibility issue where the Enter key didn't open links in Payments settings badge popovers. [#69451](https://github.com/woocommerce/woocommerce/pull/69451)
* Fix - Fix analytics previous year comparisons around 29th February: chart days no longer shift by a day, to date ranges compare against the same calendar dates a year earlier, and previous period day charts line up across a DST change. [#68497](https://github.com/woocommerce/woocommerce/pull/68497)
* Fix - Fix Analytics report exports losing each other's progress when running at the same time, which left an export stuck and its download email unsent. [#68742](https://github.com/woocommerce/woocommerce/pull/68742)
* Fix - Fix an error that stopped some draft coupons from being saved. [#69010](https://github.com/woocommerce/woocommerce/pull/69010)
* Fix - Fix a server error on pages whose URL carries a malformed rest_route parameter. [#69015](https://github.com/woocommerce/woocommerce/pull/69015)
* Fix - Fix cart and checkout crashes, and shipping charged for an incomplete address, when an extension recalculates the cart from an address field. [#69129](https://github.com/woocommerce/woocommerce/pull/69129)
* Fix - Fix Cart and Checkout templates and pages showing unsaved changes in the editor when nothing was edited. [#66116](https://github.com/woocommerce/woocommerce/pull/66116)
* Fix - Fix classic cart Undo when the site uses Referrer-Policy: no-referrer. [#68704](https://github.com/woocommerce/woocommerce/pull/68704)
* Fix - Fix default arrow contrast and disabled styling in Product Gallery and Product Collection. [#69029](https://github.com/woocommerce/woocommerce/pull/69029)
* Fix - Fix downloads of local product files with spaces in their filenames. [#68948](https://github.com/woocommerce/woocommerce/pull/68948)
* Fix - Fixed order notes and trash metadata not being cleaned up when an HPOS order is restored from the trash and its previous status is no longer valid. [#68569](https://github.com/woocommerce/woocommerce/pull/68569)
* Fix - Fix emailed Analytics report exports never arriving on stores with a persistent object cache. [#68621](https://github.com/woocommerce/woocommerce/pull/68621)
* Fix - Fix fatal TypeError in Product Price Filter when prices are entered excluding tax and displayed including tax with standard tax class. [#68999](https://github.com/woocommerce/woocommerce/pull/68999)
* Fix - Fix legacy admin reports that filter, group or sort on an unqualified `post_status`, `post_parent` or `post_type` column returning no data under HPOS, by translating those bare tokens to their `wc_orders` equivalents. [#67015](https://github.com/woocommerce/woocommerce/pull/67015)
* Fix - Fix order date filters on non-UTC stores for dates with fractional seconds or hour-only time zone offsets. [#69752](https://github.com/woocommerce/woocommerce/pull/69752)
* Fix - Fix PHP warnings in the Product Categories List block when listed categories only have hidden or out-of-stock products. [#69181](https://github.com/woocommerce/woocommerce/pull/69181)
* Fix - Fix product category lists filtered by custom data showing no categories or leaving some out. [#68544](https://github.com/woocommerce/woocommerce/pull/68544)
* Fix - Fix some cases where output from other plugins could corrupt file downloads. [#69549](https://github.com/woocommerce/woocommerce/pull/69549)
* Fix - Fix the Analytics date range calendar showing English weekday headers on translated sites. [#68516](https://github.com/woocommerce/woocommerce/pull/68516)
* Fix - Fix the back-in-stock notification email preview, which failed to load in the email settings. [#69501](https://github.com/woocommerce/woocommerce/pull/69501)
* Fix - Fix the Cart, Checkout and Mini-Cart blocks showing the editor preview cart on the storefront when another plugin loads the block editor scripts. [#68754](https://github.com/woocommerce/woocommerce/pull/68754)
* Fix - Fix the Cart and Checkout blocks showing an outdated cart, such as the wrong shipping method, on sites that delay scripts. [#69667](https://github.com/woocommerce/woocommerce/pull/69667)
* Fix - Fix the customer filter on the Back in Stock notifications list table returning the wrong notifications. [#68813](https://github.com/woocommerce/woocommerce/pull/68813)
* Fix - Fix WC_Download_Handler: use the actual request protocol instead of a hardcoded HTTP/1.1 for range-download status headers, and default download errors to 403 Forbidden instead of 404 Not Found. [#67973](https://github.com/woocommerce/woocommerce/pull/67973)
* Fix - Format discount and refund amounts as negative prices with localized markup. [#66703](https://github.com/woocommerce/woocommerce/pull/66703)
* Fix - Guard every `as_has_scheduled_action()` call behind a helper that falls back to `as_next_scheduled_action()`, preventing a fatal error when another plugin loads a pre-3.3.0 copy of Action Scheduler. [#68523](https://github.com/woocommerce/woocommerce/pull/68523)
* Fix - Hide downloadable product files from public media listings and attachment pages. [#70199](https://github.com/woocommerce/woocommerce/pull/70199)
* Fix - Hide Mini Cart and Add to Cart with Options template parts from the block inserter, including instance variations. [#68856](https://github.com/woocommerce/woocommerce/pull/68856)
* Fix - Hide Product Filters overlay contents from tab navigation when the overlay is closed [#69928](https://github.com/woocommerce/woocommerce/pull/69928)
* Fix - Hide the product category display type setting when a block theme is active. [#69713](https://github.com/woocommerce/woocommerce/pull/69713)
* Fix - Hide the “Content” section in the Email tab of the email editor sidebar, as it only listed the email body. [#69337](https://github.com/woocommerce/woocommerce/pull/69337)
* Fix - Improve keyboard support in the Add tax modal on the admin order screen, including page navigation and keeping the selected tax visible when moving through results. [#68215](https://github.com/woocommerce/woocommerce/pull/68215)
* Fix - Improve labels for saved payment methods without card details in Checkout and My Account. [#68731](https://github.com/woocommerce/woocommerce/pull/68731)
* Fix - Increase Product Filter Chips swatch outline contrast so swatches are easier to see against similar background colours. [#69691](https://github.com/woocommerce/woocommerce/pull/69691)
* Fix - Introduce native swiping for the Product Gallery block. [#69066](https://github.com/woocommerce/woocommerce/pull/69066)
* Fix - Invalidate the coupon code lookup cache when a coupon is unpublished or deleted outside the WooCommerce CRUD (bulk edit, WP-CLI, direct wp_update_post or wp_delete_post calls), so draft, pending, private or trashed coupons can no longer be applied from a stale cache entry on sites with a persistent object cache. [#66900](https://github.com/woocommerce/woocommerce/pull/66900)
* Fix - Keep a cell's first item on the same line as its "+N more" badge in Analytics report tables, so rows carrying a badge are no longer taller than rows without one. [#67765](https://github.com/woocommerce/woocommerce/pull/67765)
* Fix - Keep a logged-in customer's VAT exemption after a failed payment, so the retry isn't charged tax. [#69615](https://github.com/woocommerce/woocommerce/pull/69615)
* Fix - Keep back-in-stock notifications marked as sent when a customer clicks unsubscribe in an email they already received. [#69499](https://github.com/woocommerce/woocommerce/pull/69499)
* Fix - Keep block data- attributes working for the rest of a request when another plugin errors while an email is being built. [#69148](https://github.com/woocommerce/woocommerce/pull/69148)
* Fix - Keep customer names used in email Reply-to headers on a single line and sanitize Store API address fields like classic checkout. [#68802](https://github.com/woocommerce/woocommerce/pull/68802)
* Fix - Keep erased back-in-stock sign-ups distinct from customer opt-outs and leave sent ones marked as sent. [#69829](https://github.com/woocommerce/woocommerce/pull/69829)
* Fix - Keep extension SlotFills mounted when repositioning the Checkout order summary. [#70060](https://github.com/woocommerce/woocommerce/pull/70060)
* Fix - Keep new and scheduled variable products in attribute filters when optimized lookup table updates are on. [#68482](https://github.com/woocommerce/woocommerce/pull/68482)
* Fix - Keep order withdrawal requests rate limited when an order already has a withdrawal request. [#68685](https://github.com/woocommerce/woocommerce/pull/68685)
* Fix - Keep recommended extensions selected, named, and correctly ordered when the onboarding wizard installs or retries them. [#69106](https://github.com/woocommerce/woocommerce/pull/69106)
* Fix - Keep shipping method costs that have more decimals than the store precision intact in the shipping zone method modal, both when the modal opens and when the merchant leaves the cost field, so saving no longer rounds the stored rate. [#68805](https://github.com/woocommerce/woocommerce/pull/68805)
* Fix - Keep the Analytics default order status filters applying after "Reset defaults" or a save that leaves a status list unchanged. [#69095](https://github.com/woocommerce/woocommerce/pull/69095)
* Fix - Keep the decimals of flat rate fee percentages and minimum or maximum fees on stores that use a comma as the decimal separator. [#69294](https://github.com/woocommerce/woocommerce/pull/69294)
* Fix - Keep the heading alignment set in the email editor in sent block emails, instead of forcing headings to the left. [#70178](https://github.com/woocommerce/woocommerce/pull/70178)
* Fix - Keep unverified back-in-stock sign-ups from being cleaned up right after the verification email is resent. [#69506](https://github.com/woocommerce/woocommerce/pull/69506)
* Fix - Keep WooCommerce.com extension updates visible when an update check fails, instead of hiding them for 12 hours. [#69160](https://github.com/woocommerce/woocommerce/pull/69160)
* Fix - Let merchants skip setup when the site's REST API fails, and point them to Site Health to find the cause. [#69721](https://github.com/woocommerce/woocommerce/pull/69721)
* Fix - Load right-to-left styles on admin pages that load their styles on demand, such as the setup task list. [#69331](https://github.com/woocommerce/woocommerce/pull/69331)
* Fix - Localize product weight and dimensions in Quick Edit. [#68065](https://github.com/woocommerce/woocommerce/pull/68065)
* Fix - Log expected back-in-stock processing skips, such as a product that is no longer in stock, at info level instead of error. [#69828](https://github.com/woocommerce/woocommerce/pull/69828)
* Fix - Make bundled pattern names available for translation in the editor. [#69697](https://github.com/woocommerce/woocommerce/pull/69697)
* Fix - Make Status > Tools > Clear transients delete every product's cached data and cached reports, not just a few fixed entries. [#69862](https://github.com/woocommerce/woocommerce/pull/69862)
* Fix - Make the Analytics settings "Reset defaults" button restore the filtered default order statuses instead of a hardcoded list. [#68688](https://github.com/woocommerce/woocommerce/pull/68688)
* Fix - Migrate Product Collection filtering to the shared Product Filters QueryClauses implementation. [#68935](https://github.com/woocommerce/woocommerce/pull/68935)
* Fix - Minor visual enhancements to the Export and Import product screens [#69258](https://github.com/woocommerce/woocommerce/pull/69258)
* Fix - Name the restocked products in the back-in-stock notification admin notice, show it only to the store manager who restocked them, and fix the wording of the unverified sign-up deletion setting. [#69813](https://github.com/woocommerce/woocommerce/pull/69813)
* Fix - Only enqueue the Mini-Cart view script module when the block is interactive, so it no longer loads on the cart and checkout pages, and prevent the iAPI cart store from firing a malformed cart fetch retry loop when its interactivity state is not registered. [#66951](https://github.com/woocommerce/woocommerce/pull/66951)
* Fix - Only show additional checkout fields with saved values, from any checkout flow. [#68780](https://github.com/woocommerce/woocommerce/pull/68780)
* Fix - Open the classic settings page from the "Edit" action for emails the block email editor does not support, instead of showing an error. [#69538](https://github.com/woocommerce/woocommerce/pull/69538)
* Fix - Order Confirmation section headings now use the theme's heading size instead of a fixed 24px [#67743](https://github.com/woocommerce/woocommerce/pull/67743)
* Fix - Pass order statuses to the woocommerce_order_query_args filter without the wc- prefix again when the orders-query ability runs. [#69954](https://github.com/woocommerce/woocommerce/pull/69954)
* Fix - Point back-in-stock email links to the store front end when WordPress is installed in a subdirectory. [#69507](https://github.com/woocommerce/woocommerce/pull/69507)
* Fix - Pre-select the payment method a merchant assigned to an admin-created order on its Pay for order page, instead of the first enabled method. [#68751](https://github.com/woocommerce/woocommerce/pull/68751)
* Fix - Preselect the customer's default saved payment method in block checkout. [#69266](https://github.com/woocommerce/woocommerce/pull/69266)
* Fix - Preserve customer IDs in the `woocommerce_json_search_found_customers` filter on order edit screens. [#36437](https://github.com/woocommerce/woocommerce/pull/36437)
* Fix - Preserve error types in Store API logs for compatibility with extensions. [#70230](https://github.com/woocommerce/woocommerce/pull/70230)
* Fix - Preserve plain-text address values across Store API checkout round trips. [#69161](https://github.com/woocommerce/woocommerce/pull/69161)
* Fix - Preserve product context in nested queries and Single Product blocks. [#68533](https://github.com/woocommerce/woocommerce/pull/68533)
* Fix - Preserve product rating review links and remove obsolete attributes from product block templates. [#66287](https://github.com/woocommerce/woocommerce/pull/66287)
* Fix - Preserve the unpaid order cancellation schedule when saving unchanged hold stock settings. [#68310](https://github.com/woocommerce/woocommerce/pull/68310)
* Fix - Prevent Cart line items from overflowing in very narrow displays [#68912](https://github.com/woocommerce/woocommerce/pull/68912)
* Fix - Prevent checkout retries from marking cancelled, unpaid orders as paid. [#69265](https://github.com/woocommerce/woocommerce/pull/69265)
* Fix - Prevent duplicate or missing products in the POS catalog when products share a creation date or are added while it builds. [#69259](https://github.com/woocommerce/woocommerce/pull/69259)
* Fix - Prevent duplicate remote inbox update actions from accumulating while an existing action is running or waiting asynchronously. [#68558](https://github.com/woocommerce/woocommerce/pull/68558)
* Fix - Prevent excessive memory usage in Products settings by loading Shop page choices on demand with a limited search. [#69068](https://github.com/woocommerce/woocommerce/pull/69068)
* Fix - Prevent failed Store API cart requests from syncing cart data to pending orders. [#68023](https://github.com/woocommerce/woocommerce/pull/68023)
* Fix - Prevent inaccurate product refunds and Analytics reports when refunding orders through the REST API. [#69302](https://github.com/woocommerce/woocommerce/pull/69302)
* Fix - Prevent missing products in the POS catalog when products are trashed, unpublished, or hidden from POS while it builds. [#69259](https://github.com/woocommerce/woocommerce/pull/69259)
* Fix - Prevent password-protected variable products from being added to the cart through their variation IDs. [#69590](https://github.com/woocommerce/woocommerce/pull/69590)
* Fix - Prevent Product Collection behavior from affecting blocks outside the collection. [#70031](https://github.com/woocommerce/woocommerce/pull/70031)
* Fix - Prevent Product Filters price slider thumbs from causing horizontal overflow in scrollable filter panels. [#68746](https://github.com/woocommerce/woocommerce/pull/68746)
* Fix - Prevent product pages from crashing when an attribute archive link is unavailable. [#69543](https://github.com/woocommerce/woocommerce/pull/69543)
* Fix - Prevent the cart, checkout and mini-cart blocks from crashing when the cached cart data in localStorage is corrupt. The persistence layer now drops the bad cache and re-fetches instead of throwing. [#68372](https://github.com/woocommerce/woocommerce/pull/68372)
* Fix - Prevent WooCommerce block types from being registered twice when a product description is rendered before init. [#68522](https://github.com/woocommerce/woocommerce/pull/68522)
* Fix - Process scheduled sales in batches to reduce memory use and allow stores with large backlogs to make progress. [#68016](https://github.com/woocommerce/woocommerce/pull/68016)
* Fix - Product Collection: show no products in the On Sale collection when no products are on sale, instead of every product. [#69695](https://github.com/woocommerce/woocommerce/pull/69695)
* Fix - Products REST and Store API: return the correct products when the on_sale (or Store API related) filter is combined with include or exclude. [#69432](https://github.com/woocommerce/woocommerce/pull/69432)
* Fix - Record the skipped Core Profiler extensions step when no extensions are selected. [#69613](https://github.com/woocommerce/woocommerce/pull/69613)
* Fix - Record WooCommerce Shipping Terms of Service acceptance after installing and activating the extension. [#68708](https://github.com/woocommerce/woocommerce/pull/68708)
* Fix - Reload the classic checkout when the browser restores a copy rendered before the shopper logged in, instead of leaving it stuck on a spinner after the order review request is rejected. [#68758](https://github.com/woocommerce/woocommerce/pull/68758)
* Fix - Remove margin from Product Specifications inner paragraphs [#69150](https://github.com/woocommerce/woocommerce/pull/69150)
* Fix - Remove unused blockGap support from Product Item Label and Product Description blocks [#68947](https://github.com/woocommerce/woocommerce/pull/68947)
* Fix - Remove WooCommerce.com store alerts from the Home screen once WooCommerce.com stops publishing them. [#69747](https://github.com/woocommerce/woocommerce/pull/69747)
* Fix - Rename the "Guest sign-up" stock notification setting to "Require login" and correct its tip: guests see a login prompt instead of the sign-up form. [#69866](https://github.com/woocommerce/woocommerce/pull/69866)
* Fix - Respect Product Button margins without adding the parent block spacing. [#69583](https://github.com/woocommerce/woocommerce/pull/69583)
* Fix - Restore browser autofill when checkout address suggestions fail or return no matches. [#69101](https://github.com/woocommerce/woocommerce/pull/69101)
* Fix - Restore cross-sells and upsells in the Mini Cart and keep them up to date as shoppers add or remove products. [#62721](https://github.com/woocommerce/woocommerce/pull/62721)
* Fix - Restore product galleries, filters, Mini-Cart updates, and product option validation on WordPress 7.2. [#70087](https://github.com/woocommerce/woocommerce/pull/70087)
* Fix - Restore the "Check" button on the "Fix analytics full refund data" tool in WooCommerce > Status > Tools. [#69690](https://github.com/woocommerce/woocommerce/pull/69690)
* Fix - Restore the deprecated Products block and its editor settings on WordPress 7.2. [#70088](https://github.com/woocommerce/woocommerce/pull/70088)
* Fix - Restore translated names for product, Cart, Checkout blocks and related product patterns in the editor. [#69700](https://github.com/woocommerce/woocommerce/pull/69700)
* Fix - Restore visibility and purchasability of published products whose post_parent points at a missing or non-product post [#68988](https://github.com/woocommerce/woocommerce/pull/68988)
* Fix - Restoring an order from the trash no longer sends an extra "order updated" webhook or event when HPOS is on. [#69303](https://github.com/woocommerce/woocommerce/pull/69303)
* Fix - Return no products when a selected category or tag filter has no valid values. [#69403](https://github.com/woocommerce/woocommerce/pull/69403)
* Fix - Return safe debug details for unexpected Store API engine errors. [#68577](https://github.com/woocommerce/woocommerce/pull/68577)
* Fix - Return shoppers to the product page after they log in from the back-in-stock "Please log in" prompt. [#69824](https://github.com/woocommerce/woocommerce/pull/69824)
* Fix - Return shoppers to the `redirect_to` URL after they register from the My Account page, matching the existing login behavior. [#69855](https://github.com/woocommerce/woocommerce/pull/69855)
* Fix - Save a cleared shipping cost as 0 when editing an order. [#69062](https://github.com/woocommerce/woocommerce/pull/69062)
* Fix - Save a negative "Delete unverified notification sign-ups after" value as 0, which turns the cleanup off. [#69505](https://github.com/woocommerce/woocommerce/pull/69505)
* Fix - Send block editor emails in the site language and text direction, so right-to-left sites get right-to-left emails. [#70191](https://github.com/woocommerce/woocommerce/pull/70191)
* Fix - Send classic cart and checkout requests encoded like a browser form post, so security rules that block apostrophes or parentheses no longer stop them. [#69679](https://github.com/woocommerce/woocommerce/pull/69679)
* Fix - Send deferred admin emails in the language they were triggered in, not the language of the admin whose session runs the queue. [#69799](https://github.com/woocommerce/woocommerce/pull/69799)
* Fix - Send one email instead of two when signing in to the Woo mobile app with a QR code on WordPress 7.2 or later. [#70185](https://github.com/woocommerce/woocommerce/pull/70185)
* Fix - Send shoppers to the product page to choose options when a checkout link includes a variation with an "Any" attribute. [#69614](https://github.com/woocommerce/woocommerce/pull/69614)
* Fix - Send the new order push notification before the stock ones queued by the same order, so devices play the new order sound. [#68356](https://github.com/woocommerce/woocommerce/pull/68356)
* Fix - Send the product.deleted webhook when a product variation is permanently deleted. [#69004](https://github.com/woocommerce/woocommerce/pull/69004)
* Fix - Show "No limit" instead of a low memory warning on the Status page when PHP has no memory limit. [#69464](https://github.com/woocommerce/woocommerce/pull/69464)
* Fix - Show accurate attribute filter counts and results for variable products with missing variations. [#69280](https://github.com/woocommerce/woocommerce/pull/69280)
* Fix - Show all variation details for back-in-stock sign-ups in the admin list, My Account, and emails. [#69502](https://github.com/woocommerce/woocommerce/pull/69502)
* Fix - Show a loading placeholder at checkout while shipping options update, instead of briefly warning that none are available. [#69450](https://github.com/woocommerce/woocommerce/pull/69450)
* Fix - Show ampersands and other special characters correctly in product names on the in-app Marketplace. [#69453](https://github.com/woocommerce/woocommerce/pull/69453)
* Fix - Show and send emails registered late on init, such as Back in stock notifications, when the block email editor is enabled. [#69538](https://github.com/woocommerce/woocommerce/pull/69538)
* Fix - Show an error when a product from the Cart block's cross-sells list cannot be added to the cart, on Cart pages using the cross-sells inner block. [#69851](https://github.com/woocommerce/woocommerce/pull/69851)
* Fix - Show an error when a product from the Cart block's default cross-sells list cannot be added to the cart. [#69978](https://github.com/woocommerce/woocommerce/pull/69978)
* Fix - Show a notice when a back-in-stock verification or unsubscribe link is expired, already used, or no longer valid. [#69827](https://github.com/woocommerce/woocommerce/pull/69827)
* Fix - Show a Site Health warning when downloadable product files can be accessed directly, instead of reporting them as protected. [#70199](https://github.com/woocommerce/woocommerce/pull/70199)
* Fix - Show a variation attribute in the cart, checkout, and order item details when its value also appears in the parent product name. [#68943](https://github.com/woocommerce/woocommerce/pull/68943)
* Fix - Show customers their back-in-stock sign-ups on My Account when the database enforces ONLY_FULL_GROUP_BY. [#69274](https://github.com/woocommerce/woocommerce/pull/69274)
* Fix - Show one header on Checkout pages so screen readers can navigate them correctly. [#69200](https://github.com/woocommerce/woocommerce/pull/69200)
* Fix - Show order checkout fields in the Order Confirmation template editor. [#69449](https://github.com/woocommerce/woocommerce/pull/69449)
* Fix - Show order note times in the current store timezone after the timezone setting changes. [#69661](https://github.com/woocommerce/woocommerce/pull/69661)
* Fix - Show private products in admin product searches to users who can read private products but not edit them. [#69362](https://github.com/woocommerce/woocommerce/pull/69362)
* Fix - Show products matching multiple selected variation and non-variation attributes. [#69195](https://github.com/woocommerce/woocommerce/pull/69195)
* Fix - Show registered marketing channels to site admins on multisite instead of hiding the Channels card. [#70013](https://github.com/woocommerce/woocommerce/pull/70013)
* Fix - Show the "Leave a review" link in the customer review request email when using the block email editor. [#69575](https://github.com/woocommerce/woocommerce/pull/69575)
* Fix - Show the back-in-stock sign-up prompt as a paragraph instead of a large heading on the product page. [#69503](https://github.com/woocommerce/woocommerce/pull/69503)
* Fix - Show the custom origin label an extension sets for an order's attribution source instead of "Unknown". [#69030](https://github.com/woocommerce/woocommerce/pull/69030)
* Fix - Show the labels of coupon discount types added by extensions in the Analytics Coupons report instead of N/A. [#68705](https://github.com/woocommerce/woocommerce/pull/68705)
* Fix - Show the shipping provider name instead of its internal slug in fulfillment emails, order notes, and the orders list. [#69793](https://github.com/woocommerce/woocommerce/pull/69793)
* Fix - Show the State field again on the classic checkout and address forms after switching from a country that hides it. [#69395](https://github.com/woocommerce/woocommerce/pull/69395)
* Fix - Show the WooCommerce Analytics commands in the command palette when stock management is turned off. [#68753](https://github.com/woocommerce/woocommerce/pull/68753)
* Fix - Show variable products in the admin products list when filtering by a shipping class set on a variation. [#69877](https://github.com/woocommerce/woocommerce/pull/69877)
* Fix - Skip background processing checks when nothing is queued, and avoid false failures when the database is unavailable. [#68959](https://github.com/woocommerce/woocommerce/pull/68959)
* Fix - Skip client-side Tracks events recorded without a valid event name instead of sending them as `wcadmin_undefined`. [#69009](https://github.com/woocommerce/woocommerce/pull/69009)
* Fix - Stop checkout logging from sending extra "Order updated" webhooks. [#69870](https://github.com/woocommerce/woocommerce/pull/69870)
* Fix - Stop classic shop attribute filters from matching or counting terms that only disabled variations have. [#68482](https://github.com/woocommerce/woocommerce/pull/68482)
* Fix - Stop images from disappearing in the block editor on Safari for sites using a classic theme. [#69869](https://github.com/woocommerce/woocommerce/pull/69869)
* Fix - Stop listing deleted plugins in the system status report and REST API for up to an hour after they are removed. [#69601](https://github.com/woocommerce/woocommerce/pull/69601)
* Fix - Stop listing fulfillments without a shipping provider under the "Other" shipping provider filter. [#69217](https://github.com/woocommerce/woocommerce/pull/69217)
* Fix - Stop product feed generation from clearing the site-wide object cache; only the process's in-memory cache is freed. [#69243](https://github.com/woocommerce/woocommerce/pull/69243)
* Fix - Stop reporting an error when saving a back in stock notification whose row did not need to change. [#69020](https://github.com/woocommerce/woocommerce/pull/69020)
* Fix - Stop sending back-in-stock emails for out-of-stock variations when a sibling variation is restocked. [#69500](https://github.com/woocommerce/woocommerce/pull/69500)
* Fix - Stop splitting billing and shipping addresses in the middle of words in order emails. [#69140](https://github.com/woocommerce/woocommerce/pull/69140)
* Fix - Stop taxing a zone Local pickup order at the block pickup location whose list position matches the method's instance id. [#69346](https://github.com/woocommerce/woocommerce/pull/69346)
* Fix - Stop the Checkout block from briefly showing "no payment methods available" while the cart loads. [#69853](https://github.com/woocommerce/woocommerce/pull/69853)
* Fix - Stop the classic checkout saving orders without shipping when shipping costs are hidden until an address is entered. [#69742](https://github.com/woocommerce/woocommerce/pull/69742)
* Fix - Stop the email template update review from saying structural changes were applied automatically, since they are never applied. [#69340](https://github.com/woocommerce/woocommerce/pull/69340)
* Fix - Store API: report the checkout as successful when a failure happens after the gateway has taken payment, so shoppers are no longer told to retry an order that already succeeded.
* Fix - Store API: stop an extension whose data or schema callback throws from receiving another extension's data [#68397](https://github.com/woocommerce/woocommerce/pull/68397)
* Fix - Store the default Cart page cross-sells heading as a block pattern reference so it follows the site language instead of the install language. [#68500](https://github.com/woocommerce/woocommerce/pull/68500)
* Fix - Treat an array-valued key on the Blocks order confirmation page as absent so it falls through to the invalid-order handling instead of fataling in hash_equals(). [#68584](https://github.com/woocommerce/woocommerce/pull/68584)
* Fix - Use the address entered in the order editor when calculating tax for products added to manual orders. [#69518](https://github.com/woocommerce/woocommerce/pull/69518)
* Fix - Use the filterable coupon-removed message from `WC_Coupon::get_coupon_message()` when removing a coupon via AJAX. [#69271](https://github.com/woocommerce/woocommerce/pull/69271)
* Fix - Validate posted Back in Stock variation attributes against the values the store offers, look up an existing sign-up with a single exact query, and check the sign-up rate limit before it. [#68915](https://github.com/woocommerce/woocommerce/pull/68915)
* Add - Add ActionableAbility to the experimental extensible abilities feature. With it on, product create and product update accept extension fields under extensions.<namespace>.<field>, and save Core and extension fields one time. [#69681](https://github.com/woocommerce/woocommerce/pull/69681)
* Add - Add a location filter to the Analytics Taxes report, narrowing the report, its summary and its export to a country or a state. [#68839](https://github.com/woocommerce/woocommerce/pull/68839)
* Add - Add an admin notice about the upcoming PHP 8.1 requirement in WooCommerce 11.6 for stores running an older PHP version. [#69094](https://github.com/woocommerce/woocommerce/pull/69094)
* Add - Add an Inbox note on WooCommerce Home when active WooCommerce.com extensions have no subscription. [#69509](https://github.com/woocommerce/woocommerce/pull/69509)
* Add - Add an opt-in filter (woocommerce_own_stock_hold_exclusion_threshold_minutes) for excluding a shopper's own stale stock holds. [#68963](https://github.com/woocommerce/woocommerce/pull/68963)
* Add - Add an `experimental__woocommerce_blocks-cart-updated` action so extensions can react after the Cart and Checkout blocks receive an updated cart. [#69788](https://github.com/woocommerce/woocommerce/pull/69788)
* Add - Add a `[weight]` placeholder to flat rate shipping cost formulas, resolving to the total weight of the shippable items in the package or shipping class, in the store's weight unit. Accepts optional `min` and `max` attributes, e.g. `[weight min="1" max="20"]`. Invalid weight limits produce a validation error when saving; decimal limits use a dot and no thousands separators. [#68835](https://github.com/woocommerce/woocommerce/pull/68835)
* Add - Add block spacing style support to the Chips block [#68946](https://github.com/woocommerce/woocommerce/pull/68946)
* Add - Add commodity code, country of origin and customs description fields to the product and variation editors. [#69166](https://github.com/woocommerce/woocommerce/pull/69166)
* Add - Add customs fields to products and variations in the REST API. [#69165](https://github.com/woocommerce/woocommerce/pull/69165)
* Add - Add ExtensibleAbilities::register_query_filter(). With the experimental extensible abilities feature on, the product and order list abilities accept extension filters under filters.extensions.<namespace>.<filter>. [#69684](https://github.com/woocommerce/woocommerce/pull/69684)
* Add - Add ExtensibleAbilities::register_validator() to the experimental extensible abilities feature. A validator can refuse a change before the one save, in the product abilities and in the ActionableAbility classes of extensions. [#69683](https://github.com/woocommerce/woocommerce/pull/69683)
* Add - Add guidance after the order withdrawal feature is enabled. [#68687](https://github.com/woocommerce/woocommerce/pull/68687)
* Add - Add opt-in UCP catalog search, lookup and product endpoints so AI shopping agents can browse the store. [#69577](https://github.com/woocommerce/woocommerce/pull/69577)
* Add - Add product type classes to the Add to Cart + Options block in legacy mode [#69408](https://github.com/woocommerce/woocommerce/pull/69408)
* Add - Add Tax settings section to the System Status Report. [#68643](https://github.com/woocommerce/woocommerce/pull/68643)
* Add - Add the "Enable for shipping methods" and "Accept for virtual orders" settings to the Direct bank transfer and Check payments gateways, sharing the Cash on delivery implementation through the new ShippingMethodRestrictionsTrait that custom gateways can also use. [#68624](https://github.com/woocommerce/woocommerce/pull/68624)
* Add - Add the experimental extensible abilities feature. With it on, extensions register fields with ExtensibleAbilities::register_field(), and the abilities return their values under extensions.<namespace>.<field>. [#69678](https://github.com/woocommerce/woocommerce/pull/69678)
* Add - Add the woocommerce/order-notes-query ability, which lists every note of an order. [#69790](https://github.com/woocommerce/woocommerce/pull/69790)
* Add - Add `rest_{$taxonomy}_collection_params` filter to the REST terms controller. [#68430](https://github.com/woocommerce/woocommerce/pull/68430)
* Add - Allow extensions to customize taxonomy URL parameter names with the woocommerce_product_filter_params filter. [#69630](https://github.com/woocommerce/woocommerce/pull/69630)
* Add - Allow stores to select a refund and returns policy page and share its link with search engines. [#69002](https://github.com/woocommerce/woocommerce/pull/69002)
* Add - Import and export product customs fields with the product CSV tools. [#69167](https://github.com/woocommerce/woocommerce/pull/69167)
* Add - Let the order abilities list and change orders of the types that extensions register, and let orders-query take a list of statuses. [#69692](https://github.com/woocommerce/woocommerce/pull/69692)
* Add - Product Export: enable category filtering when exporting variable products and product variations together [#69264](https://github.com/woocommerce/woocommerce/pull/69264)
* Add - Serve the UCP discovery profile at /.well-known/ucp when the UCP feature is enabled. [#69886](https://github.com/woocommerce/woocommerce/pull/69886)
* Add - Show a "Limited compatibility" badge on the Payments settings page when an enabled payment gateway has no Checkout block integration. [#67601](https://github.com/woocommerce/woocommerce/pull/67601)
* Add - Show a one-time hint that points merchants to the metrics menu on the Analytics Overview page. [#69097](https://github.com/woocommerce/woocommerce/pull/69097)
* Add - Show extension recommendations on the add products page when the store has no products yet. [#69764](https://github.com/woocommerce/woocommerce/pull/69764)
* Add - Show the number of active WooCommerce.com extensions without a subscription in the WooCommerce Status dashboard widget. [#69509](https://github.com/woocommerce/woocommerce/pull/69509)
* Add - Split the taxable amount of the Analytics Taxes report into Order gross and Shipping gross columns. [#68890](https://github.com/woocommerce/woocommerce/pull/68890)
* Add - When usage tracking is enabled, record how WooCommerce abilities are called, such as by AI agents, without their inputs or results. [#69949](https://github.com/woocommerce/woocommerce/pull/69949)
* Update - Clarify that Direct bank transfer accepts offline bank-to-bank and wire transfer payments. [#69743](https://github.com/woocommerce/woocommerce/pull/69743)
* Update - Decrease top margin in Checkout block [#69560](https://github.com/woocommerce/woocommerce/pull/69560)
* Update - Deprecate the `type`, `autocompleter`, and `labels.placeholder` settings of Analytics report filters in favor of `settings.searchProps`, which the core report filters now use. [#68816](https://github.com/woocommerce/woocommerce/pull/68816)
* Update - Hide the legacy Reports menu in the WordPress.com sidebar on new stores, matching wp-admin. [#69367](https://github.com/woocommerce/woocommerce/pull/69367)
* Update - Hide the legacy Reports menu on new stores; it still shows when Analytics is off or an extension adds legacy reports. [#69247](https://github.com/woocommerce/woocommerce/pull/69247)
* Update - Let the Filter products button inherit its surrounding font size. [#69193](https://github.com/woocommerce/woocommerce/pull/69193)
* Update - Product Image: constrain padding to inner blocks [#69329](https://github.com/woocommerce/woocommerce/pull/69329)
* Update - Remove the deprecated WooCommerce MCP endpoint. Use the MCP Adapter plugin to access WooCommerce abilities over MCP. [#69787](https://github.com/woocommerce/woocommerce/pull/69787)
* Update - Set WooCommerce blocks version automatically to WooCommerce version [#69143](https://github.com/woocommerce/woocommerce/pull/69143)
* Update - Show five more key performance metrics by default on the Analytics Overview page. [#69757](https://github.com/woocommerce/woocommerce/pull/69757)
* Update - Simplify and align the empty cart state in the Cart and Mini-Cart blocks. [#68560](https://github.com/woocommerce/woocommerce/pull/68560)
* Update - Use a consistent style for external links in the Payments settings incentive messages, badges, and "More payment options" link. [#69269](https://github.com/woocommerce/woocommerce/pull/69269)
* Update - Warn stores on PHP older than 8.1 that their PHP version may be affected by critical security vulnerabilities, and recommend the latest PHP 8.3 release. [#70196](https://github.com/woocommerce/woocommerce/pull/70196)
* Dev - Add a developer notice when feature definitions are accessed while they are being initialized. [#68922](https://github.com/woocommerce/woocommerce/pull/68922)
* Dev - Add the woocommerce_reports_cache_expiration filter to change how long Analytics report data is cached. [#69288](https://github.com/woocommerce/woocommerce/pull/69288)
* Dev - Add unit test coverage for the Product Categories List block attributes: display style, product count, category images, hierarchy, and empty categories. [#68600](https://github.com/woocommerce/woocommerce/pull/68600)
* Dev - Correct the woocommerce_thankyou_order_received_title docblock on the Order Confirmation Status block. [#68152](https://github.com/woocommerce/woocommerce/pull/68152)
* Dev - Cover the trashed-shop-page guard that keeps a rewrite flush from being queued. [#68686](https://github.com/woocommerce/woocommerce/pull/68686)
* Dev - Fill in placeholder @since version numbers left over from past releases [#68942](https://github.com/woocommerce/woocommerce/pull/68942)
* Dev - Pass the cart item and its key to the `woocommerce_cart_item_backorder_notification` filter, so the notice can vary per variation. [#69669](https://github.com/woocommerce/woocommerce/pull/69669)
* Dev - Remove outdated shims and skips from the test suites. [#68563](https://github.com/woocommerce/woocommerce/pull/68563)
* Dev - Remove the empty wc-admin-layout stylesheet. [#69496](https://github.com/woocommerce/woocommerce/pull/69496)
* Dev - Rename Atomic blocks internals to Product Element blocks. [#68952](https://github.com/woocommerce/woocommerce/pull/68952)
* Dev - Replace the deprecated ResponsiveWrapper component in the product usage notice modal with CSS aspect-ratio. [#68975](https://github.com/woocommerce/woocommerce/pull/68975)
* Dev - Resolve blocks webpack entry paths with POSIX separators so the build works on Windows. [#68607](https://github.com/woocommerce/woocommerce/pull/68607)
* Dev - Rows with `is_variation_attribute = 1` in `wc_product_attributes_lookup` now exist only for published variations. [#68482](https://github.com/woocommerce/woocommerce/pull/68482)
* Dev - Trigger the PHPUnit, Jest, Blocks E2E and PayPal CI jobs on the test inputs they read [#68879](https://github.com/woocommerce/woocommerce/pull/68879)
* Dev - Update wordpress/mcp-adapter to 0.4.1, so the mcp-adapter-execute-ability tool returns the error message of a failed ability, and MCP clients receive the readOnlyHint tool annotation. [#69676](https://github.com/woocommerce/woocommerce/pull/69676)
* Tweak - Add a "Learn more" link to the My Subscriptions connect screen and mention creating a WooCommerce.com account. [#69144](https://github.com/woocommerce/woocommerce/pull/69144)
* Tweak - Clean up legacy `isDescendentOf` attributes from product element blocks and preserve backward compatibility with deprecated block definitions. [#66287](https://github.com/woocommerce/woocommerce/pull/66287)
* Tweak - Let the text area for order notes grow for longer text [#69065](https://github.com/woocommerce/woocommerce/pull/69065)
* Tweak - Log a warning when a back in stock notification email is not registered with the mailer. [#69508](https://github.com/woocommerce/woocommerce/pull/69508)
* Tweak - Match the text size and spacing of the My Account stock notifications table to the Orders table. [#69504](https://github.com/woocommerce/woocommerce/pull/69504)
* Tweak - Remove the avatar from the WooCommerce.com account button in the Marketplace header when the account email is shown. [#69023](https://github.com/woocommerce/woocommerce/pull/69023)
* Tweak - Show sharper logos for Rapyd, Bolt, DePay, and Billie, and add the Evergreen logo, in Settings > Payments. [#69192](https://github.com/woocommerce/woocommerce/pull/69192)
* Tweak - Show the "Edit excerpt" button in the email editor sidebar. [#68996](https://github.com/woocommerce/woocommerce/pull/68996)
* Tweak - Surface invalid payment token fields via WC_Data_Exception attributes [#68711](https://github.com/woocommerce/woocommerce/pull/68711)
* Tweak - Test new wording and placement for the Marketplace task in "Things to do next", for stores in an A/B test. [#69283](https://github.com/woocommerce/woocommerce/pull/69283)
* Tweak - Update copy and add privacy policy link to newsletter opt-in in the onboarding profiler. [#69201](https://github.com/woocommerce/woocommerce/pull/69201)
* Tweak - Use prepared statements when filtering Store API products by slug. [#69236](https://github.com/woocommerce/woocommerce/pull/69236)
* Tweak - Write the extensions input schema of the product abilities one time, so its size does not grow with the number of product types. [#69682](https://github.com/woocommerce/woocommerce/pull/69682)
* Performance - Addressed N+1 query pattern in wc_get_formatted_variation by bulk-fetching taxonomy terms. [#68043](https://github.com/woocommerce/woocommerce/pull/68043)
* Performance - Bulk-prime variable products transients on products page in admin to reduce the number of SQL queries. [#69301](https://github.com/woocommerce/woocommerce/pull/69301)
* Performance - Bulk-prime variable products transients on shop and category pages to reduce the number of SQL queries. [#69319](https://github.com/woocommerce/woocommerce/pull/69319)
* Performance - Eliminated duplicate variation price aggregation on tax-enabled stores in read_price_data method of variable data store. [#68938](https://github.com/woocommerce/woocommerce/pull/68938)
* Performance - Enabled optimized variations price hashing for new stores by default. [#68910](https://github.com/woocommerce/woocommerce/pull/68910)
* Performance - Let browsers choose an appropriate product thumbnail in review blocks. [#69115](https://github.com/woocommerce/woocommerce/pull/69115)
* Performance - Micro-optimizations package to compress blocks initialization execution time. [#69720](https://github.com/woocommerce/woocommerce/pull/69720)
* Performance - Populate verified-owner review meta consistently across all review submission workflows. [#68044](https://github.com/woocommerce/woocommerce/pull/68044)
* Performance - Speed up product stock lookup regeneration on large stores. [#69321](https://github.com/woocommerce/woocommerce/pull/69321)
* Performance - Trimmed the number of file_exists calls during blocks initialization for better performance. [#69593](https://github.com/woocommerce/woocommerce/pull/69593)
* Enhancement - Add a "Number of reviews per page" control to the Screen Options tab on the Products > Reviews list table, letting merchants adjust how many product reviews are shown per page. [#66680](https://github.com/woocommerce/woocommerce/pull/66680)
* Enhancement - Add additional frontend events to Cart and Mini Cart blocks. [#45952](https://github.com/woocommerce/woocommerce/pull/45952)
* Enhancement - Add padding, margin, border, and shadow controls to the Product Template block. [#69607](https://github.com/woocommerce/woocommerce/pull/69607)
* Enhancement - Add spacing, background, border, shadow, and List View controls to the Product block. [#69398](https://github.com/woocommerce/woocommerce/pull/69398)
* Enhancement - Add typography, gradient, link color, and border controls to product category title and description blocks. [#69600](https://github.com/woocommerce/woocommerce/pull/69600)
* Enhancement - Analytics: add a payment method advanced filter to the Orders report. [#69651](https://github.com/woocommerce/woocommerce/pull/69651)
* Enhancement - Analytics: show the payment method on the Orders report, as a table column and a CSV export column. [#68970](https://github.com/woocommerce/woocommerce/pull/68970)
* Enhancement - Associate the Shop page with the Product Catalog block template while keeping the template selector hidden. [#70057](https://github.com/woocommerce/woocommerce/pull/70057)
* Enhancement - Customize Catalog Sorting spacing, typography, alignment, background colors, and gradients to match your store. [#69603](https://github.com/woocommerce/woocommerce/pull/69603)
* Enhancement - Customize product results counts with alignment, typography, spacing, background colors, and gradients. [#69606](https://github.com/woocommerce/woocommerce/pull/69606)
* Enhancement - Customize spacing, backgrounds, and borders in the Product Categories List block. [#69440](https://github.com/woocommerce/woocommerce/pull/69440)
* Enhancement - Filter the "More payment options" marketplace link by the business location selected on the Payments settings page. [#68717](https://github.com/woocommerce/woocommerce/pull/68717)
* Enhancement - Make Category Title, Description and Button compatible with core Terms Query block [#68613](https://github.com/woocommerce/woocommerce/pull/68613)
* Enhancement - Show a product preview when clicking an extension in the in-app Marketplace, for stores in an A/B test. [#69141](https://github.com/woocommerce/woocommerce/pull/69141)
* Enhancement - Show Cart and Checkout buttons side by side in the Mini Cart on mobile, leaving more room for cart items. [#69760](https://github.com/woocommerce/woocommerce/pull/69760)
* Enhancement - Show discount amounts or percentages on product sale badges, including the largest saving for variable products. [#69180](https://github.com/woocommerce/woocommerce/pull/69180)
* Enhancement - Support adding additional parameters to a product in checkout-link [#59341](https://github.com/woocommerce/woocommerce/pull/59341)
* Enhancement - Support richer styling in Featured Product and Featured Category blocks. [#69016](https://github.com/woocommerce/woocommerce/pull/69016)
* Enhancement - Update sale badges to show the discount for the selected product variation. [#69596](https://github.com/woocommerce/woocommerce/pull/69596)
* Enhancement - Update the site visibility badge default when changing store visibility. [#67992](https://github.com/woocommerce/woocommerce/pull/67992)
* Enhancement - Use consistent markup for classic notices by wrapping them all in `woocommerce-notices-wrapper`. [#68716](https://github.com/woocommerce/woocommerce/pull/68716)


[See changelog for all versions](https://raw.githubusercontent.com/woocommerce/woocommerce/trunk/changelog.txt).