What transfers, in what shape, and where WordPress bends.
Merchants who migrate from WooCommerce to Shopify move catalog, customers, and orders on a well-understood route. The risk is not the rows: it is the handful of places where WordPress and Shopify model the world differently, and the two WooCommerce-specific assets, subscriptions and the blog, that deserve their own plan rather than a checkbox.
Master data: WooCommerce → pipeline → Shopify, one way, in dependency order
The old store: stays selling through the build, frozen only at the final delta
Products & variationsA WooCommerce variable product and its variations become one Shopify product with variants. Shopify allows up to 2,048 variants per product but only 3 options, so a variable product built on 4 or more attributes is restructured as a combined listing or split. Bundles, composites, and other plugin-defined product types have no native Shopify type: each is a per-product decision, not a field map.Woo → Shopify
Customers & passwordsCustomers migrate with their addresses and marketing consent. Passwords never migrate. WordPress stores salted hashes that Shopify cannot ingest, so every customer receives an account-activation invite at launch. That is a communications plan written in advance, not a surprise discovered at go-live.Woo → Shopify
Order historyHistorical orders import by SKU through the Admin API or a migration app, products first, never the admin CSV. Imported orders arrive archived for history, reporting, and support lookups: nothing re-charges and no notification fires. The original WooCommerce order number rides along as an attribute so support can still find order 48213 by its old name.Woo → Shopify
SubscriptionsWooCommerce Subscriptions contracts do not import; they are re-created on Shopify's subscription APIs or an app built on them. Saved payment methods move through a gateway-level token migration, Stripe and comparable processors support exporting customer payment profiles, so subscribers keep their cards and their renewal dates. The renewal calendar is reconciled before cutover, then the switchover is timed between billing runs.Woo → Shopify
Permalinks & redirectsWooCommerce permalink bases are whatever you configured; Shopify's prefixes are fixed. /product/ becomes /products/, /product-category/ becomes /collections/, and every trailing-slash URL changes. A complete 1:1 301 map is built from a live crawl reconciled against the XML sitemap, loaded before launch, never assumed.Woo → Shopify
The WordPress blogContent is the asset WordPress is genuinely good at, so it gets a decision, not a default. Either the posts migrate into Shopify's blog with their own 301 map, or WordPress stays live for content on a subdomain with clean canonicals and cross-linking. The call is made on editorial workflow and SEO equity, per store.decision, then move