Moving From Shopify or Wix to WordPress: A Practical Guide
Shopify and Wix are great until they aren't - the app fees stack up, the theme customization hits a wall, or you just want to own your stack instead of renting it. Moving to WordPress and WooCommerce fixes that, but it's a different kind of migration than a normal site transfer. There's no database to copy and no SSH access to the old server. Everything has to come out through exports, APIs, and a bit of manual cleanup. Here's how to do it without losing orders, rankings, or your sanity.
Why This Migration Is Different
A typical WordPress-to-WordPress move is a file and database copy. Shopify and Wix don't give you that option - they're closed platforms, so you're working with whatever export tools they expose plus a fresh WooCommerce build on the other end. That means:
- Products, customers, and orders move as CSV files (or via API), not a database dump.
- URL structures change completely -
/products/blue-mugon Shopify becomes/product/blue-mugon WooCommerce, and Wix URLs are worse, often with query strings. - Apps you paid for (reviews, upsells, subscriptions) don't come with you - you'll need WooCommerce plugin equivalents.
- Email, if it was tied to your Shopify/Wix domain, needs its own migration plan alongside the store.
Before You Start: What to Have Ready
- A WooCommerce site live on Getwebup - cPanel or VPS, WordPress and WooCommerce installed, theme picked, before you import a single product.
- Full exports from the old platform - products, customers, orders, and a copy of your current site's pages (About, Policies, blog posts) since these don't transfer automatically.
- A list of every app/feature you rely on - so you can map each one to a WooCommerce plugin before go-live, not after a customer complains it's missing.
- Payment gateway credentials - Razorpay, Stripe, or PayPal API keys, since you'll be reconnecting these fresh in WooCommerce.
- Low DNS TTL set 24-48 hours in advance - drop your A record TTL to 300 seconds so the eventual domain cutover is fast.
Step 1: Export Your Data From Shopify or Wix
This step looks different depending on where you're coming from:
| Platform | Products | Customers/Orders | Notes |
|---|---|---|---|
| Shopify | Settings > Export > CSV (all products) | Customers exportable as CSV; orders need Shopify's order export or a third-party app | Image URLs in the CSV point to Shopify's CDN - keep them live until import finishes |
| Wix | Store Manager > Products > Export | Wix rarely exposes a clean order export - you may need to copy order history manually or use Wix's API | Wix CSVs often need column cleanup before WooCommerce will accept them |
Download every CSV and keep a dated backup off both the old platform and your computer - if the export tool times out halfway through on a large catalog, you don't want to start from zero.
Step 2: Set Up WooCommerce First, Import Second
Get the destination ready before you bring any data over:
- Install WordPress and WooCommerce on Getwebup (Softaculous in cPanel makes this a few clicks).
- Set your currency, tax settings, and shipping zones to match what you actually charge - these don't come from the CSV.
- Install a theme and get the homepage, product page, and cart looking right with one or two test products before the bulk import.
Step 3: Import Products the Right Way
WooCommerce's built-in importer (Products > Import) reads standard CSVs, but Shopify and Wix exports rarely match its column names exactly. Map the fields manually during import rather than trusting auto-detect:
Shopify column -> WooCommerce field
Handle -> SKU
Title -> Name
Body (HTML) -> Description
Variant Price -> Regular price
Image Src -> Images
Run a test import of 5-10 products first. Check that images actually pulled in (WooCommerce fetches them from the URLs in the CSV - if Shopify has already taken the store down, those URLs are dead and images will fail silently). Only run the full import once the test batch looks clean.
Step 4: Rebuild Your URLs and Redirect the Old Ones
This is the step people skip and regret. Every product, category, and blog URL is about to change, and if you don't redirect the old paths to the new ones, you lose the search rankings and backlinks you've built up.
- Export a full list of your old URLs before shutting down Shopify/Wix - Screaming Frog or your XML sitemap works for this.
- Build a redirect map: old path > new path for every product, collection, and page.
- Add these as 301 redirects in
.htaccesson Getwebup, or use a redirection plugin (Redirection, Yoast's redirect manager) if the list is long.
# .htaccess example - Shopify product to WooCommerce product
Redirect 301 /products/blue-mug /product/blue-mug
Redirect 301 /collections/mugs /product-category/mugs
Submit your new XML sitemap in Google Search Console right after cutover, and keep an eye on the Coverage report for 404s in the following weeks - that's your signal that a redirect is missing.
Step 5: Reconnect Payments and Cut Over DNS
Set up your payment gateway plugin (WooCommerce Payments, Razorpay, or Stripe) on the new store and run a real test transaction before going live - refund it after. Once the store is verified end-to-end on a temporary URL or hosts-file entry, point your domain's DNS to Getwebup:
Type: A
Name: @
Value:
TTL: 300
Because you lowered the TTL in advance, most visitors will be hitting the new WooCommerce store within 15-30 minutes of the change.
Step 6: Post-Migration QA Checklist
- Place a real order end-to-end - product page, cart, checkout, payment, confirmation email.
- Check that customer accounts (if imported) can log in and see their order history.
- Verify tax and shipping calculations against a few real addresses.
- Confirm transactional emails (order confirmation, shipping updates) are actually sending - test with WP Mail SMTP configured against your Getwebup mailbox or a transactional service.
- Don't cancel your Shopify/Wix plan for at least a week - keep it as a reference in case a product detail or image didn't make the trip.
Prevention: Avoiding the Common Migration Regrets
Most post-migration headaches trace back to one of three things: skipping the redirect map, importing before WooCommerce's tax/shipping settings were configured, or canceling the old plan too soon to double-check something. Budget a full day for the data move and a week of monitoring afterward - rushing the cutover is where sales get lost, not the migration itself.
Frequently asked questions
Can I migrate a Shopify store to WooCommerce without losing my order history?
Mostly, yes. Shopify lets you export orders as CSV (or via a paid export app for large stores), and WooCommerce can import them as historical orders. Live order status and fulfillment tracking won't carry over automatically, so reconcile any orders still in progress manually before cutover.
Will my Shopify or Wix SEO rankings survive the move?
Only if you 301-redirect every old URL to its WooCommerce equivalent before the domain cutover. Rankings are tied to URLs, not platforms - if Google requests an old product page and gets a 404 instead of a redirect, you lose that page's ranking history.
Do I need to migrate my Shopify apps to WooCommerce plugins?
Yes, and it's worth doing before go-live, not after. Map each app you actually use (reviews, upsells, subscriptions, loyalty points) to a WooCommerce plugin equivalent, install and configure it, then test it on the new store before you send customers to it.
How long does a Shopify or Wix to WordPress migration usually take?
For a small catalog (under 100 products), a day or two of hands-on work is typical - export, import, redirect mapping, and testing. Larger catalogs or heavy app usage can stretch to a week, mostly for redirect mapping and QA rather than the technical import itself.
What happens to my store during the DNS cutover?
Nothing, if you lower your DNS TTL 24-48 hours beforehand and have the new WooCommerce store fully tested before flipping the A record. Keep the old Shopify/Wix store live and unedited during the propagation window so any visitor still hitting the old DNS sees a working (if outdated) site rather than an error.