Hi there,
Thanks for the update and great to hear you’ve enabled High-Performance Order Storage (HPOS) on your staging site!
You’re absolutely right — when HPOS is enabled and syncing is disabled, new order data should only be stored in the custom order tables
Just to confirm — have you also enabled the Compatibility Mode option along with High-Performance Order Storage on your staging site?
If Compatibility Mode is enabled, WooCommerce will continue syncing order data to the legacy wp_posts and wp_postmeta tables, which could explain the shop_order_placehold entries you’re seeing.
To fully bypass the legacy tables, I’d suggest disabling Compatibility Mode (under WooCommerce → Settings → Advanced → Features) and then placing a new test order to see if anything still gets added to the wp_posts table.
For more details you can use this guide.
https://woocommerce.com/document/high-performance-order-storage/#synchronization
I hope this helps.
No I do not have compatibility mode on which is what confuses me
See attached screenshot here of the settings https://ibb.co/G4MQxxZ7
Is there a database field that gets set when you untick Enable compatibility mode so I can check its set properly?
There are no errors in the logs when the compatibility tickbox is checked/unchecked
Hi @dabeecher,
You’re right that with High-Performance Order Storage (HPOS) enabled, new orders are stored in custom tables like wc_orders instead of wp_posts. However, WooCommerce still creates a lightweight placeholder post in wp_posts with the post type shop_order_placehold.
This is expected behavior, it ensures the order ID stays consistent across systems (post.ID === order.ID), maintains compatibility with legacy plugins, comments (order notes), and scheduled actions, and avoids potential conflicts. The actual order data lives in the HPOS tables, so these placeholders are just for reference.
You can read more about this in the official HPOS FAQs here:
https://developer.woocommerce.com/2022/10/11/hpos-upgrade-faqs/
So no issues on your end, everything is working as intended.
That said, we’d be grateful if you could share your feedback here: https://ww.wp.xz.cn/support/plugin/woocommerce/reviews/#new-post
Thanks again for reaching out!
Hi Mahfuzur Rahman(woo-hc),
Thanks for getting back to me and confirming that is default functionality, I was just under the assumption it would by pass wp_posts all together so good to know
Hi there
You’re very welcome! We’re glad we could clarify that for you.
If you’ve found WooCommerce helpful, we’d really appreciate it if you could take a moment to leave us a review. Your feedback helps us improve and also supports other store owners in choosing the right tools.
You can leave a review here:https://ww.wp.xz.cn/support/plugin/woocommerce/reviews/#new-post
Thank you