High-Performance Order Storage: Call for testing, vol 2

As we’re approaching the final stages of implementation of High-Performance Order Storage (HPOS), we believe we’re ready to share the latest solution with you. Thus, we’d like to invite our community for the second round of testing. Our first call for testing was focused on data migration. This time around, we are primarily interested to hear your feedback about the following areas:

  • Extension and Integration points
  • Switching between the Custom Post Type and HPOS solution
  • Synchronization
  • User Interface

However, we welcome feedback on all the aspects of your user and development experience, so don’t hesitate to share your thoughts with us!

Real data. Real improvements.

We have been doing a lot of testing with the synthetic data we created via WC Smooth Generator. In this testing, we’re primarily interested in results from sites that are running a variety of plugins and use real-world data. We’re also interested to discover all the possible failure modes of our solution on different hosting configurations, so if you’re running an atypical setup, we’d love to hear from you!

How to test

Please only perform the tests on your testing/staging environment. This code is not production ready yet and is for testing purposes only.

To set up the testing environment, you need to follow these steps:

  1. Download and install the testing package
  2. Enable the experimental feature
  3. Create new database tables
  4. Set up the HPOS settings according to your preferences

1. Download and install the package

The testing zip package can be downloaded from the project release page in GitHub. After navigating to the page, click woocommerce.zip to download the testing build.

This page will always contain the latest version of the testing package for HPOS, so you can be confident that downloading the woocommerce.zip package via this link means you’re running with the latest version of fixes.

During the testing phase, we will be producing new testing build often, so please check this page in case you discover any problems to make sure you’re running the latest build.

Install the package

Upload this package as you would with any other release. The usual path is to add it via Plugins > Add new > Upload Plugin > Choose file > Install Now > Activate/Replace current with uploaded version.

2. Enable the experimental feature

Once your package is installed, go to WooCommerce > Settings > Advanced > Features and enabled the checkbox under Experimental Features titled “Custom order tables”.

3. Create the new High-Performance Order tables

In case you took part in our previous round of testing, we recommend you delete the order tables first to make sure the new schema gets created correctly. To delete the tables, go to WooCommerce > Status > Tools and find “Delete the custom orders tables” row and click on Delete.

To start using the new features, you will need to create the new tables for HPOS. Go to WooCommerce > Status > Tools and find “Create the custom orders tables” row. Click on Create button and check the confirmation that the tables have been created.

4. Set up HPOS according to your preferences

A new setting should be available to you under WooCommerce > Settings > Advanced > Custom data stores.

Select the following radio button to switch your Orders data store to the WooCommerce tables:

  • Use the WooCommerce orders tables

Check the following check box to keep the Orders tables synchronized:

  • Keep the posts table and the orders tables synchronized

Depending on the number of orders in your store, it might take a while until your WooCommerce instance will be able to switch to the new HPOS. 

You can speed up the initial synchronization by executing the sync in the WP CLI environment by running wp wc cot sync:

> wp wc cot sync

This feature is not production ready yet. Make sure you are not running these commands in your production environment.

There are 22872 orders to be synced.

Order Data Sync  100% [===========================================================================================================] 1:34 / 1:12

Migration completed.

Success: 22872 orders were migrated in 90.777226 seconds

What to test

We’d love to hear how the solution worked for you in your normal day-to-day workflows and with the usual set of plugins that you use in your WordPress store. 

Extension and integration points

We believe most of the actions, filters, and API integration points should be fully usable by now. If your code, plugins, and integrations work with orders in any way, we’d love you to test your solution with the new HPOS and let us know your thoughts.

Switching between the Custom Post Type and HPOS solution

Have you encountered any problems with switching between the order storage solutions? Does your extension work with either of the data stores?


Has the synchronization worked for you? Did it get stuck at some points? Were you confused about any aspect of the experience? Do your customizations still work when the synchronization is either enabled or disabled? 

Presumably, running your customization with sync disabled will make it easier to discover problems, so please spend some time testing also with sync disabled.

User Interface

We’d like to hear from you about your usual workflows, or the workflows of your clients. From creating new orders in the WP admin interface and via checkout to order processing, searching for orders, previewing them, and all the interactions you think are important in the context of working with orders.

How to share feedback

Please share feedback with us via proton[at]matticspace[dot]com. Ideally, include your system status report and in case of problems any steps to reproduce. Also, feel free to comment on this post, we’re excited to hear your thoughts!

6 responses to “High-Performance Order Storage: Call for testing, vol 2”

  1. Tadeáš Kula Avatar
    Tadeáš Kula

    I have never in woocommerce life been so excited about anything but this… so cool. We need to test it!

  2. Awesome! Can’t wait until this is production ready. I was already trying to do the same with products. Maybe I’m a bit ahead of time, but are there any plans to do the same with product meta data?

    Is there any hook/filter for developer to add custom columns to the tables? For example I use the vat plugin and would be nice to have a vat_number column in the wp_wc_order_addresses table.

  3. The same steps for migration will be there for the final version?

  4. Hi guys. Thanks for the news.
    Will this new implementation give the ability to use staging (and push changes into production) with WooCommerce as well?
    Many thanks! 🙂

  5. andreamichielin Avatar

    Hi guys, thanks for the news.

    Will this new implementation give the ability to use staging (and push changes into production) with WooCommerce as well please?
    Many thanks.

Leave a Reply

Your email address will not be published. Required fields are marked *