WooCommerce HPOS
WooCommerce originally stored every order as a WordPress post, in the same wp_posts and wp_postmeta tables that hold your pages, blog posts and menu items. HPOS, short for High-Performance Order Storage, moves orders into database tables of their own.
Wondering whether your shop uses it, and why it matters? This article explains the difference the storage method makes and where Core shows the current state.
Where to find the state
Directly
- Navigate to 'Advanced' > 'Virtual Hosts'.
- Select the virtual host.
- Navigate to 'WooCommerce HPOS'.
Via the project
- Navigate to 'Projects'.
- Select the project.
- Navigate to 'Advanced' on the environment you want.
- Under 'Virtual Host', click 'Manage'.
- Navigate to 'WooCommerce HPOS'.
What the page shows
Cyberfusion asks the site itself, and shows one of four states:
| State | Meaning |
|---|---|
| 'Enabled' | Orders are stored in their own tables. Nothing to do. |
| 'Disabled' | WooCommerce is running, but orders still go into the shared posts table. |
| 'WooCommerce not activated' | The plugin is installed but not activated, so there is no order storage to configure. |
| 'WooCommerce not installed' | This site does not run WooCommerce. |
What HPOS changes
HPOS is short for High-Performance Order Storage.
WooCommerce originally stored every order as a WordPress post, in the same wp_posts and wp_postmeta tables that hold your pages, blog posts and menu items. HPOS moves orders into database tables of their own.
With orders in the shared posts table, every order query works its way through a table that also holds all your other content, using a structure designed for posts rather than orders.
That's fine for a few hundred orders. As the order count grows: order lists in the admin take longer to load, order searches get slow, and storefront pages that look up order data feel sluggish. The shop keeps working, it just gets slower the more successful it becomes.
With HPOS, orders sit in tables built for orders, and the queries stay fast as the shop grows.
Switching it on
HPOS is a WooCommerce setting, so you change it in WooCommerce.
- Make a backup.
- Pick a moment you can check the shop afterwards.
- Click 'Read the docs' on the page — it opens WooCommerce's own documentation, which covers the switch and how existing orders are migrated.
Finding every shop that has it off
The 'WooCommerce HPOS enabled' health check flags shops per cluster, so you don't have to open each site. See All about health checks.