WooCommerce HPOS: 5 Easy Steps to Enable It Safely in 2026

WooCommerce HPOS guide: order records moving from a crowded table into dedicated tidy order tables (TechBella Solutions)

If your WooCommerce store is older than a couple of years, your orders may still live in the same database tables as your blog posts. That works, but it is not what WooCommerce recommends any more. High-Performance Order Storage, usually shortened to HPOS, moves orders into dedicated tables designed for stores.

This WooCommerce HPOS guide explains what it is, why it matters, and how to switch an existing store safely in five steps. Everything here follows WooCommerce’s official HPOS documentation. Because the change touches your orders, the golden rule is simple: back up first, test on a copy and switch during a quiet period.

HPOS stepWhere to do it
Check compatibilityWooCommerce > Settings > Advanced > Features
Turn on compatibility modeSame page; syncs orders to the posts table
Watch the sync (25 orders at a time)WooCommerce > Status > Scheduled Actions
Switch to HPOS, keep compatibility modeSame Features page
Based on the official WooCommerce HPOS documentation. Always back up and test on staging first.

What WooCommerce HPOS is

According to the official HPOS documentation, HPOS is WooCommerce’s order storage system, formerly called Custom Order Tables. Instead of keeping orders in the WordPress _posts and _postmeta tables, it uses custom database tables built for ecommerce data.

The page lists three benefits:

  • Scalability: dedicated tables mean fewer read and write operations and fewer busy shared tables.
  • Reliability: simpler targeted backup and restore, and read and write locks that prevent race conditions.
  • Simplicity: separate, easier-to-browse tables and more flexibility for extension developers.

HPOS in plain words

Think of an old filing cabinet where invoices, receipts, photos and letters all sit in the same drawers. You can find anything if you know exactly where to look, but the drawers get crowded and slow. HPOS gives orders their own cabinet, with labelled drawers made for the job.

For a small store the difference may be invisible. For a store with years of orders, many staff searching the admin and several tools reading data at once, a cabinet built for orders is faster to search and less likely to jam. That is the real promise of HPOS, and it is why WooCommerce made it the default for new stores.

Is HPOS on by default?

For new stores, yes. The documentation says HPOS is on by default for new installations from WooCommerce 8.2 onwards. Existing stores are not migrated automatically, so a store set up before that may still use the old storage. You can check under WooCommerce > Settings > Advanced > Features.

Before you switch

HPOS only works smoothly if your extensions support it. If an incompatible extension is detected, WooCommerce disables the switch and offers a View and manage link that lists the extensions involved. Extension developers are responsible for adding HPOS support, so ask vendors of any plugin that handles orders, shipping, invoices or subscriptions.

Also check anything outside WordPress that reads orders directly from the database, such as reporting tools, accounting integrations or data warehouses. WooCommerce’s developer guide for large stores recommends auditing those systems.

Five steps to enable HPOS safely

Step 1: Back up and test on staging

Take a full database and file backup, then repeat the process on a staging copy with realistic order data. Place a test order, refund it and check emails, invoices and shipping labels.

Step 2: Check extension compatibility

Open the Features page and review any warnings. Update plugins first, since many vendors added HPOS support in recent releases. Do not switch until the list is clear, or you accept a known gap.

Step 3: Turn on compatibility mode

Tick Enable compatibility mode (synchronizes orders to the posts table). WooCommerce then keeps order data in sync between the old and new tables, which lets you go back if something misbehaves.

Step 4: Wait for the sync to finish

Background actions copy orders across, 25 at a time. You can watch or run them under WooCommerce > Status > Scheduled Actions. Large stores can use the command wp wc cot sync instead, and the large-store guide describes extra verification commands. Do not rush this step.

Step 5: Switch to HPOS and keep compatibility mode for a while

Once both tables are in sync, select the HPOS option. The documentation recommends leaving compatibility mode on for some time, because reverting to the posts storage can then be done instantly if you need to.

What HPOS changes for developers

If a developer maintains custom code on your store, HPOS affects them directly. Orders are no longer WordPress posts, so code that queries order data through post functions or reads order meta straight from the post tables will stop seeing the right data once HPOS is the main storage.

The WooCommerce developer documentation asks extensions to use the WooCommerce order APIs, such as wc_get_order() and the order object methods, and to declare compatibility with the custom_order_tables feature. Plugins that do this are marked compatible on the Features screen. Ask your developer to search your custom code for direct database queries on wp_posts and wp_postmeta that involve orders, and fix them before the switch. This is the most common hidden problem in older stores.

