Speed Up Your WooCommerce Site With High Performance Order Storage (HPOS)!

Speed Up Your WooCommerce Site With High Performance Order Storage (HPOS)!

For well over a year now, WooCommerce developers have been working on a new feature that completely changes how the ecommerce platform stores order data and has the potential to significantly increase the speed of your WooCommerce site in the process! Originally called Custom Order Tables, it has been renamed to High Performance Order Storage, or HPOS for short, which is a nice summary of the feature’s value proposition. Let’s talk about what HPOS is and what it means for you as a WooCommerce store operator.

What is HPOS?

Up to now, WooCommerce orders have been stored in the same place as most other WordPress “objects”, such as posts, pages, and image metadata: the posts and postmeta tables in the WordPress database. It does this using WordPress’s built-in support for custom post types (CPT), which allows plugins like WooCommerce to define custom data types that are stored along default WordPress data types in these tables. There are many potential advantages to using the CPT approach in WordPress extensions, including a smaller code base for third-party plugins since they can use the existing WordPress APIs to create and modify data instead of providing their own code to manipulate it, and automatic compatibility with other plugins that work with default WordPress data structures, such as data migration tools. However, especially as the volume of orders increases, these upsides come at the cost of performance, both for WooCommerce and the site as a whole; we’ll discuss these issues in more depth in the next section.

High Performance Order Storage (HPOS) implements an alternate order storage mechanism that uses dedicated tables for storing order data in the WordPress database. This involves changing much of the WooCommerce core code that interfaces with the database storage for orders. The HPOS project has also developed migration and verification tools to assist with moving existing orders from the posts-table-based storage to the custom tables.

Why HPOS?

As I’ve already alluded to, and as the name suggests, the main reason you’d want to use High Performance Order Storage on your site is because of the speed benefits that it can provide to sites with a significant stored order history. Testing reported on by the development team last month showed that using HPOS can result in a 33% speed boost in checkout time, and the time to search and filter orders may be reduced by anywhere from 70% to 97%. This represents a significant WooCommerce performance boost for tasks on both the frontend and backend of your site.

Perhaps even more importantly, moving WooCommerce orders out of the part of the database that also stores other site content such as pages, blog posts, and WooCommerce products can decrease the amount of time it takes to retrieve this content in response to user requests. As of writing this, results for this type of performance impact have been promised but not yet published by the WooCommerce team, and the degree of impact will likely be correlated to the number of past orders that are stored on your site; stores with a large order history will probably benefit more. But any decrease in page load time is a good thing for both user experience and organic search engine performance (a.k.a. SEO).

Getting Started with HPOS

The option to enable High Performance Order Storage has been available in WooCommerce since version 7.1, but as of WooCommerce 7.6 it is still not recommended for production use. WooCommerce plans to enable HPOS by default in WooCommerce 8, which is planned for release this August, so we expect to see a production-ready version of HPOS available within the next few months. For now, if you’d like to give it a whirl, you can find it under the Experimental features heading in WooCommerce > Settings > Advanced > Features, and once enabled you can choose where you want to store orders by navigating to WooCommerce > Settings > Advanced > Custom data stores (you’ll also need to migrate your existing orders to the custom database tables). You may not be able to enable HPOS if you have WooCommerce-related plugins on your site that do not yet specify that they are compatible with HPOS.

At WP Zone, we’ve been working on making our WooCommerce-related plugins ready for HPOS so that our customers and users can enjoy the benefits we’ve covered in this article. The top priority in this regard has been our WooCommerce reporting plugin suite, Product Sales Report Pro and Export Order Items Pro and their free equivalents, Product Sales Report and Export Order Items, since these products are likely to be the most significantly impacted by a change in order storage format. We’re happy to report significant progress in HPOS compatibility implementation and testing, and HPOS can now be used with Product Sales Report and Product Sales Report Pro as a beta feature (Product Sales Report Pro is included in select WP Zone memberships at no additional cost, and also available for purchase on its own). Stay tuned for HPOS compatibility updates to other products in the coming weeks and months!

If you’re don’t plan to upgrade to HPOS right away when a production-ready version is released in WooCommerce core, don’t worry; we plan to continue supporting the legacy order storage format for now, with our products featuring automatic detection of and adaptation to the order storage method currently enabled on your site.

Jonathan Hall

Jonathan is the lead backend WordPress developer at WP Zone.