WooCommerce 8.9: New Product Editor, more customizable than ever

WooCommerce 8.9 Has been released on May 14, 2024. This post highlights what’s new in this version of WooCommerce

See our update guide.
Download directly from WordPress.org.

Other important information:

Latest Release:

👉 WooCommerce 8.9


  • ✅ Backwards compatible
  • Commits: 407
  • Contributors: 83

Final Release — May 14, 2024

Introducing Custom Fields in the New Product Editor

Custom Fields UI

You can now add Custom Product Fields to products via the New Product Editor. This feature allows you to manage custom fields via a new section located at the bottom of the Organization tab.

Here’s how it works:

  • Enable the Show custom fields toggle to view an empty state or a table listing existing fields.
  • Use the Add new button to create new custom fields. You can add one or multiple fields at once.
  • Edit a field by clicking the Edit button on the table row.
  • Remove a specific field by clicking the X button on the right of the table row.
  • Remember to save the product to persist all these fields.

Please note that this feature is still a work in progress. Currently, it’s not possible to see or select a custom field name created for a different product from the Add custom fields or Edit modal forms.

Cart and Checkout Blocks get leaner, and a little something extra

Add vendor bundling of blocks frontend bundle to improve cart/checkout performance #45859

We found some opportunities to improve how we bundle and build JavaScript for the Cart and Checkout blocks. This allows for significantly smaller payloads on those blocks. The cart block sees an 11% saving in payload size and the checkout a 17.9% saving!

In addition to a leaner, we have also marked the the Additional Checkout Fields feature as stable in this release. This feature was previously released on 8.7 as experimental.

Order Attribution column now part of Order Analytics

Display “Origin” column in Orders table in Orders Analytics #46424
Change “Origin” column name to “Attribution” in Orders Analytics #46760

Attribution column in Order Analytics

The order attribution tracking feature is now part of Order Analytics under the “Attribution” column, allowing store owners and managers to better understand the origin of each of their orders

Navigate to WooCommerce Analytics > Orders page to see the new “Attribution” column in the table. Additionally, the exported data in the CSV file via the “Download” button will also have the new “Attribution” column.

Compliant with native display of co-branded credit cards

Add – Adding support for co-branded credit cards #45903

We added support for natively displaying co-branded credit cards, and allowing customers to choose between them, in compliance with Regulation (EU) 2015/751.

When displaying a co-branded credit card, we will now show all the available networks (brands) and the preferred ones. When paying, we will use the preferred brand instead of the default (this will be handled on the Stripe plugin’s side).

API Changes

  • Add: Adds an endpoint to the API Rest that allows duplicating a product and saving it as a draft. It’s also possible to update the product when extra parameters are sent. #46141
  • Fix: Updates the REST API v3 reports/orders/totals endpoint to be compatible with HPOS #46715
  • Fix: Fixes an error related to the duplicate product REST API endpoint #46551
  • Fix: Ensure that required missing fields will get validated in Store API #45840

Other important information

Database updates

📀 Update when PayPal Standard is loaded to further reduce new store using this legacy payment method #47205

This change disables the legacy PayPal Standard gateway for stores that aren’t using it. This reduces the number of stores connecting to PayPal Standard (which was deprecated in WC 5.5) and encourage stores to use the latest PayPal Payments extension.

Due to this change, the following filter will no longer work as of WooCommerce 8.9:
add_filter( 'woocommerce_should_load_paypal_standard', '__return_true' );

📀 Fix Woo.com reference in the Inbox during onboarding #46600

This change fixes a Woo.com reference in the Inbox during onboarding so that the domain name is changed to the updated WooCommerce.com.


