Full Answer
The classic WooCommerce checkout was a PHP-rendered form — tracking plugins hooked into its DOM elements, jQuery events, and WooCommerce action hooks to fire purchase, add-to-cart, and begin-checkout events. The Blocks checkout replaces all of that with a React component that manages its own state. The form fields look similar to the customer, but the underlying code is completely different, and tracking scripts that depend on the old selectors or events find nothing to attach to.
The breakage is insidious because it's silent. GA4 doesn't report missing events — it just shows fewer purchases. A store owner comparing this month's GA4 revenue to last month's might attribute the dip to a marketing problem when it's actually a tracking problem. The only reliable signal is a widening gap between GA4-reported purchases and WooCommerce's own order count in the admin.
Tracking plugins that fire events server-side rather than client-side aren't affected by the Blocks migration, because they capture the purchase event from the WooCommerce order hook — not from the checkout page's JavaScript. That architectural choice insulates the tracking from frontend changes, which is exactly the kind of resilience that matters when WordPress and WooCommerce ship breaking updates on a monthly cycle ([WooCommerce tracking](https://seresa.io/blog/woocommerce-tracking/)).