WooCommerce Migration Checklist
Describe your move (new host, new domain, or both) and get a step-by-step runbook: order freeze, HPOS, search-replace, webhooks, DNS and QA.
Check HPOS before you move orders
WooCommerce can store orders either the old way (as posts in wp_posts/wp_postmeta) or in dedicated High-Performance Order Storage tables (wp_wc_orders, wp_wc_order_addresses, wp_wc_order_operational_data, wp_wc_orders_meta). Check which one is active at WooCommerce > Settings > Advanced > Features before migrating. If compatibility mode is on, WooCommerce is actively syncing both table sets, and a migration should wait for that sync to finish rather than copying a database mid-sync.
Changing domains without breaking serialized data
A plain find-and-replace in phpMyAdmin can corrupt PHP's serialized data (used by widgets, some plugin settings and theme options), because it changes string lengths without updating the length prefix stored alongside them. WP-CLI's search-replace handles this correctly:
Run it once with --dry-run to preview, then again without it, adding --skip-columns=guid so you don't rewrite post GUIDs, which are meant to stay stable.
Webhooks point at a fixed URL
WooCommerce's own webhooks, plus anything a payment or shipping app registered, store a fixed delivery URL. A host or domain change breaks every one of them silently: they don't error in your admin, they just stop arriving. Re-create or re-point each one at the new URL, and send a real test event before you consider the migration finished.
Questions people ask
Do I need to worry about HPOS if I'm only changing hosts, not upgrading WooCommerce?
Yes if compatibility mode is on: that means both old and new order tables are being kept in sync, and copying the database mid-sync can leave the new site with mismatched order data. Let the sync finish first.
Why can't I just find-and-replace the domain in phpMyAdmin?
It can corrupt PHP's serialized data (used by widget settings and some plugin options), which stores an exact character count alongside each string. wp search-replace updates that count correctly; a plain SQL replace doesn't.
What commonly gets forgotten in a WooCommerce migration?
Webhooks. They fail silently, with delivery attempts logged only on the sending app's side, not always visibly in WooCommerce, so a payment or fulfillment integration can look fine in admin while quietly not firing.
Should I freeze new orders during the move?
For anything beyond a same-day, low-traffic move, yes: a short freeze or a plan to re-export/re-sync orders placed after your last export avoids losing them in the gap.
I'm moving from a different platform entirely, not WooCommerce to WooCommerce.
This checklist assumes WooCommerce to WooCommerce. For platform changes, start with the Etsy to Shopify CSV converter or the matching CSV tool for your source platform.
Related tools
Last reviewed 30 September 2026.
Sources: WooCommerce: High-Performance Order Storage (HPOS) · WP-CLI: wp search-replace