See all bug fixes and improvements
  • Fix – Fix fatal error when trying to download log files #47398
  • Fix – Don’t automatically insert hooked customer account block into header for sites running less than WP 6.5 #47171
  • Fix – Fix HPOS order searches involving terms with characters resembling URL-encoded characters. #46972
  • Fix – Add a bailout to prevent JavaScript errors if Sourcebuster isn’t loaded #46723
  • Fix – Add a safety check for the numbers with the same value for the separators #46241
  • Fix – Addresses a fatal error that can occur when applying a coupon within the order editor (where one of the products has been deleted). #46251
  • Fix – Add safety check to prevent rare occurences of a fatal in WooSubscriptionsNotes #46472
  • Fix – Allow enbling HPOS when the only incompatible plugin is the Legacy REST API one #46634
  • Fix – Always validate missing additional fields #45840
  • Fix – Be less aggressive when checking for selected shipping rates in Store API. Reminder that shipping rate id should be on the shape of method_id:instance_id. #46719
  • Fix – can only be inserted once excludes the mini-cart template button #46478
  • Fix – Changed LYS task list task id from underscore to hyphens for consistency with the other tasks #46055
  • Fix – Ensure local pickup settings are reflected in Checkout block #46334
  • Fix – Ensure queryId and id uniqueness when duplicating the Product Collection block. #44522
  • Fix – Ensure the wc/v3/reports/orders/totals endpoint is compatible with HPOS. #46715
  • Fix – Fix “Add a filter” UI issue in Analytics. #46750
  • Fix – Fix: Hand-picked control only allow selection from first 100 products #45931
  • Fix – Fix a bug that prevented placing an order when shipping is disabled, but Local Pickup is still enabled. #45828
  • Fix – Fix a bug where Site Visibility setting tab appears without launch-your-store feature flag turned on. #46622
  • Fix – Fix admin header page title #46450
  • Fix – Fix a few broken links. #46381
  • Fix – Fix back from CYS via LYS goes to Home, not LYS #46665
  • Fix – Fix bug parsing memory_limit in product importer #46051
  • Fix – Fix code typo in Orders Analytics. #46487
  • Fix – Fix coming soon page fatal error with non-FSE theme #46570
  • Fix – Fix crashes in the mini-cart when combined with product and filter blocks. Closes #46542. #46814
  • Fix – Fix deprecated error message with strlen usage in PHP 8.1 #46661
  • Fix – Fix duplicate product endpoint args for item schema #46551 #46551
  • Fix – Fixed the path for the LYS private link woo-share cookie entry #46571
  • Fix – Fixes for some flaky e2e #46845
  • Fix – Fixes order counts in the status widget for persistent caches. #46860
  • Fix – Fix Home screen grey background #45895 #45895
  • Fix – Fix input layout issue with shipping task in Firefox. #45778
  • Fix – Fix issue preventing some blocks from being direct children of the Single Product block. #45530
  • Fix – Fix K6 test with coming soon feature flag enabled #46539
  • Fix – Fix Launch Your Store task item should not be clickable once completed #46361
  • Fix – Fix linked product e2e tests #46286 #46286
  • Fix – Fix LYS success page shown but Task not crossed off #46663
  • Fix – Fix sanitization of special letters in Additional fields API #46762
  • Fix – Fix some e2e tests for linked product #46506 #46506
  • Fix – Fix the broken contract in the StoreAPI and the bug in the price clauses causing the incorrect filter counts. #45247
  • Fix – Fix the link in the custom field helper test #46640
  • Fix – Fix the LYS Hub tasklist so that it only shows incomplete tasks and tasks that were recently actioned #46190
  • Fix – Fix the overlay color of the “Featured Category Triple” pattern. #46170
  • Fix – Fix undefined error with current_screen in lys class. #46093
  • Fix – Fix Woo.com reference in the inbox during onboarding. #46600
  • Fix – Highlighting text in the product’s description of the new product editor is not visible inside editor #46728
  • Fix – Move the feature flag check to add_lys_default_values method #46154
  • Fix – Only query order meta for orders that were successfully retrieved from the DB #45544
  • Fix – Prevent fatal error on the Status page when the log directory contains an unreadable directory #46709
  • Fix – Prevent PHP warning if local pickup has not been set up in your store #46182
  • Fix – Prevent reading items with zero order ID to avoid mixups. #46161
  • Fix – Product Collection: Don’t show publicly non-queryable taxonomies #45781
  • Fix – Product Collection: Fix the “Reset All” funtionality in Editor filters #46226
  • Fix – Product Editor: Fixes a mis-alignment of the form when certain extensions are installed. #45963
  • Fix – Removed explat test that calls live explat server #46818
  • Fix – Remove pointer cursor and underline on hover for the product collection product title in the editor #45998
  • Fix – Skip mini cart e2e tests, flaky test fixes #46199
  • Fix – Update background color and padding in WooCommerce LYS status popover #46322
  • Fix – Update WC_Order_Factory::get_order() to return false when failing to load cached order. #46393
  • Fix – [CYS] – Fix color inconsistencies in the color palette buttons. #46216
  • Fix – [CYS] Fix logo position styles while saving. #46833
  • Fix – [CYS] Fix the AI-generated site title comparison. #46819
