HPOS – Legacy Database Orders
-
Greetings,
i have a question because of the change that is happening right now regarding the HPOS compatibility.
What should i watch out before switching from legacy to HPOS?
Was it that until now the orders was being saved with both ways? So it will not really change that much if i switch to HPOS and disable the compatibility? or should i keep the compatibility on?
What if a plugin i am using still uses the legacy way will that cause an issue? will i have to maybe change the plugin or change the plugin code in order to work with the new way?
Could you please guide me?
I am attaching some images with that options:
https://prnt.sc/ckqQiDlEX5qU
https://prnt.sc/BHFPiEqTM17rIn the second image do i have to synchronize the orders and then change to HPOS?
Will i see a process bar of the synchronization? How does that work? Is it like a scheduled task?-
This topic was modified 3 weeks, 1 day ago by
vasilisweb.
-
This topic was modified 3 weeks, 1 day ago by
-
Hi @vasilisweb,
Thanks for reaching out with these thoughtful questions around HPOS. It’s great that you’re checking before making the switch, as that’s definitely the best approach.
Yes, when compatibility mode is enabled, WooCommerce keeps orders synced between the new HPOS tables and the legacy post tables. This helps older plugins continue working while you transition.
Before disabling compatibility mode, the main thing to check is whether all plugins that interact with orders are HPOS compatible. If a plugin still relies on the legacy order storage and is not HPOS compatible, it could stop working correctly once compatibility mode is disabled.
You can check this under WooCommerce > Settings > Advanced > Features, where WooCommerce usually shows plugin compatibility notices.
A few recommendations before switching fully to HPOS:
– Make sure WooCommerce, your theme, and all plugins are fully updated
– Test the change on a staging site first if possible
– Confirm that payment, shipping, invoicing, ERP, fulfillment, and reporting plugins support HPOS
– Keep compatibility mode enabled for a while if you are unsure about some pluginsIn many cases, modern plugins already support HPOS, so merchants can switch without issues. But if an older plugin is not compatible, you may need to update it, contact the plugin author, or eventually replace/customize it.
You can also review the official HPOS documentation here:
https://woocommerce.com/document/high-performance-order-storage/I hope this helps clarify things a bit.
Thank you so much for that information.
Although i have some new ones,
- If i dont see any notices that means that every plugin i have is HPOS compatible? So i can proceed switching to HPOS?
- Also you mentioned checking in a staging environment, how would i check it?
- In order to switch from legacy to HPOS i need to check the “Enable compatibility mode…” in order for the orders to be synced between those 2 modes. Do i see a progress bar or like a notice that the orders have been completely synced? So i will be able to switch the the HPOS mode and deactivate that compatibility mode since the orders have been fully migrated?
- If i see any plugin using the old way and its incompatible with the HPOS i either update it to the latest version or if it cant be updated do i have to look another way to achieve that functionalities? In order to work as it is supposed to?
- What if i don’t switch to the HPOS will that affect my website’s functionality?
- Is this like mandatory to switch?
- How will it affect the website if i don’t switch?
I will list down the steps so i get to see if i understand this correctly and for other people having the same query:
- Check compatibility about plugins ( if the plugins support HPOS )
- if they do support HPOS you enable the compatibility mode in order to synchronize the orders
- if they don’t support HPOS then check if there is a newer version of that plugin if there isn’t a newer version, try and find maybe another plugin that do the same thing?
- When the synchronization completes then change from legacy to HPOS and disable the complatibility mode?
Hi @vasilisweb,
Thanks for the detailed follow-up questions, you’re understanding the process very well already, and your summary is mostly correct.
If you do not see any HPOS incompatibility notices under WooCommerce > Settings > Advanced > Features, that is usually a good sign that your active plugins declare HPOS compatibility. Still, it’s always recommended to test carefully, especially on a staging site if possible.
About synchronization, yes, when you enable compatibility mode, WooCommerce synchronizes orders between the legacy posts tables and the HPOS tables. WooCommerce handles this in the background using scheduled actions.
You can monitor the synchronization progress under: WooCommerce > Status > Scheduled Actions
You may see actions related to order synchronization there while the migration is running. Depending on the number of orders, it may take some time.
Your understanding of the process is correct overall:
- Check whether your plugins support HPOS
- Update plugins/themes/WooCommerce to the latest versions
- Enable compatibility mode so orders sync between both storage systems
- Wait for synchronization to complete
- Switch the authoritative storage to HPOS
- Keep compatibility mode enabled for some time if you are unsure about older plugins
- Once fully confident all plugins work correctly with HPOS, you can disable compatibility mode
And yes, if a plugin is not HPOS compatible and no update is available from the developer, then you may eventually need to replace it with an alternative that supports HPOS properly.
As for whether HPOS is mandatory, currently WooCommerce still allows legacy storage, so your site should continue functioning. However, HPOS is the future direction of WooCommerce order storage and brings better scalability and performance, especially for larger stores.
Over time, more plugins and WooCommerce features will be optimized around HPOS, so migrating eventually is recommended.
You can also review the official guide here for additional details: https://woocommerce.com/document/high-performance-order-storage/
I am afraid I may have edited my previous message after you saw it, so you might not have seen the full version of my questions. But thank you very much for your help so far.
I am trying to better understand the safest and most correct way to proceed with the migration.
Could you please review my questions once more?
Hi there!
No problem at all, and thank you for clarifying that.
I completely understand that you want to make sure the migration is done in the safest and most correct way possible, especially on a live store. I reviewed your questions again carefully, and your understanding of the HPOS migration process is correct overall.
To summarize the safest approach once more:
- First, verify whether your active plugins/extensions support HPOS
- If there are no incompatibility notices, that is usually a positive sign, but testing on a staging site is still strongly recommended
- Enable compatibility mode first so WooCommerce can synchronize orders between legacy storage and HPOS tables
- Wait until the synchronization process fully completes
- After synchronization is finished, test the store functionality carefully (orders, payments, refunds, emails, subscriptions, integrations, etc.)
- Once everything is confirmed working properly, switch HPOS to be the authoritative order storage
- Finally, after additional testing, you can disable compatibility mode if you no longer need synchronization with legacy tables
You are also correct that:
- If a plugin is incompatible, updating it may resolve the issue
- If the developer does not plan to support HPOS, you may eventually need to look for an alternative plugin
- HPOS is highly recommended for performance and future compatibility, but it is not strictly mandatory right now
I hope this helps.
Thank you very much for that detailed step to step introduction.
The only question i have for now is that how can i test it, how will i know that it is working properly.
What do i have to have in mind when doing that?
Hi there!
I can understand your concern. Here is a helpful guide to check whether you are using any incompatible extensions:
https://woocommerce.com/document/high-performance-order-storage/#incompatible-extensionsI hope this helps.
Greetings,
I have a few additional questions regarding HPOS.
My understanding is the following:
- If HPOS is enabled as the authoritative order storage, compatibility mode should be disabled and there should not be any synchronization-related issues.
- If the site is still using the legacy order tables and compatibility mode is disabled, compatibility mode should first be enabled and allowed to complete the synchronization process before switching to HPOS. Therefore the compatibility mode could be deactivated?
- If there is a plugin compatibility issue, the plugin should either be updated or replaced so that HPOS compatibility can be achieved before the migration.
I also have some questions regarding “Sync on Read”.
Was “Sync on Read” responsible for keeping orders synchronized between both storage systems (Legacy and HPOS)?
Now that “Sync on Read” has been disabled, does that mean orders are no longer synchronized in both directions?
I believe I may have misunderstood the purpose of this feature. Was it working alongside Compatibility Mode, and if so, how did the two features interact?
Could you also explain the practical difference between the current setup and the previous one when “Sync on Read” was enabled?
Also, after completing the migration from Legacy Order Storage to HPOS, how can I verify that HPOS is working correctly?
Are there any checks or indicators that I should look for to confirm that orders are being stored properly and that synchronization has completed successfully?
In other words, what would be the recommended way to validate that the migration has been completed correctly and that HPOS is functioning as expected?
Is it acceptable to continue using Legacy Order Storage, or is it expected to be deprecated and eventually removed in a future WooCommerce release?
Do I need to migrate to HPOS at some point, or is HPOS mainly recommended because it offers better performance, improved compatibility with modern WooCommerce features, and reduced database load?
I am trying to understand whether migrating to HPOS is a future requirement or simply a recommended best practice.
If I understand correctly, when Compatibility Mode is enabled, WooCommerce continues to synchronize order data between both storage systems (the legacy posts/postmeta tables and the HPOS tables), regardless of whether the authoritative storage is set to Legacy or HPOS. Is that correct?
Or, when HPOS is selected as the authoritative storage, are new orders no longer written to the posts and postmeta tables, even if Compatibility Mode is enabled?
In other words, does Compatibility Mode ensure that both data stores remain synchronized, with the only difference being which storage system is considered authoritative?
I would appreciate it if you could clarify this point, as I want to fully understand how the synchronization mechanism works before proceeding with the migration.
Thank you in advance for your clarification.
Hi @vasilisweb,
Your understanding is accurate overall. Let me work through each point carefully.
Your three opening statements are correct. The only thing worth adding to the second point: when you enable compatibility mode and let synchronization complete, you can then disable it, but only once you’re confident all your plugins work correctly with HPOS. There’s no harm in leaving it enabled temporarily while you validate.
Regarding Sync on Read:
Sync on Read was a safety mechanism that ran during order retrieval: whenever an order was read from one storage system, WooCommerce would check whether the other storage had a newer version and, if so, write the more recent data back. It was essentially a background reconciliation tool, not the primary sync mechanism, Compatibility Mode was always the main sync mechanism. Sync on Read was removed because it added significant database overhead on every order read, and it was considered a crutch rather than a proper migration path. Its removal doesn’t change anything for stores that are using Compatibility Mode correctly; that remains the right way to keep both stores in sync during a migration.
How Compatibility Mode and authoritative storage interact — the precise answer
This is the most important point to get right. Here’s exactly how it works:
- Compatibility Mode ON + Legacy authoritative – new orders are written to the legacy posts/postmeta tables first, then synced to the HPOS tables.
- Compatibility Mode ON + HPOS authoritative – new orders are written to the HPOS tables first, then synced to the legacy tables. So yes, both stores remain up to date regardless of which is authoritative, as long as Compatibility Mode is on.
- Compatibility Mode OFF + HPOS authoritative – orders are only written to the HPOS tables. The legacy posts/postmeta tables are no longer updated.
So your understanding is correct: Compatibility Mode ensures both data stores remain synchronized, and the authoritative setting only determines which storage system is considered the source of truth for reads and writes.
Validating the migration
After switching to HPOS, here’s how to confirm it’s working correctly: go to WooCommerce → Status → Scheduled Actions and confirm there are no pending or failed order synchronization actions. Then confirm that order count matches between storage systems. Finally, place a test order and confirm it appears correctly in WooCommerce → Orders with all the expected data intact.
Is migrating to HPOS mandatory?
Legacy order storage has not been deprecated and no hard removal date has been announced publicly. Migrating is strongly recommended. HPOS brings meaningful performance improvements, especially on stores with large order volumes, and future WooCommerce features are being built with HPOS as the foundation. It’s best thought of as a recommended best practice for now, with the expectation that it will eventually become the only supported path. Migrating sooner rather than later puts you in a better position for the long term.
I hope that covers everything. Let us know if any of this needs further clarification!
You must be logged in to reply to this topic.