WooCommerce
WooCommerce block cart and checkout: what changes for your store and plugins

Since WooCommerce 8.3, released in November 2023, new stores get the WooCommerce block checkout and a cart built from blocks by default, instead of pages based on shortcodes. What about stores that were already running? Nothing changed for them, and nobody switched them over automatically. The classic cart and checkout pages keep working until the admin changes something.
This article reflects the state of things as of December 2023. It covers what the new checkout looks like and how to edit it, which plugins can break on it, how to add your own fields and when it actually makes sense to migrate.
Table of Contents
How is the WooCommerce block checkout different from the classic shortcode?
Block checkout is a checkout page built from Gutenberg editor blocks and rendered in React. It is no longer generated from a PHP template called by . A block is a self-contained piece of the page that you can move, hide or configure in the editor. In practice, this means you change the layout, the order of sections and the checkout text without code and without digging into theme templates. That’s handy. All order steps sit on one page, fields are validated as the customer types, and data goes to the store through the Store API, the interface the browser uses to talk to WooCommerce without reloading the form. And the old checkout? It relied on PHP hooks, points in the code where plugins attached their own functions.
WooCommerce block cart: what customers and admins gain
In the block cart, customers change quantities, remove products and enter coupons without a page reload. The new total and shipping cost show up right away. Admins, in turn, set up the cart’s look directly in the editor, without asking a developer for every small tweak. Things you can adjust include:
- the order summary and the order of its elements,
- the cross-sells block, which suggests additional purchases,
- the empty cart view with your own text and products,
- the buttons that lead to checkout and their labels.
Plugin compatibility with block checkout: why some extensions stop working
This is where it gets tricky. Plugins that added fields or content to checkout through PHP hooks such as woocommerce_after_order_notes have nothing to hook into in the block checkout. The page simply isn’t generated from a PHP template. For an extension to work, it has to use the mechanisms described in the cart and checkout blocks documentation: registering inner blocks, extending the Store API, and slots and filters on the JavaScript side. The usual casualties are:
- payment gateways,
- shipping methods and pickup point selection,
- invoices and the NIP (Polish tax ID) field,
- marketing consents,
- loyalty programs.
The symptom is sneaky. On the old checkout everything works, while on the new one the plugin’s element just disappears. No error, no message, nothing.
Checkout fields: how to add NIP, consents and custom customer data
You add extra fields to the block checkout with an extension that supports blocks. Classic field editors based on the woocommerce_checkout_fields filter won’t show them there. The official API for custom fields in block checkout is still in the works, so for now every plugin does it its own way. In a Polish store this usually comes down to three things: a NIP field for invoices, a consent checkbox and order notes. The wording of consents and the way you collect them follow from data protection and consumer rights law (in my view there’s no point guessing here, better have a lawyer review it). And if your plugin doesn’t support blocks? K4.pl can build a custom extension that works with the new checkout.
How to check your store before switching to block checkout
Before you switch anything, find out whether every plugin that touches the cart and checkout declares compatibility with blocks and with HPOS in WooCommerce. Then test a full order on a copy of the store. Not on production. I recommend this order:
- Make a copy of the store on a test server (staging).
- List the plugins related to payments, shipping and form fields.
- Open the checkout page in the editor and look for notices about incompatible extensions.
- Place a test order for every payment and shipping method.
- Check the emails, invoices and data shown in the order admin panel.
How do you go back to the classic WooCommerce checkout? Easily. In the page editor, you replace the checkout block with the classic checkout block or insert the shortcode. Same with the cart, just with the shortcode.
Should you switch to WooCommerce block checkout now?
It depends. A new store with a simple set of payment and shipping options can safely start with block checkout. A store loaded with checkout extensions should rather wait until they become compatible. Four things decide it: how many plugins modify the order, whether you have custom fields, whether your theme is non-standard and whether you have the time and people for testing. The more add-ons, the bigger the chance that something quietly disappears.
The direction is clear, though: WooCommerce is moving to blocks. So even if you’re sticking with the shortcode today, plan the migration. When choosing new plugins, check whether they work with the block cart and checkout, and in the coming months WooCommerce block checkout will simply be the next natural step.
Frequently asked questions
Will my store switch to block checkout on its own after updating to WooCommerce 8.3?
No. The change applies to new installations, and your cart and checkout pages stay as they were. To move to blocks, you have to convert them manually.
How do I know if a plugin is compatible with the block cart and checkout?
Check the plugin description or the developer’s documentation. The checkout page editor will also tell you, because it shows a notice about incompatible extensions. But the final test is still a test order on a copy of the store.
Can I use blocks in part of the store and keep the classic shortcode at checkout?
Yes. The cart and checkout are separate pages, so you set each one up independently. The classic shortcode works alongside the rest of the content built with blocks.