See all features and additions
  • Add – Send tracks event for woocommerce.com connect notices #47003
  • Add – Add a connect to woocommerce.com notices for unconnected stores in the wc settings and wc marketplace page. #45536
  • Add – Add a new task (connect to WooCommerce.com) in WC onboarding tasklist #46259
  • Add – Add a tour for the homescreen site status badge. #46203
  • Add – Add coming soon exclusion for users with a private link. #46465
  • Add – Add coming soon mode routing. #46223
  • Add – Add coming soon page and its page selector #45773
  • Add – Add coming soon page editor links #46100
  • Add – Add E2E tests for grouped products #45964 #45964
  • Add – Add e2e tests for linked products #46024 #46024
  • Add – Add E2E tests for product variation notices #45853
  • Add – Add e2e tests for virtual orders #45824
  • Add – Added lys hub sidebar #46056
  • Add – Added the action to set the appropriate options when launch store button is clicked in LYS #46235
  • Add – Added tracks events for LYS hub #46462
  • Add – Added URL handling for LYS XState pages #45803
  • Add – Add isSelectableByUser attribute to product templates #46394
  • Add – Add Launch Your Store success screen #46103
  • Add – Add LYS hub site preview #45976
  • Add – Add meta_data parameter in generate variations endpoint #45953
  • Add – Add origin column in Orders Analytics report. #46424
  • Add – Adds a prefetch for the LYS congrats data #46406
  • Add – Add shipping phone number in the order preview panel. #45788
  • Add – Adds support for sanitizing styled chunks of HTML (a slight expansion of normal wp_kses_post rules). #45407
  • Add – Add support for hooking into reading and saving additional fields. #46870
  • Add – Add the Customer Account block to the header automatically on approved themes (including TT4). #43267
  • Add – Add wc_rest_is_from_product_editor() function to check if REST request was made by product editor. #46741
  • Add – Coming soon mode and the Launch Your Store task. #46510
  • Add – Disable the fields that are not required in variable products because they are set in each variation #45838
  • Add – Move LYS coming soon initialization to core profiler flow #46708
  • Add – Sync local pickup title between Checkout page and shipping settings UI #45720
  • Add – Use a public helper API endpoint update-check-public to check latest versions of WooCommerce extensions and show a plugin update message in the plugin table list to connect to woocommerce.com. #46082
  • Add – Use state names in Checkout Block address cards. #45799
  • Add – [Product Block Editor]: register metadata attribute for all blocks #45657
