Knowing how to migrate from WooCommerce to Shopify is mostly knowing what breaks between the old database and the new storefront. The platform change is the easy part. The damage comes from unmapped URLs, products that land with broken variants, customers who cannot log in and a launch day nobody rehearsed.
This is the playbook we follow: audit, data, URLs, plugin features, commercial setup and cutover, in that order. It assumes you have already decided to leave. If you are still weighing the move, read when to choose Shopify over WooCommerce and how the two models scale first, then come back.
Each section says what to do, what usually breaks and when to stop and test. Where Shopify limits change often, we point to the source instead of quoting a number that will age.
Key takeaways
- The audit decides scope, cost and risk, so it comes before any export file is created.
- Data moves in a fixed order, and it is imported more than once: a full run for testing and a delta run at cutover.
- Every indexable old URL needs a mapped 301 redirect, and the redirect layer is a launch blocker, not a post-launch task.
- Each WooCommerce plugin becomes a decision: native Shopify feature, app, Liquid code or retirement.
- Cutover needs a freeze window, a delta import, a DNS switch and a rollback rule written before launch day.
How to migrate from WooCommerce to Shopify, in order
A WooCommerce to Shopify migration is five workstreams in a fixed sequence: audit, data, URLs and redirects, features, and commercial setup. Cutover closes the project. Each workstream feeds the next, so skipping ahead creates rework.
What a migration actually moves
Shopify can receive your catalog, your customers and your order history. Products carry titles, descriptions, images, prices, SKUs, inventory and variants, and WooCommerce categories become collections. Customers carry names, emails and addresses. Historical orders arrive as records for reporting and support, not as live orders you can fulfill. Pages and blog posts move too.
What does not move on its own
Passwords do not move. WooCommerce stores them as hashes that Shopify cannot ingest, so customers receive an account invitation or a reset email. Reviews, active subscriptions, plugin-specific data and custom checkout fields need their own plan. Your theme does not convert either: the storefront is rebuilt on Shopify's Liquid theme system.
Why the sequence matters
The audit sets scope and cost. Data comes second because the URL map depends on final handles and collections. Features and commercial setup follow, because they depend on the data model. Cutover is last because it is only safe once everything else passes testing.
Work on a development store throughout. WooCommerce keeps selling until launch day, so nothing in this plan requires closing the old store early.
Audit your WooCommerce store before you move
The audit is a spreadsheet, not a meeting. Its job is to turn a vague brief into a counted list. Run it before anyone exports a file.
Products, variants and attributes
Count products by type: simple, variable, grouped, bundled and digital. Count variations per variable product and list the attributes that drive them. Shopify limits how many options a product can have, so a product with many attributes may need restructuring. Attributes used only for filtering usually become tags, metafields or collection filters. Check SKUs for duplicates and blanks.
Customers, orders and subscriptions
Record customer and order volume, and decide how much history to keep: all of it, or two or three years plus an archive export. Separate guest orders from registered customers. Flag customers with stored payment methods or active subscriptions. Subscriptions are the highest-risk item in the audit, because a missed renewal becomes a refund and a support ticket.
As an illustration, a store with 2,000 products, 15,000 customers and 40,000 orders is a standard app or CSV job. Add 300 active subscribers and the same store needs a subscription plan before it has a launch date.
Plugins, custom code and integrations
List every active plugin, what it does and whether anyone still uses that function. Then list custom code in the theme, in functions.php or in a custom plugin, and every integration: ERP, CRM, email platform, carriers, accounting. Integrations are the part of the audit that most often adds scope, so bring in integration work early and estimate it instead of discovering it.
Content and SEO baseline
Crawl the live site and export every indexable URL with its title, meta description, canonical and status code. Pull top landing pages and organic revenue from analytics and Search Console. This is your before picture. Without it you cannot tell whether a post-launch dip is normal turbulence or a real loss.
- Count products by type and record the variation structure of every variable product
- List every active plugin and what it does
- Record customer, order and subscription volume, and the history range you will keep
- List custom code, integrations and the systems they talk to
- Crawl every indexable URL with title, description, canonical and status code
- Record top landing pages and organic revenue as your baseline
- Check SKUs, product weights and image URLs for gaps
- Note stored payment methods and the processor that holds them
Export and import: options and their limits
Three routes move the data. The right one depends on how clean your catalog is and how much of it is non-standard. Shopify's import and export documentation is the reference for current file formats and limits.
CSV export and Shopify import
WooCommerce exports products natively. Customers and orders usually need an extra plugin or a database query. Shopify imports products from a CSV that follows its template, one row per variant. The work is the transform: mapping columns, building variant rows, generating handles and publishing image URLs Shopify can fetch. CSV fits a clean catalog. Its limit is everything outside the template, such as metafields, bundles and relationships between products.
Migration apps
Migration apps read from WooCommerce and write to Shopify, usually including customers and orders. They remove the transform work and are the sensible default for mid-size stores with standard data. Their limit is opacity: you get the mapping the app supports, and custom fields are dropped or flattened. Run a trial import on a development store and compare counts and samples before paying for a full run.
Custom scripts with the Admin API
A script reads from WooCommerce through its REST API or the database and writes through the Admin API, documented on shopify.dev. It handles custom fields, metafields, product relationships and repeatable delta runs. It costs more upfront and pays off when data is non-standard or volume is large. Build retries and rate-limit handling into it; current limits are in the documentation.
Option A
Shopify CSV import
- Fit: small to mid catalogs with clean data
- Handles: products and variants through the template
- Limit: customers, orders and non-standard data need extra work
Our pick for most stores
Migration app
- Fit: mid-size stores with standard data
- Handles: products, customers, orders and often content
- Limit: custom fields and unusual structures are dropped or flattened
Option C
Admin API script
- Fit: large or non-standard stores
- Handles: custom fields, metafields, relationships, repeatable delta runs
- Limit: more build time and cost
Whichever route you pick, treat import as a pipeline you run more than once. The first run exposes mapping errors. A later run, at cutover, carries what changed since.
Migration pipeline
- 01WooCommerce databaseSource of products, customers, orders
- 02Export CSV or APIPull data out of WooCommerce
- 03Clean and mapMatch columns to Shopify fields
- 04Shopify dev storeTrial import before touching live
- 05Validate countsCompare totals and sample records
- 06Delta syncCarry changes since the first run
Data pipeline from WooCommerce export through cleaning and import to validation, repeated as a delta sync at cutover
What rarely transfers cleanly
Plan these items separately, whatever tool you use:
- Passwords: customers need an invite or a reset email.
- Reviews: export them from the review plugin and import them into the app you choose, so pick the review app before you move.
- Subscriptions: they depend on a subscription engine and a payment processor, so run them as their own project, including stored card tokens.
- Relationships and plugin data: upsells, cross-sells and plugin-specific fields usually need scripted or manual work.
Migrate WooCommerce to Shopify without losing SEO
Rankings do not depend on the platform. They depend on whether search engines can find the replacement for every old page. Google's guidance on a site move with URL changes reduces to this: map old URLs to new ones with permanent redirects, keep the content equivalent and monitor the result.
Why it matters
A migration loses rankings because of unmapped URLs, dropped metadata and a broken redirect layer, not because of Shopify. Redirects are a launch blocker, not a post-launch task.
Build the URL map
Start from the crawl in your audit. For every indexable old URL, assign a new Shopify URL: product to product, category to collection, post to article, page to page. Where nothing equivalent exists, redirect to the closest relevant page. Sending everything to the homepage can be treated as a soft 404.
Default WooCommerce permalinks map like this. Your settings may differ, so always work from the crawl.
| Old WooCommerce URL | New Shopify URL |
|---|---|
| /product/blue-shirt/ | /products/blue-shirt |
| /product-category/shirts/ | /collections/shirts |
| /shop/ | /collections/all |
| /blog-post-slug/ | /blogs/news/blog-post-slug |
| /about-us/ | /pages/about-us |
| /my-account/ | /account |
Where Shopify forces new URL patterns
Shopify fixes the prefixes: /products/, /collections/, /pages/ and /blogs/ followed by the blog handle. You control the handle after the prefix, not the prefix. The old structure cannot be reproduced, so every URL with a different pattern needs a redirect. Keep handles identical to the old slugs where possible, since it simplifies the map. Shopify also serves products under collection paths with a canonical to the main /products/ URL, so link internally to the canonical form.
Redirects, sitemaps and Search Console
Load the map into Shopify's URL redirects tool, which accepts a CSV of old and new paths. Point each old URL straight to its final destination, never through a chain. Test a sample before launch and the full list on launch day. Google recommends keeping redirects for at least a year, so treat them as permanent infrastructure.
Shopify generates the sitemap for you. Submit it in Search Console as soon as the domain points to Shopify. If the domain stays the same, no change of address is needed: that tool applies only when the domain itself changes.
Every old URL ends one of two ways. Mapped, it gets a 301 and a 200 on the new page, and its signals carry over. Unmapped, it ends in a 404 and the link equity is lost.
Old URL fate
- 01Old URL requestVisitor or Googlebot hits a WooCommerce path
- 02Redirect mapShopify checks the old path
- AMapped URLSignals carry over
- 301 redirectPermanent move to final URL
- New page 200Shopify page ranks in its place
- BUnmapped URLNo rule matches
- 404 errorPage not found
- Lost link equityRankings and backlinks fade
Request path for an old WooCommerce URL: a mapped URL gets a 301 and a 200, an unmapped URL ends in a 404
Metadata, images and internal links
Carry over title tags, meta descriptions and image alt text into Shopify's SEO fields for each product, collection, page and article. Check structured data after launch: the theme generates product markup, so verify price and availability output in Google's Rich Results Test. Update internal links in content to the new URLs instead of relying on redirects. Keep image filenames where you can, and check image search traffic after launch.
Rebuild plugin features with apps or Liquid
Every plugin is a decision, not a migration task. For each one choose a native Shopify feature, an app, theme code in Liquid, or retirement.
Map each plugin to a Shopify equivalent
Start with the table below, then confirm each row against your audit.
| WooCommerce plugin function | Typical Shopify route |
|---|---|
| SEO plugin (Yoast, Rank Math) | Native SEO fields per resource, plus theme structured data |
| Redirect manager | Native URL redirects |
| Multi-currency and multi-language | Shopify Markets and translation apps |
| Reviews | Review app |
| Subscriptions | Subscription app tied to your payment processor |
| Product add-ons and custom fields | Metafields with theme sections, or an options app |
| Discount rules and bundles | Native discounts, Shopify Functions or a bundle app |
| Abandoned cart emails | Native abandoned checkout recovery or an email platform |
| Wholesale pricing | Shopify B2B features (plan dependent) or an app |
| Forms and quote requests | Form app |
Retire what nobody uses. A migration is the cheapest moment to delete a feature.
When an app is enough
An app is enough when the feature is common, the vendor maintains it and the recurring fee is lower than the cost of building and owning the feature. Reviews, subscriptions, bundles and loyalty usually fit. Add up the monthly fees across the whole stack before approving each one, because five small subscriptions are one large line item. Check each app's effect on theme speed and checkout too. The post on the Shopify app ecosystem covers the benefits, limits and hidden costs.
When Liquid or custom work is justified
Custom work is justified when the feature is specific to your business and shapes how you sell: a product configurator, a bespoke pricing display, a distinctive product page layout. Theme sections and metafields handle much of it in Liquid. Shopify Functions and checkout extensions cover discount and checkout logic where the platform allows it. Shopify Plus matters only if your checkout customization needs or volume exceed what standard plans support, and the documentation states what each plan allows.
Set up payments, taxes and shipping
Commercial setup is where rushed migrations break checkout. Do it on the development store with real test transactions, in the order below.
Payment gateways and payouts
Check whether Shopify Payments is available in your country and fits your volume. If not, choose a supported third-party gateway. Shopify charges an extra transaction fee on orders through third-party gateways, so compare that cost using the current rates for your plan. Check payout schedules and any reserve rules for new accounts, so cash flow does not surprise you in the first month. If customers store cards for subscriptions, ask your processor to migrate the tokens, since you cannot export card data yourself.
Taxes by market
Rebuild tax rules from the old store, not from memory. In the United States, confirm where you have nexus and where you collect. In the EU, decide on tax-inclusive pricing and how VAT applies to cross-border sales. In Latin America, check invoicing obligations, such as electronic invoicing in Mexico or Argentina, which usually need an app or an integration with your accounting system. Test one basket per market and compare the total to the old store.
Shipping zones, rates and fulfillment
Recreate shipping zones, flat rates, weight-based and price-based rates, free-shipping thresholds and pickup. Connect carriers or your fulfillment partner and test label creation. Confirm product weights came across, because a missing weight quietly breaks weight-based rates.
Checkout and email testing
Place test orders with each payment method, discount code and shipping option. Review every transactional email: order confirmation, shipping update, refund, account invitation and password reset. Check that the sender domain is authenticated with SPF and DKIM so messages reach the inbox.
Cutover plan, testing and post-launch monitoring
Cutover is a rehearsed sequence. Near-zero downtime is possible because WooCommerce keeps selling until the DNS switch.
- T minus 2 weeks
Staging and test orders
Full import on the development store, test orders on every payment method, redirect map loaded and tested.
- T minus 1 day
Freeze and final export
Catalog edits stop on WooCommerce, the DNS TTL is already lowered and the final export is taken.
- Launch day
Delta import and DNS switch
Orders and customers since the first import are added, redirects go live, the domain points to Shopify.
- Days 1 to 7
Daily checks
Crawl the old URL list, review Search Console and compare orders against the baseline.
- Days 8 to 30
Fix and review
Resolve residual 404s, update external links you control and review reporting and app costs.
Freeze, delta sync and DNS switch
The day before launch, freeze catalog edits on WooCommerce and take the final export. On launch day, run the delta import for orders and customers created since the first full import, and verify inventory. Then load the redirects, connect the domain and switch DNS. Lower the DNS TTL a day or two earlier so the change propagates quickly. Shopify issues the SSL certificate once the domain resolves.
Write the rollback rule before launch, not during it. For example: if test orders fail on any live payment method, or a sample of redirects returns errors after the switch, point DNS back to WooCommerce. Rollback is only clean while the old store's data is intact, so decide the point of no return in advance and keep WooCommerce read-only, not deleted, for a few weeks after launch.
Pre-launch test checklist
Run these on the live domain before you announce anything:
- One product page per product type, including variants and images.
- Collection pages, filters and site search.
- Cart, discount codes and gift cards.
- A real checkout on each payment method, then a refund.
- Every transactional email, including account invitation and reset.
- A sample of 301 redirects, then the full list.
- Sitemap, robots.txt and structured data on key templates.
- Analytics, ad pixels and conversion events.
- Mobile layout and page speed on the main templates.
The first 30 days after launch
On day one, crawl the old URL list and confirm each returns a 301 to a 200. Watch Search Console for 404s, coverage changes and sitemap status. Compare orders and conversion with your baseline, and expect some turbulence. Between days 8 and 30, fix residual 404s, review app costs and tidy reporting. Rankings can move while Google reprocesses the site, so look for a recovery trend instead of reacting to each day.
Where to start
Start this week with two files: the audit spreadsheet and the full URL inventory. Together they give you scope, risk and the skeleton of the redirect map, and they take days, not weeks. If you want a team that migrates the store and then keeps running it, see our Shopify platform work. Bring both files to the first conversation and the estimate will be real.
Frequently asked questions
How long does it take to migrate from WooCommerce to Shopify?
It depends on catalog size, the number of integrations and how much custom functionality you rebuild. A small, standard store can be a project of weeks, while stores with subscriptions, ERP sync and custom features take longer. The audit gives the real estimate, and the staging rehearsal is the step you should never cut.
Will I lose SEO rankings when I migrate from WooCommerce to Shopify?
Not necessarily. Rankings drop when old URLs are not redirected, metadata is lost or content changes sharply. With a full 301 map, equivalent content and metadata, and monitoring in Search Console, expect at worst short-term fluctuation while Google reprocesses the site. No migration can guarantee zero movement.
Can I migrate WooCommerce customers and passwords to Shopify?
You can migrate customer records, but not passwords. WooCommerce stores passwords as hashes that Shopify cannot import, so customers receive an account invitation or a reset email to set a new one.
Is there downtime when moving from WooCommerce to Shopify?
It can be close to zero. WooCommerce keeps selling while you build and test the Shopify store, then you freeze edits, import the last changes and switch DNS. The visible gap is DNS propagation, which a lower TTL set in advance shortens.
What does not transfer when you migrate WooCommerce to Shopify?
Passwords, theme design, plugin-specific data, review history (unless exported and imported into an app), active subscriptions and stored payment tokens do not move automatically. Each needs its own step: an invitation email, a rebuilt theme, a review import, a subscription plan and a processor-led token migration.
How do I set up 301 redirects from WooCommerce to Shopify?
Crawl the old site for every indexable URL, map each one to its new Shopify URL, and import the list as a CSV of old and new paths into Shopify's URL redirects tool. Point each URL directly to its final page, avoid chains and test the list on launch day.
Should I use a migration app or a custom migration?
Use a migration app for a standard catalog with ordinary data. Choose a custom Admin API script when you have custom fields, complex product relationships, large volume or a need for repeatable delta syncs. Either way, run a trial import on a development store first.