Skip to main content
GrN.dk

Main navigation

  • Articles
  • Cases
  • Contact
  • Your Digital Project Manager
  • About Greg Nowak
  • Services
  • Portfolio
  • Container
    • Excel Freelancer
    • Kubuntu - tips and tricks
    • Linux Apache MySQL and PHP
    • News
    • Image Gallery
User account menu
  • Log in

Breadcrumb

  1. Home

WooCommerce HPOS: The Migration Behind the Settings Toggle

By Greg Nowak. Last updated 2026-07-29.

High-Performance Order Storage (HPOS) appears in WooCommerce as a settings option. On an established store, it should be managed as a data migration.

The distinction matters because changing the authoritative order datastore can affect checkout extensions, refunds, subscriptions, admin tools, exports, accounting feeds, warehouse systems, and custom reports. The technical switch may be quick; proving that the surrounding operation still works is the real project.

What HPOS changes

WooCommerce historically stored orders as WordPress posts and post metadata. HPOS uses dedicated tables, including _wc_orders, _wc_order_addresses, _wc_order_operational_data, and _wc_orders_meta. These tables give WooCommerce a structure and indexes designed specifically for order data.

HPOS has been the default for new WooCommerce installations since version 8.2, released in October 2023. Older stores can still use posts as their authoritative datastore while WooCommerce synchronises order data into the HPOS tables. After migration, those roles can be reversed: HPOS becomes authoritative and posts can remain as a synchronised backup during the observation period.

WooCommerce will not allow the authoritative datastore to be changed while orders are waiting to synchronise. That safeguard is useful, but it does not establish that every plugin, report, or external integration is compatible.

How large is your HPOS project?

The number of orders matters, but operational complexity is often the better sizing signal. A modest store with subscriptions, custom fulfilment logic, and direct database reports may require more care than a larger store running a clean, standard stack.

Store profile Main risk Sensible approach
Standard plugins, no custom order code An extension has incomplete HPOS support Check compatibility, migrate on staging, then test every important order flow
Custom snippets or admin screens Code assumes an order is a WordPress post Audit and update the code before production migration
Subscriptions, multiple payment methods, or complex refunds Less common lifecycle events fail after cutover Build a test matrix covering purchases, renewals, failures, cancellations, and refunds
BI, accounting, shipping, or warehouse connections External systems read legacy tables directly Trace each order-data consumer and test it against HPOS
High order volume or long history Backfill overruns the change window Time the complete migration on a recent production copy
A practical HPOS scoping matrix for established WooCommerce stores.

Find the dependencies the plugin screen cannot see

WooCommerce can block HPOS when an active extension declares itself incompatible. Treat that as a useful first check, not a complete audit. Undeclared custom code, legacy snippets, must-use plugins, SQL reports, and external database readers remain your responsibility.

The most important code smell is direct order access through wp_posts, wp_postmeta, get_post(), get_post_meta(), or raw SQL. With HPOS authoritative, a direct read from legacy tables may be stale and a direct write may update data WooCommerce no longer uses.

Order code should normally work through WooCommerce APIs. For example, retrieve an order with wc_get_order(), change metadata using methods such as update_meta_data(), and call save(). Also inspect custom columns, meta boxes, bulk actions, and hooks attached to the legacy order editor: HPOS uses its own order administration screens.

Then look outside WordPress. Ask finance, fulfilment, customer support, and the agency or developer maintaining the store which systems consume order data. A CSV export launched by an employee can be just as operationally important as a formal API integration.

A safer migration sequence

1. Rehearse on representative data

Create a staging environment that closely reflects production, including current plugins, custom code, configuration, and a recent database copy. Enable compatibility mode while WordPress posts remain authoritative, then allow or trigger the historical-order backfill.

WooCommerce’s scheduled process backfills 25 orders per batch. That may be adequate for a smaller store. For larger datasets, use wp wc hpos sync and record the duration so the production plan is based on evidence rather than guesswork.

2. Test business workflows, not only checkout

Run checkout with every live payment method. Test failed and retried payments, refunds, order edits, emails, stock changes, coupons, webhooks, exports, and fulfilment hand-offs. Where relevant, test subscription purchases, renewals, cancellations, and payment-method changes.

Repeat critical tests with synchronisation enabled and disabled. Check what staff see in the order screen and what downstream systems receive. Reconcile a sample of order totals, statuses, addresses, tax, payment references, and custom metadata.

3. Cut over with an observation window

In production, begin with posts authoritative and compatibility mode enabled. Complete the backfill, confirm that no orders remain pending, and verify the data before selecting the WooCommerce order tables as authoritative.

Choose a naturally quieter period, but do not treat this as an unattended night-time toggle. Have technical and operational owners available to watch new orders, payment callbacks, scheduled actions, logs, support contacts, and key integrations.

Use the current CLI commands

WooCommerce’s current CLI tooling lives under wp wc hpos; the older wp wc cot namespace is deprecated. Useful read and migration commands include:

  • wp wc hpos status — show HPOS, compatibility-mode, and pending-sync status.
  • wp wc hpos count_unmigrated — count orders still awaiting synchronisation.
  • wp wc hpos sync — synchronise from the currently authoritative datastore to the other.
  • wp wc hpos verify_data — compare order data across both datastores while compatibility mode is enabled.
  • wp wc hpos diff <order_id> — inspect differences for a particular order.