See all updates and tweaks
  • Update – Remove wc_update_890_add_launch_your_store_tour_option function. #47005
  • Update – Add coming soon banner on the frontend when coming soon mode is enabled. #46096
  • Update – Add feature flag check for patterns and wrap coming soon template and patterns under feature flag #46856
  • Update – Additional Checkout Fields has been graduated to stable. #46805
  • Update – Add more robust method of filesystem initialization #45914
  • Update – Add order search by transaction_id #46129
  • Update – Add private link with copy link functionality #45915
  • Update – Adds cog and edit icons to homescreen LYS status pill #46098
  • Update – Add tracks for site visibility settings #46078
  • Update – Add warnings about the incompatibility of the legacy REST API and HPOS #46841
  • Update – Apply styles to Coming soon entire store regardless of theme #46619
  • Update – Bump node version. #45148
  • Update – Change styling for shipping, payment, and local pickup radio buttons in the Checkout block #46150
  • Update – Copy change for the coming soon label in advanced setting. #46204
  • Update – Copy text update for LYS homescreen badge. #46097
  • Update – CYS – E2E tests: Add footer section E2E tests #45984
  • Update – CYS – E2E tests: Add header section E2E tests #46011
  • Update – Deprecate CLI tools under “cot” namespace and add aliases in “hpos” namespace. #46766
  • Update – Ensure consistent styling for single shipping methods in the Checkout block #46284
  • Update – Group subtotals in the Order Summary of the Cart & Checkout blocks #46386
  • Update – Hide coming soon banner from LYS preview frame #46321
  • Update – Implement dismiss button for the coming soon banner and restrict the banner on the store pages only when ‘Restrict to store pages only’ option is selected. #46149
  • Update – Increase the spacing between the title and the rest of the pattern for: “Product Gallery”, “Product Collection: Featured Products 5 Columns” and “Testimonials 3 Columns”. #45830
  • Update – Make LYS preview frame resizable #46327
  • Update – Move site visibility settings to a new tab #46140
  • Update – Product Collection: recognise if block is inside Cart or Checkout block #46059
  • Update – Product Collection: Rename “other” location from generic to site #46228
  • Update – Product Collection: split Taxonomies filter into separate filter per taxonomy for better readibility #46160
  • Update – Product Collection: track collection being chosen in Product Collection #45827
  • Update – Product Elements: unify the Product Elements inserter category #46064
  • Update – Redirect to the CYS intro screen when accessing the transitional page without going through the customizing process. #45933
  • Update – Remove BNPL (Klarna) additional payment method from WooPayments welcome page, update payment method icons #46523
  • Update – Remove the red badge shown on extensions menu item when the site is not connected to WooCommerce.com #46807
  • Update – Remove ToS acceptance where unnecessary #46003
  • Update – Sync LYS task completion with woocommerce_coming_soon optionSync LYS task completion with woocommerce_coming_soon option #46358
  • Update – Toggle LYS feature flag off for 8.9 #46852
  • Update – Update @woo.com email addresses to @woocommerce.com. #46387
  • Update – Update coming soon page link to template editor #46566
  • Update – Update HPOS tracker and status entries. #46239
  • Update – Update Launch Your Store task action URL #45932
  • Update – Update LYS site visibility settings copies. #46095
  • Update – Update lys status badge padding and only show it on WooCommerce home’ #46359
  • Update – Update the shipping selector to show FREE instead of a zero amount #46345
  • Update – Update to use template_include instead, handle 404 for restrict store pages only #46667
  • Update – Update WC Admin Homescreen header icons #46353
  • Update – Update Woo.com references to WooCommerce.com. #46259
  • Update – Use individual meta keys for Additional checkout fields. #46091
  • Update – Use the address formats from WC_Countries in the checkout block address card #45852
  • Update – [CYS – E2E tests] Add E2E tests for the intro screen. #45356
  • Update – [CYS – E2E tests] Add E2E tests for the transitional screen. #45894
  • Update – [CYS] Remove the “Save” button from inside the different sections. #46526
  • Tweak – Adjusts the way refunds are displayed (including in emails), to make it clearer that the line item is indeed a refund. #45455
  • Tweak – Change private methods to protected in ProductVariationTemplate #46395
  • Tweak – CYS – AI flow: keep persisted query param when redirecting. #46820
  • Tweak – Fix breadcrumb back icon color to follow the admin theme color. #40106
  • Tweak – Fix the hover color in the reports page and star rating color in the dashboard widget. #40243
  • Tweak – refactor: woocommerce_rest_checkout_process_payment_error returns a 400 response code, instead of 402. #45979
  • Tweak – Removed unused local variable ‘discount_amount_html’ to improve code clarity and efficiency. #46437
  • Tweak – Removes unnecessary margin from Customer Account block label. #45934
  • Tweak – Remove unneeded empty “Unknown” code handling in Order Attribution. #46654
  • Tweak – Remove unused “No order source data available.” message in Order Attribution feature. #46648
  • Tweak – Rename “Origin” column to “Attribution” in Orders Analytics. #46760
  • Tweak – Tewak Launch Your Store sidebar UI #46449
  • Tweak – Tweaks Site visibility settings page’ #46365
  • Tweak – Updates Launch Your Store and Coming Soon Mode copy #46668
  • Tweak – Use “You’re” in task list progress title #45978
  • Tweak – WC_Discount: Add a filter for the items to apply coupons array. #45791
