Leaving WooCommerce breaks three things: your URLs, your plugins and anything tied to stored credentials, like customer passwords and subscription payment tokens. Products, customers and orders move with the right import tool. The real work is rebuilding plugin logic, mapping every old URL to Shopify’s fixed structure and keeping tracking continuous, so budget more time for redirects and QA than for the import itself.
Is Shopify the right move?
Shopify trades flexibility for less maintenance. Hosting, security patches, core updates and checkout become Shopify’s problem; in return, you work inside its data model, URL structure and app ecosystem.
| Signal | Points to Shopify | Points to staying |
|---|---|---|
| Maintenance | Plugin updates break things and you pay a developer to keep the site up | Your stack is stable and rarely touched |
| Checkout | You want a fast hosted checkout with Shop Pay | Your checkout depends on custom fields and logic |
| Catalog | Products fit three options or fewer | Products configured from many attributes and pricing rules |
| Content | The blog supports the store | The site is a content business with a shop attached |
Two cost checks: a payment provider other than Shopify Payments adds a Shopify transaction fee, and apps turn plugin licenses into monthly subscriptions. If B2B pricing or checkout customization is on your list, read Shopify vs Shopify Plus before picking a plan.
Planning the migration
Inventory everything before importing anything. Most surprises come from a plugin nobody remembered was doing a job.
- List every active plugin and what it does for customers, staff and data (plugins that write order meta, send emails or sync to an ERP are easy to miss)
- List every integration: ERP, 3PL, accounting, email, reviews, product feeds, marketplaces
- Crawl the live store and export every URL: products, categories, tags, pages, posts and linked files
- Record a weekly baseline: sessions, conversion rate, revenue per session, organic clicks by page
- Pick a launch window outside peak season, early in the week, with a developer available for 48 hours after
- Set a catalog freeze from the final import to launch, or plan a delta import
As a typical range, a store with a few hundred products and standard plugins takes six to ten weeks, including a new theme. Subscriptions and multiple languages add time. Generic relaunch steps such as benchmarks and staging crawls are in the website redesign SEO checklist; this guide covers what’s specific to leaving WooCommerce.
Migrating products, customers and orders
Use Shopify’s Store Importer for simple stores, or a bulk import app such as Matrixify when you need control over custom fields, orders and metafields. Either way, test-import to a development store first and check sample records field by field.
| Data | Moves? | What to plan for |
|---|---|---|
| Products, variants, images | Yes | Max three options per product; other attributes become metafields |
| Categories | As collections | Collections are flat; hierarchy lives in navigation, not URLs |
| Custom fields (ACF and similar) | Yes, as metafields | Create metafield definitions before import |
| Customers and addresses | Yes | Carry email marketing consent explicitly |
| Customer passwords | No | Passwordless login or account invites |
| Historical orders | Yes, with an app | Make sure the import triggers no emails or inventory changes |
| Reviews | Via review app import | Match on SKU or handle |
| Active subscriptions | Depends on payment tokens | Confirm with gateway and subscription app |
| Gift cards and store credit | Depends on plan and tool | Settle the approach before launch |
Products and variants
Keep each WooCommerce slug as the Shopify handle; that one decision makes your redirect map predictable. Carry over Yoast or Rank Math titles and descriptions, then check SKUs, weights (shipping rates depend on them), sale pricing (the regular price goes in compare-at price) and inventory by location.
Customers and orders
Import marketing consent as its own field; marking every imported customer as subscribed creates compliance and deliverability problems. For orders, run the test import with notifications off, then confirm nothing reached customers, inventory counts or your accounting integration. Shopify starts its own order numbering, so add an order prefix to help support tell new orders from imported ones.
Rebuilding plugin functionality with apps and custom code
For each plugin, pick one path: native Shopify feature, app, custom code or drop it. Native first, app second, custom last. Every app adds a monthly fee and often storefront scripts, so drop anything nobody would miss.
| WooCommerce plugin type | Shopify replacement | Watch for |
|---|---|---|
| Yoast or Rank Math | Native SEO fields, auto-generated sitemap, editable robots.txt.liquid | Structured data now comes from your theme |
| WPML or Polylang | Shopify Markets with Translate & Adapt or a translation app | Languages move to subfolders such as /fr/ |
| Product add-ons | Options app or line item properties | Add-ons that change price need app support |
| Table rate shipping | Shipping profiles and rate conditions | Complex rules may need an app |
| Wholesale pricing | Native B2B (Plus only) or a wholesale app | Price lists and payment terms |
| Custom checkout fields | Cart attributes or checkout extensions | Most in-checkout changes need Plus |
Subscriptions and reviews
Active subscribers are the riskiest data in the migration. They move without re-entering card details only if your current gateway can transfer payment tokens to the processor behind your new subscription app. Get that answer from both sides before setting a launch date, and plan a card-update email for anyone who can’t be migrated; expect some of them not to come back.
Reviews are easier: most review apps import a WooCommerce export. Afterward, compare review counts on your top 20 products with the old site.
Shopify’s URL structure and redirects
Shopify fixes URLs by resource type. You can’t remove the /products/ or /collections/ prefix or nest categories, so nearly every indexed URL changes.
| Page type | Typical WooCommerce URL | Shopify URL |
|---|---|---|
| Product | /product/blue-mug/ | /products/blue-mug |
| Category | /product-category/kitchen/mugs/ | /collections/mugs |
| Shop page | /shop/ | /collections/all |
| Page | /about/ | /pages/about |
| Blog post | /mug-care-guide/ | /blogs/news/mug-care-guide |
| Account | /my-account/ | /account |
WooCommerce permalinks are configurable, so check your actual patterns in the crawl. Then build the map:
- Generate the obvious redirects in a spreadsheet. With handles matching slugs, most product and category rows follow a pattern.
- Hand-map the rest. Discontinued products go to the closest collection, merged categories to the surviving collection, never everything to the homepage.
- Cover variants. WooCommerce URLs usually end in a slash and Shopify’s don’t; test both forms. Old variation URLs with attribute parameters usually just need the product redirect.
- Import by CSV. Shopify’s native redirects are exact path matches with no wildcards or regex. Pattern rules need an app.
- Know the 404 rule. A Shopify redirect only fires when the old path doesn’t resolve to a live page, so you can’t redirect a URL Shopify still serves.
Also check feeds, date archives and files under /wp-content/uploads/ that still earn links.
Tracking and analytics continuity
Keep the same GA4 property, Meta pixel and event names so before-and-after comparisons hold.
- Checkout tracking works differently. Shopify doesn’t let you load arbitrary scripts in checkout, so checkout and purchase events come through Customer events: app pixels (Google & YouTube, Facebook & Instagram) or custom pixels. A GTM container in the theme won’t see checkout steps.
- Avoid double counting. Pick one source for each purchase event and remove duplicates.
- Expect feed IDs to change. Shopify’s sales channels usually generate new product IDs, which resets item-level history in Shopping campaigns and catalog ads. If that history matters, use a feed setup that keeps your old IDs.
- Switch Klaviyo carefully. Re-point flows triggered by WooCommerce metrics to Shopify metrics, and pause welcome flows during the customer import so existing buyers don’t get a welcome series.
Launch-day checklist
- Lower DNS TTL 24-48 hours before cutover
- Put WooCommerce in maintenance mode, then run a delta import of orders and customers created since the last import
- Point the root A record and www CNAME to Shopify, and leave MX, SPF and DKIM records untouched so email keeps working
- Set the primary domain, confirm SSL is active and remove the storefront password
- Import the redirect CSV, then test the top 200 old URLs by traffic plus every URL with backlinks
- Place real orders with each payment method, a discount code and a refund
- Confirm each order reaches your 3PL, accounting, Klaviyo, GA4 and Meta
- Submit /sitemap.xml in Search Console and check robots.txt
- Update ad final URLs and email links so they skip redirects
- Keep a full WooCommerce backup, files and database, for at least a year
Post-launch monitoring
Watch sales first and search second: a broken payment method costs more in an hour than a missing redirect in a week.
| When | Watch | Red flag |
|---|---|---|
| Days 1-3 | Orders per hour against the same weekdays, payment errors | A payment method with zero orders |
| Week 1 | Support tickets, 404 hits | Login complaints, repeated 404s on one pattern |
| Weeks 2-4 | Search Console clicks for top products and collections | Old URLs still indexed, new ones not indexed |
| First renewal cycle | Subscription charges | Failed renewals above normal |
| Day 30 | Conversion rate and revenue per session against baseline | A sustained gap on one device or template |
Shopify has no built-in 404 report, so use Search Console, GA4 filtered on your 404 page title, or a redirect app that logs misses, and redirect every 404 with traffic the day you find it. That full scope, from plugin inventory to day-30 checks, is how I run Shopify migrations.
Get it built
Planning a move off WooCommerce? Shopify builds and migrations start from $6,000. If you’re not sure Shopify is the right platform yet, start with the Growth Audit: $1,500 fixed, credited if we continue. See pricing or get in touch with your product count, plugin list and target launch date.