The dedicated CLI documentation now uses verify_data. That supersedes the older verify_cot_data command still found in some migration guidance. Take extra care with repair, backfill, and cleanup options: they can overwrite or remove data and should follow a reviewed discrepancy analysis and a current backup.

Rollback is part of the release plan

Keep compatibility mode enabled after making HPOS authoritative. If a serious problem appears while both datastores are current, WooCommerce can switch back to posts quickly. If synchronisation has already been disabled, reverting remains possible, but posts must first be brought up to date.

Define rollback triggers before cutover: missing payment data, incorrect totals, broken renewals, failed fulfilment exports, or unexplained datastore differences are clearer signals than “the site feels odd.” Record who can make the decision and how affected orders will be checked afterward.

Turn the toggle into a controlled change

A good HPOS project leaves the store with more than a new database setting. It produces an integration inventory, cleaner order-access code, a repeatable test plan, verified data, and an understood fallback route.

If you need someone to coordinate the technical audit with payment, reporting, fulfilment, and agency teams, talk to Greg about an HPOS migration review. The first useful step is usually a scoped audit—not a production toggle.

Related on GrN.dk

  • Search Console Can See Social Posts—Your Reports Need a New Map
  • Search Console’s Hourly Data Changes the Post-Launch SEO Checklist
  • Upgrading PHP 5: Use PHP 7 as a Bridge, Not the Destination

Need help with this kind of work?

Discuss your HPOS migration with Greg Get in touch with Greg.

Sources

  • High Performance Order Storage (HPOS)
  • How to enable High Performance Order Storage
  • A large store’s guide to enable HPOS on WooCommerce
  • HPOS extension recipe book
  • HPOS CLI Tools
Last modified
2026-07-29

Tags

  • WooCommerce
  • wordpress
  • HPOS
  • Ecommerce Operations

Review Greg on Google

Greg Nowak Google Reviews

 

Illustrated infographic summarizing: Copilot Has Repo-Level Metrics Now. What Should Teams Measure?
Copilot Has Repo-Level Metrics Now. What Should Teams Measure?
2026-07-29

GitHub’s repo-level Copilot metrics show where AI is active, but not whether it adds value. This scorecard connects usage with delivery, quality, and cost.

Illustrated infographic summarizing: Not Every AI Job Needs an Instant Answer: Batch the Backlog
Not Every AI Job Needs an Instant Answer: Batch the Backlog
2026-07-28

Move delay-tolerant AI work into dependable batch queues to cut processing costs without compromising quality, data controls, or urgent workflows.

Illustrated infographic summarizing: A stray Set-Cookie can waste your CDN: audit the cache at the edge
A stray Set-Cookie can waste your CDN: audit the cache at the edge
2026-07-27

Cloudflare Cache Response Rules can recover wasted CDN capacity, but first you need a route-level audit of public, personal and authenticated responses.

Illustrated infographic summarizing: Shorter TLS certificates expose every renewal you never automated
Shorter TLS certificates expose every renewal you never automated
2026-07-26

Shorter TLS lifetimes leave less room for manual handoffs and faulty deploy hooks. Build a renewal path that protects service availability.

Illustrated infographic summarizing: One Timeout, Two Orders: Make AI Actions Safe to Retry
One Timeout, Two Orders: Make AI Actions Safe to Retry
2026-07-25

A timed-out AI action may already have succeeded. Stable keys, durable ledgers, queues and stored results prevent a routine retry from duplicating real work.

Illustrated infographic summarizing: Your AI Visibility Dashboard Needs a Methodology, Not More Charts
Your AI Visibility Dashboard Needs a Methodology, Not More Charts
2026-07-24

A practical framework for measuring AI-search visibility with fixed prompts, repeated tests, separate metrics, retained evidence, and honest reporting.

Illustrated infographic summarizing: AI Admin APIs Are Here—But Your Directory Is Still the Source of Truth
AI Admin APIs Are Here—But Your Directory Is Still the Source of Truth
2026-07-23

New AI admin APIs can automate access and spend controls, but reliable governance still starts with authoritative directory data and clear ownership.

Illustrated infographic summarizing: OpenAI Presence Arrived—But Is Your Workflow Ready for an Agent?
OpenAI Presence Arrived—But Is Your Workflow Ready for an Agent?
2026-07-22

Before an AI agent can take on real work, its workflow needs clear scope, permissions, handoffs, evaluation cases, and production monitoring.

Illustrated infographic summarizing: Chatbot Transcripts Quietly Became a Retention and Redaction Problem
Chatbot Transcripts Quietly Became a Retention and Redaction Problem
2026-07-21

Chatbot transcripts spread across providers, logs and support tools. Here is how to map each copy, redact sensitive data and test deletion properly.

Illustrated infographic summarizing: Cloudflare Service Keys Stop in September: Find Every Caller
Cloudflare Service Keys Stop in September: Find Every Caller
2026-07-20

Cloudflare Service Keys stop working on September 30, 2026. Here is how to find every caller, move to scoped API tokens and avoid a late outage.

More articles
RSS feed

GrN.dk web platforms, web optimization, data analysis, data handling and logistics.