See all developer updates
  • Dev – Deprecate the woocommerce_should_load_paypal_standard filter used to bypass loading PayPal Standard. Only load the PayPal Standard payment method on stores that have connected their account or have existing PayPal orders. #47205
  • Dev – Add an e2e test to ensure that each <CheckboxControl> component has a unique ID. #45655
  • Dev – Add API Rest endpoint to duplicate product #46141 #46141
  • Dev – Add a stalebot workflow for the flaky e2e test reporter #46585
  • Dev – Add a test for the woocommerce_specific_allowed_countries option. #45810
  • Dev – Add changes to tests projects #46016
  • Dev – Add E2E test for Analytics products segmentation filter. #46164
  • Dev – Add E2E tests for the Product Filter: Price block #45855
  • Dev – Add E2E tests to cover Publish dropdown options #46658 #46658
  • Dev – Added xstate v5 inspector functionality #45879
  • Dev – Add k6 perf test assertions to check for the correct page title and presence of footer. #46485
  • Dev – Adds an e2e test to initiate a woo.com connection #45813
  • Dev – Adds JS linting scripts for woocommerce plugin #46214
  • Dev – Adds some end to end tests to verify page titles of key WC pages #46448
  • Dev – Adds tests for merchant shipping methods #45966
  • Dev – add the expected template version to template bump warning #46021
  • Dev – Add WordPress.WP.Capabilities config to phpcs.xml #45927
  • Dev – Blocks – E2E: Fix visibility store #46521
  • Dev – Blocks: Isolate performance tests from E2E tests #46773
  • Dev – Blocks E2E: Ensure legacy template names are supported #46269
  • Dev – Blocks E2E: Fix basic role-based functionality tests #46684
  • Dev – Blocks E2E: Fix translation test where “Verzendmethoden” label is not visible #46756
  • Dev – Bump data-loader from 2.1.0 to 2.2.2 #45906
  • Dev – Bump eslint-import-resolver-typescript from 3.2.4 to 3.6.1 #45910
  • Dev – Change the support request GH workflow to label issues as not planned when closing them #46202
  • Dev – CI: adds e2e tests into ci-jobs and ci.yml #45190
  • Dev – Classic Templates: enable Products by Tag E2E test #46428
  • Dev – cleanup in blocks package.json #45230
  • Dev – Convert the downloable checkbox into a toggle #46693 #46693
  • Dev – E2E tests: add merchant e2e tests to cover inserting WooCoommerce patterns #46066
  • Dev – E2E tests: add remaining tests to cover merchant checkout block flow / milestone #45755
  • Dev – E2E tests: add test for merchant insert all woo blocks to page #45896
  • Dev – E2E tests: fix command palette tests failing with Gutenberg installed #46407
  • Dev – E2E tests: fixed flaky product creation test #45884
  • Dev – E2E tests: fix locator in create order tests #45983
  • Dev – E2E tests: fix tests that are failing with Gutenberg active #46842
  • Dev – E2E tests: make payment page tests more resilient to theme changes #45888
  • Dev – E2E tests: stabilize more tests #45923
  • Dev – E2E tests: update the default theme to use twentytwentythree #45937
  • Dev – Enable “Custom Fields” feature flag for by default #46832 #46832
  • Dev – Enhance merchant new order test #45965
  • Dev – Enhances the e2e tests for the marketing overview page #45814
  • Dev – Enhance the merchant create order e2e tests #45816
  • Dev – Fix a few flaky e2e tests #46494
  • Dev – Fix daily e2e tests run setup #46511
  • Dev – Fixes a bug introduced previously where enabling localStorage.xstateV5_inspect would cause the page to crash because it’s not supposed to be used in prod builds. #46109
  • Dev – Fix some flaky e2e tests #45856
  • Dev – Fix template revert tests where the template is unreachable due to pagination. #46373
  • Dev – Fix tests that were failing against HPOS environment setup. #46242
  • Dev – Implement Lazy Loading inside ProductPage component #46399 #46601
  • Dev – Include list of failed tests in Slack notifications #46360
  • Dev – In k6 perf tests, add checks for the Shop page title and presence of product headers. #46469
  • Dev – Move metrics job into ci.yml #46471
  • Dev – Perf tests: fix environment setup issue #46787
  • Dev – Remove a few unnecessary test annotations. #45596
  • Dev – Remove periods at the end of section descriptions #46346 #46346
  • Dev – Skip CYS header test. #46217
  • Dev – Update @wordpress-env package to version 9.0.7 #46177
  • Dev – Update copy of inventory management fields #45801 #45801
  • Dev – Update core critical flows documentation #46400
  • Dev – Update deprecated node 16 action to the latest in ci.yml #46673
  • Dev – update makepot command to use include vs exclude #46287
  • Dev – [CYS] Update footer and header test to not use snapshots. #46221
