Cherry Seed

What is WooCommerce HPOS and why does it break tracking plugins?

hpos woocommerce tracking-plugin order-storage breaking-change crud-api

Quick Answer

HPOS — High-Performance Order Storage — moves WooCommerce orders from WordPress post meta tables into dedicated custom database tables. Tracking plugins that read order data with get_post_meta calls break silently under HPOS because orders are no longer stored as posts. The data still exists, but it must be accessed through WooCommerce's CRUD methods instead. HPOS became the default in WooCommerce 8.2, so any tracking plugin not updated to the CRUD API stops reading order values — transaction IDs, revenue, line items — without throwing a visible error.

Full Answer

Before HPOS, WooCommerce stored every order as a WordPress post of type shop_order, with order details — totals, line items, payment method, customer ID — saved as post meta rows. Tracking plugins could call get_post_meta on the order ID and retrieve whatever they needed. It worked, but it was slow: WordPress's wp_postmeta table isn't indexed for the kinds of queries WooCommerce needs at scale, and stores with tens of thousands of orders saw admin pages grind to a halt.

HPOS replaces that with purpose-built tables — wp_wc_orders, wp_wc_orders_meta, wp_wc_order_addresses — designed for order queries. The performance improvement is significant, but the migration changes the data access contract. Any code calling get_post_meta on an order ID now gets back empty results, not an error. The order exists; the function simply doesn't know where to find it. That silence is the problem — a tracking plugin reports zero revenue on a purchase event, and the store owner has no warning that anything broke.

The fix is straightforward: plugins must use WooCommerce's order object methods — $order->get_total(), $order->get_id(), $order->get_items() — instead of direct meta queries. Tools like Transmute Engine use the CRUD API for all order data access, so they work identically under both HPOS and legacy storage. Before updating WooCommerce or enabling HPOS, check that every tracking plugin in your stack explicitly declares HPOS compatibility. Related: How to audit your WooCommerce tracking stack.

Sources

Programmatic Access

GET https://seresa.io/wp-json/cherry-tree-by-seresa/v1/seeds/1096

Cite This Answer

Cherry Tree by Seresa - https://seresa.io/seed/wordpress-tracking/what-is-woocommerce-hpos-and-why-does-it-break-tracking