High-Performance Order Storage (HPOS) moves WooCommerce orders off the posts table into dedicated tables. For a vanilla shop, enabling it can be a careful admin task. For Dutch and EU merchants with custom fulfilment plugins, Exact or AFAS sync, B2B price books, and agency-built order screens, HPOS is a migration programme. The failure mode is familiar: staging looks fine, production dual-run hides a plugin still writing to wp_posts, and three weeks later finance reconciles against the wrong store of truth.
HostHob is a Rotterdam WordPress and WooCommerce API agency. We migrate HPOS when custom code and ERP edges are in play — not when you only need someone to click the compatibility mode toggle. Technical companion: WooCommerce HPOS custom integrations. Adjacent B2B work: WooCommerce B2B custom pricing & ERP sync.
What “HPOS migration agency” means in practice
Buyers searching this phrase usually already failed a DIY enablement. Typical symptoms: order search broken in wp-admin, custom reports empty, ERP connector creating duplicate orders, or a WMS plugin declaring “compatible” while still using post meta queries that miss HPOS rows. Our job is to make order authority unambiguous again.
- Plugin and custom-code audit against HPOS APIs (
wc_get_order, order datastore, CRUD — not rawWP_Queryon shop_order). - Rewrite or quarantine offending integrations before authoritative mode.
- Dual-run plan with verification queries finance can read.
- Cutover window with rollback criteria written down, not vibes.
- Post-cutover monitoring for sync lag and admin UX regressions.
Why Netherlands stacks are spicy
Dutch WooCommerce often sits beside Exact Online, AFAS, or Globe, plus iDEAL-heavy checkout and B2B account pricing. Order meta is not decorative — it carries ledger references, VAT treatments, and fulfilment flags. HPOS changes where that meta lives and how bulk tools must query it. If your ERP connector was written in 2019 against post meta, “turn on HPOS” is how you get silent half-syncs. ERP context: WordPress Exact & AFAS ERP integration and NL WooCommerce Exact / AFAS koppeling.
Multisite or multi-administratie setups raise the stakes further — credentials and order namespaces must stay isolated: WooCommerce Multisite ERP credentials.
Architecture we insist on
- Compatibility mode first — prove reads/writes through WooCommerce CRUD while posts sync still exists; measure drift daily.
- Custom code on CRUD only — no direct SQL to posts for orders; no assuming
post_statussemantics without the HPOS equivalents. - Async ERP edge — checkout must not call Exact synchronously; queues already help HPOS migrations because retries stop hammering half-migrated state. Pattern shared with B2B ERP pricing sync.
- Admin tooling inventory — every custom order list column, bulk action, and export job gets an owner and a test order.
- Authoritative HPOS only after drift reports stay clean for an agreed window.
We document which plugins are truly compatible versus marketing-compatible. “Works with HPOS” on a changelog is not a test plan.
Audit workshop (buyers skip this, then pay twice)
Before estimates, we inventory: custom plugins in mu-plugins and private Git repos, order-related cron, REST callbacks from WMS, and any BI tool reading MySQL directly. Direct SQL consumers are often the real blockers — HPOS will not fix a Metabase query that still joins wp_posts. Either those queries move to APIs/exports, or HPOS authoritative mode waits. Saying that early keeps trust.
Delivery checklist
- Full plugin/custom code HPOS audit with severity ratings.
- Staging clone with production-like order volume sample.
- Dual-run enabled; drift report reviewed with ops for N days.
- ERP and WMS connectors verified create/update/refund paths.
- Authoritative switch criteria signed; rollback drill executed once.
- Runbook: how to spot datastore mismatches; who to call.
When not to hire us
If your shop uses only well-maintained official extensions, no custom order SQL, and no ERP, follow WooCommerce’s own HPOS guide and stay in-house. If you are mid-catalogue redesign with unstable checkout, fix checkout first — migrating datastore under a broken funnel multiplies noise. If you need a theme redesign sold as “HPOS migration,” that is not us.
Hire us when custom integrations, Exact/AFAS edges, or B2B pricing touch orders and you need a Netherlands-based team that will say no to unsafe cutovers. Broader EU API delivery: API integration agency Europe. Deep technical notes: HPOS custom integrations.
Refunds, subscriptions, and partial captures
Happy-path orders are the easy part. Refunds, partial refunds, subscription renewals, and manual order edits in wp-admin are where HPOS-incompatible code still peeks at post meta and writes a second shadow state. We script UAT for those paths with real payment gateway sandboxes used by Dutch merchants — not only cash-on-delivery test orders. If a subscription plugin vendor is behind on HPOS, we either patch responsibly, quarantine features, or delay authoritative mode. Shipping a store that cannot refund cleanly is worse than waiting two sprints.
Reporting deserves the same honesty. Many “custom dashboards” are SQL views against posts. Those views must be rewritten or replaced with WooCommerce Analytics / scheduled CSV / API extracts before finance closes a month on HPOS. We put reporting owners in the kickoff so engineering is not blamed for a BI team that never attended.
Performance expectations without hype
HPOS exists because post-table order storage hurts at volume. You should expect admin order screens and some lookups to improve once custom code stops fighting the datastore — not magic conversion-rate gains. If someone sells HPOS as an SEO or marketing project, walk away. It is an infrastructure correctness project that unlocks safer scale for integrations. Pair it with queue hygiene and object caching; do not expect HPOS alone to fix a theme that runs heavy queries on every product archive.
For shops already planning Exact or AFAS work, sequence matters: stabilize HPOS, then expand ERP scope — or explicitly combine programmes with one dual-run calendar. Parallel unsupervised migrations are how you lose order IDs.
Plugin triage method we use in week one
We classify every order-touching extension into green (official HPOS-compatible and verified on your staging clone), amber (claims compatibility but uses borderline APIs — needs regression scripts), and red (raw SQL, post meta assumptions, or abandoned authors). Red items get a rewrite, replace, or temporary feature freeze before authoritative mode. Amber items get owners and nightly drift checks. Green items still get smoke tests — changelogs lie less often than marketing pages, but they still lie.
Custom agency code in the child theme or mu-plugins is treated as red until proven otherwise. That includes “temporary” admin tools written during Black Friday two years ago. If nobody remembers who owns a bulk-export script, HPOS will find it for you at the worst moment. Inventory first; pride later.
Checkout, gateways, and Dutch payment reality
iDEAL, Afterpay/Clearpay-style flows, and manual B2B invoices all create order state machines that custom code hooks into. We verify gateway callbacks still resolve the correct HPOS order, that thank-you pages read the right totals, and that failed payments do not leave ghost rows in both datastores during dual-run. Mollie, Buckaroo, and similar stacks used in the Netherlands deserve explicit UAT — not a generic Stripe-only test plan copied from a US blog.
WooCommerce Blocks versus classic shortcode checkout also matters. Custom fields injected only into classic checkout may vanish for Blocks customers while HPOS still stores incomplete meta. Migration programmes that ignore checkout flavour ship a datastore upgrade and a conversion regression in the same week. We separate those risks in the plan even when one team wants one go-live banner.
People and freeze windows
HPOS cutover needs a freeze on deploying new order plugins, a finance contact for reconciliation spot-checks, and an engineer who can roll back without debate at 22:00. We write rollback criteria as observables — drift above N orders, admin search failing for today’s orders, ERP create error rate above threshold — not as “if it feels wrong.” Feeling wrong is how committees stall; observables are how operators act.
After authoritative mode, keep dual-run verification queries available for a cooling period even if sync to posts is off. Being able to prove “these twenty orders match” calms controllers faster than a vendor blog post about HPOS benefits.
Finally, treat documentation as a deliverable equal to code: which plugins were patched, which queries were retired, where drift reports live, and who owns the next WooCommerce major upgrade. HPOS is not a one-time checkbox — it is the new baseline for every order feature you ship afterward. Agencies that disappear after the toggle leave you rediscovering landmines on the next Black Friday plugin install.
Related: HPOS custom integrations · B2B pricing ERP sync · Exact / AFAS koppeling · Multisite ERP credentials · API agency Europe