See all enhancements
  • Performance – Apply upstream performance improvement to _get_templates_paths #45619
  • Performance – Avoid unnecessary query when HPOS compatibility mode is disabled. #46616
  • Performance – Don’t load REST API when generating possible routes. #45134
  • Performance – Introduce vendor bundling to the blocks cart and checkout pages to improve performance. #45859
  • Performance – [Performance] Don’t load REST API when hydrating blocks requests. #45134
  • Enhancement – Add filters to support adding custom search methods in HPOS admin and remember the last used search option #45954
  • Enhancement – Add more translator context to ambiguous words #46382
  • Enhancement – Adds support for co-branded credit cards #45903
  • Enhancement – Don’t show a product in the featured products block if the status is other than published and the user doesn’t have read capability for that product. #45763
  • Enhancement – Improve formatting for SE, LV, CZ, SK postcodes #45478
  • Enhancement – Regenerate share key on the fly #46662
  • Enhancement – Various UX improvements in HPOS CLI cleanup tool. #45322

View the full changelog.

Get WooCommerce 8.9

👉 To upgrade: See our update guide or download the latest release from WordPress.org.

🐞 Found a Bug? Please submit a report it on GitHub.



7 responses to “WooCommerce 8.9: New Product Editor, more customizable than ever”

  1. Hello,
    the question is more : what’s the real status of the Paypal Plugin 🙂
    – on the plugin page “Yes, WooCommerce PayPal Payments offers experimental support for the new WooCommerce Cart & Checkout Blocks. The team continues to work on providing a seamless integration with the new WooCommerce Blocks.”
    – and in the FAQ “Yes, PayPal Payments includes partial Block Cart/Checkout support. Full support for the new WooCommerce Cart & Checkout Blocks is in active development. ”

    Moreover, i hope you will work back on the blockification of the templates, filters and so on, so FSE users can work with Woo correctly 😉 Seems you are working new things every months (LYS, etc.), except FSE templates 🙂 Let me me know if i can help to point out what’s strongly missing.

    1. pia8c Avatar

      Hi Marc!

      RE “what’s the real status of the Paypal Plugin 🙂”. I reached out to some of the folks over at PayPal, and the reason that the support is listed as partial or experimental is because there are still some features being worked on to get it to full compatibility.

      Right now, PayPal Payments supports Blocks primarily for the PayPal branded widget. There are features such as ACDC components, local payment method support, and subscriptions which are still being worked on.

      Regarding FSE updates, there is work being done around making that experience more robust, and an update on that is coming soon. However, we are always excited to get feedback around what the community thinks is needed most, so please let me know what you think is missing. I’d love to share that feedback with the teams 🙏

  2. […] WooCommerce 8.9 är släppt och bjuder på nyheter för produkthanteringen, med bland annat stöd för anpassade fält. […]

  3. […] 5月14日にWooCommerce 8.9 に関するリリース記事が出ましたので、日本語訳の投稿を作りました。 […]

  4. Thanks to everyone involved in these updates, I and my clients are very appreciative of Woocommerce (and WordPress) being available for us to use at no/low cost.

Leave a Reply

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