Subscriptions, bookings and other custom post types

Extensions that rely on custom post types, such as WooCommerce Subscriptions or Bookings, should stay active while you enable HPOS. If one was already deactivated, the documentation says to switch back to the posts storage, let the sync complete, and then enable HPOS again. Skipping that can cause data discrepancies.

Large stores and extra care

WooCommerce’s developer guide for large stores suggests a more careful sequence. Keep the posts storage as the authoritative source while you enable compatibility mode, then migrate past orders with the command line, and only then promote HPOS. It also recommends auditing every external system that reads the posts tables directly, such as data warehouses, shipment tracking and accounting tools, because those will not see new orders in the old tables once you switch.

If you process many orders each hour, schedule the sync outside peak trading and watch server load while it runs. For a store with a long history, the first full sync can take a while, so plan a window of days, not minutes, and keep selling normally while it completes.

What can go wrong, and what to do

  • An extension is flagged as incompatible. Update it, ask the vendor for an HPOS-ready version or replace it. Do not switch while the warning stands unless your developer has reviewed the code.
  • Orders appear to be missing in a report. Check whether the report reads the old tables directly. Compatibility mode keeps them synced, which is why leaving it on helps.
  • The sync seems stuck. Look in Scheduled Actions for failed or pending actions, and make sure WP-Cron or a real cron job is running.
  • Something looks wrong after the switch. Select the WordPress posts storage again. With compatibility mode on, the documentation says reverting is instant.

A rollback plan, written down

Even with compatibility mode on, write the rollback plan before you start. Put it in one short document that anyone on the team can follow:

  1. Who decides to roll back, and what symptom triggers it (for example, orders not appearing, or payments not completing).
  2. How to select the WordPress posts storage on the Features screen.
  3. How to confirm that orders placed during the HPOS period are present afterwards, using compatibility mode’s synced data.
  4. Who contacts customers if any order needs fixing.

Having a plan makes the decision calmer. Teams that have a way back tend to be more careful going forward, because the switch no longer feels like a gamble.

What to test after the switch

  • Order creation, payment and status changes.
  • Refunds, partial refunds and emails.
  • Admin order search and filters.
  • Shipping, invoicing and accounting integrations.
  • Reports and exports used by your team.
  • Any custom code your developer wrote that reads order data.

HPOS, reports and exports

Reports, exports and dashboards are where HPOS surprises people. WooCommerce’s own reports are built for the new tables, but older third-party reporting plugins, spreadsheet exports and accounting connectors may still read orders from the posts tables. With compatibility mode on, both tables hold the same data, so they keep working during the transition.

Before you turn compatibility mode off, ask each reporting or accounting vendor whether it reads from HPOS directly. Make a list of the monthly reports your team depends on, run each one before and after the switch, and compare the totals. If a figure differs, you have found the integration to fix while the safety net is still in place.

How it relates to speed and payments

HPOS helps when order volume grows, but it is not a magic speed button. Page caching, hosting and plugins matter too, as we explain in our guide to speeding up WordPress and WooCommerce. If you use a payment plugin, confirm that it declares HPOS support, in the same way you would check block checkout support, as in our checkout block payment gateway guide.

Our WooCommerce development team can audit extensions, rehearse the switch on staging and carry it out for you.

Choosing the right moment

Pick a quiet period for the switch and avoid it before big promotions, payday weekends or a public holiday sale. Give yourself a few days of normal trading to watch for odd behaviour in orders, emails and reports. Tell your team in advance, so staff know what changed and whom to contact if something looks different in the admin. A calm, planned switch is nearly always uneventful, which is exactly what you want from a change to the heart of your store.

Want HPOS enabled without surprises?

We can audit your extensions, rehearse the switch on staging, run the sync and test orders, refunds and integrations before production.

See WooCommerce development

Frequently Asked Questions

Do I have to enable HPOS?

It is WooCommerce’s recommended storage and is the default for new stores from version 8.2, but existing stores are not migrated automatically. Check your extensions first and switch when they are compatible.

Can I go back if something breaks?

Yes, if you kept compatibility mode on. The documentation says reverting to the WordPress posts storage can then be done instantly.

How long does the sync take?

It depends on your order count. WooCommerce copies orders in batches of 25 through scheduled actions, so large stores take longer and may prefer the wp wc cot sync command.

Share This Article:

Start a project

Having a project idea in mind?

Tell us what you are building. A few lines about your goals are enough to start.

  • What you want to achieve
  • Your current website or setup
  • Deadlines and a rough budget