Every step cited to the vendor’s own docs
How to migrate from Wix to Shopify, step by step.
Wix is the hardest mainstream platform to leave, because it holds more of your data than it lets you export. This is the whole move: what the dashboard gives you, what needs the API, and the order that keeps your store selling throughout, with the documentation behind every step.
14 steps · Plan on 20-40 hours of your own time
14
steps, in the order they have to happen
26.5
hours of hands-on work for a mid-sized store
8
things that do not come with you
9
URL shapes that need a 301
Phase 01 · 2.5 h
Before you touch anything
- 1 hWix docs
List what Wix will and won’t release
Walk every section of the Wix dashboard and note what exists: products, contacts, orders, CMS collections, blog, Bookings, members, automations. Products, contacts, orders, CMS data and redirects export from the dashboard; blog posts, reviews, the member list and Bookings configs do not: those need the API or a rebuild.
WhereWix dashboard → Catalog, Orders, Customers & Leads, Blog, CMS, Bookings, Members
The catch
Digital (downloadable) products are excluded from the product export entirely: a store selling downloads has no dashboard export path at all.
- 1.5 hWix docs
Download your media library
Pull your images and files out of the Wix Media Manager as insurance. Shopify fetches product images from URLs at import time, so the originals must still be reachable when you import.
WhereWix dashboard → Media → Site Files, folder by folder
The catch
There is no "download everything" button: Site Files come down folder by folder. Do it now, not after cutover, while every image URL still resolves.
Phase 02 · 5 h
Get your data out
- 30 minWix docs
Export the product catalogue
Export products to CSV. Wix writes one row per product and one per variant, sharing a handle, distinguished by the fieldType column. Note your product, variant and image counts from the dashboard: they are the reconciliation numbers for every later import.
WhereCatalog → Store Products → Products → More Actions → Export
The catch
Wix documents a 5,000-row cap per export CSV. Over that, export in filtered batches, and remember each variant is its own row.
- 30 minWix docs
Export contacts and order history
Contacts export as CSV up to 50,000 at a time. Orders export either one row per order or one per line item. Take both shapes so you can reconcile totals later.
WhereCustomers & Leads → Contacts → Import/Export → Export · Orders → Export
The catch
Only the site owner can export contacts. A collaborator cannot. And order timestamps are written in UTC, so reports shift unless you offset them.
- 4 hWix docs
Pull blocked data through the Wix API
Blog posts and rich product data have no dashboard export. The Wix REST API is the escape hatch: the Blog endpoint returns up to 100 posts per call. Skip this step if you have no blog and your product CSV covered everything.
WhereWix dashboard → API keys, then www.wixapis.com
The catch
The products API returns no variant data from its query endpoint: variants come one product at a time, so a large catalogue means thousands of calls.
Phase 03 · 14 h
Build in parallel
- 2 hShopify docs
Reshape the product CSV for Shopify
Rename Wix columns to Shopify’s import schema, convert units, and save as UTF-8 CSV. Map by meaning, checking a handful of products against both dashboards, rather than trusting any published table blindly.
WhereAny spreadsheet tool; save as UTF-8 CSV
The catch
Wix exports weight in kilograms; Shopify expects grams. Multiply by 1,000, and strip spaces, accents and periods from handles. Treat Shopify’s published mapping table with suspicion: parts of it lag the current Wix export format.
- 1 hShopify docs
Import products into Shopify
Upload the reshaped CSV, or use Shopify’s free Store Migration app if it is available to your store and your products have three options or fewer. Reconcile the imported counts against the numbers you noted at export.
WhereShopify admin → Products → Import
The catch
An import cannot be cancelled once started, there is no import history, and the file caps at 15 MB. Run it against a development store first, and untick "publish to all sales channels".
- 45 minShopify docs
Import customers and plan invites
Import the contacts CSV: the email column must exist, and marketing consent only accepts yes or no. Then decide how account invitations go out: a third-party app, or batched sends.
WhereShopify admin → Customers → Import
The catch
Passwords cannot migrate. Imported customers cannot log in until they accept an invite, and Shopify has no official bulk-invite tool. Plan the invite wave, don’t discover it at launch.
- 2 hShopify docs
Move orders and blog posts via apps
Shopify has no native import for orders or blog articles. Order history goes through a migration app (Cart2Cart, LitExtension, EZ Importer); blog posts through Matrixify from the API export. Reviews cannot leave Wix at all, so re-key the best ones.
WhereShopify admin → Apps
The catch
If you stage blog imports in Excel, cells silently truncate at 32,767 characters, so long articles lose their tail. Use CSV for body HTML.
- 8 hShopify docs
Rebuild design, members and automations
Nothing visual or behavioural transfers. Build the theme against your Wix screenshots, re-create each automation in Shopify Flow, and configure customer accounts to stand in for the members area.
WhereOnline Store → Themes · Apps → Shopify Flow · Settings → Customer accounts
The catch
Any Wix Automation that called an external webhook needs Shopify’s HTTP action, which is restricted to Grow, Advanced and Plus plans, so check before promising parity.
Phase 04 · 3 h
Keep your rankings
- 1 hWix docs
Capture every live URL and redirect
Export the redirects already configured in Wix, and crawl the live site to record every indexed URL. Together these are the input to the redirect map.
WhereSEO & GEO → Tools and settings → URL Redirect Manager → Export
The catch
You cannot reconstruct the URL inventory after the Wix site goes dark, so crawl it now. Existing Wix redirects stop working the moment DNS moves.
- 2 hShopify docs
Build the redirect map in Shopify
Turn the URL inventory into old → new pairs and bulk-import them. Redirects only save for URLs that would otherwise 404, so verify the import report line by line.
WhereContent → Menus → URL redirects → Import
The catch
Shopify refuses redirects from paths starting /shop, which is exactly where a Wix store lives. That one path needs theme-level handling; no 301 can exist for it.
Phase 05 · 45 min
Cut over
- 45 minShopify docs
Point the domain at Shopify
At a quiet hour, update the A record and the www CNAME to Shopify’s values, keeping registration (and email DNS) where they are. The old store keeps selling until the record propagates.
WhereWix → Domains → Manage DNS Records · Shopify → Settings → Domains
The catch
Point DNS; do not transfer the registration mid-migration. A transfer can take 20 days, trips ICANN’s 60-day lock if contacts were edited, and dropping the Wix DNS zone kills MX records, so screenshot every DNS record first.
Phase 06 · 1.5 h
After the switch
- 1.5 hWix docs
Verify everything, then cancel Wix last
Remove the Shopify storefront password, place a real test order, click the top redirects, and confirm images render. Only when a full week of orders, email and search traffic looks right do you cancel the Wix subscriptions.
WhereShopify → Online Store → Preferences · Wix → Premium Subscriptions
The catch
Site plan, domain and business email are separate Wix subscriptions: cancelling one does not cancel the others, and cancelling too early takes down what you still depend on.
What does not come with you
Be wary of any guide that says everything moves. These are the things that do not, and what to do about each one.
Your page designs
Wix pages are proprietary Editor documents with no export format; Shopify renders Liquid themes.
Instead: Screenshot every Wix page first as the visual spec, then rebuild on a Shopify theme.
Customer passwords
Passwords are encrypted outside Shopify and cannot be moved by any export.
Instead: Import customers, then send account invites. Shopify has no bulk-invite tool, so plan a third-party app or batched sends.
Product reviews
Wix Reviews has no export at all: the help page for it is a feature request.
Instead: Re-key the best reviews into Judge.me, Loox or Yotpo, and start collecting fresh ones at launch.
Blog posts (via the dashboard)
Wix states plainly that blog posts cannot be exported from the dashboard.
Instead: Pull posts through the Wix Blog API (100 per request) and import with Matrixify, or copy-paste a small blog.
Digital / downloadable products
Wix excludes digital products from the product CSV export entirely.
Instead: Download the files from the Media Manager and re-create the products in Shopify by hand.
The site members list
Wix blocks member-list export on privacy grounds; contacts are a separate list that does export.
Instead: Export Contacts instead, and accept that member-only gating is rebuilt from zero.
Wix Bookings services
Wix confirms service configurations cannot be exported, not even between two Wix sites.
Instead: Export the booking and staff reports as CSV for history, then rebuild services in a Shopify booking app.
SEO metadata in bulk
Wix has no CSV export of page titles and descriptions.
Instead: Crawl the live site with an SEO crawler before cutover, and re-key what matters.
Your URLs, mapped.
Wix and Shopify disagree about URL shapes, so every old address needs a 301 to its new home. This is the mapping.
| Wix | Shopify | Note |
|---|---|---|
| /product-page/linen-throw | /products/linen-throw | Handles allow letters, numbers and dashes only, so strip accents and periods. |
| /category/bedding | /collections/bedding | |
| /shop | /collections/all | Shopify blocks redirects from /shop, so this one needs theme-level handling. |
| /post/how-we-weave | /blogs/news/how-we-weave | Substitute your actual Shopify blog handle. |
| /blog | /blogs/news | |
| /about-us | /pages/about-us | Wix serves static pages at the root; Shopify forces the /pages/ prefix, so every one needs a row. |
| /account/my-orders | /account/orders | |
| /#!blog/c1p1z | (not redirectable server-side) | Nothing after # reaches a server, so no 301 can see it. Legacy hashbang URLs need client-side JS. |
| /product-page/linen-throw?variant=… | /products/linen-throw | Wix variant params do not map to Shopify variant ids; send them to the base product. |
Your apps, matched.
- Wix StoresShopify products (built in)
Shopify's free Store Migration app moves products and customers, but caps at 3 options per product and uses the highest price where Wix priced by location.
- Wix BookingsThird-party booking apps
No first-party Shopify booking product, and Wix cannot export service configs, so services are rebuilt in an app like Sesami or BookThatApp.
- Wix Members AreaShopify customer accounts
The member list is not exportable; export Contacts instead and rebuild gated content with theme logic or an app.
- Wix AutomationsShopify Flow
No export from Wix: rebuild each trigger/action pair by hand. The webhook action needs Grow, Advanced or Plus.
- Wix Email MarketingShopify email tools
Subscriber consent must be re-declared through the customer import; history does not move.
- Wix FormsShopify Forms
Existing form submissions stay behind; only synced contacts move.
- Wix ChatShopify Inbox
Chat history does not transfer.
- Wix BlogShopify blogs
Wix has no blog export and Shopify no native blog import: the move goes through the Wix API plus Matrixify.
- Wix Pricing PlansShopify Subscriptions
Active recurring plans cannot migrate; subscribers re-subscribe on Shopify.
- Wix ReviewsJudge.me / Loox / Yotpo
Wix cannot export reviews at all, so they are re-entered or collected fresh.
- Velo codeNo equivalent
Velo code runs only on Wix hosting. This is a rewrite (metafields, Functions or a custom app), and should be scoped separately.
- Wix CMS collectionsShopify metaobjects
Collection data exports to CSV, so the content moves even though dynamic-page routing is rebuilt.
What goes wrong.
What catches people on a Wix move, why each one happens, and how to get ahead of it.
Your old shop page 404s forever after launch
Why: Wix stores live at /shop, and Shopify refuses to create redirects from any path starting /shop (also /cart, /orders, /services, /apps).
Avoid it: Check how much traffic lands on /shop before cutover, and handle it in the theme rather than promising a 301 that cannot exist.
Years of old redirects vanish on cutover day
Why: Wix 301 redirects only work while Wix serves your custom domain; the moment DNS points at Shopify, every Wix-side redirect stops.
Avoid it: Export the Wix redirect list and re-create the whole chain in Shopify before the DNS change.
Some redirects never take effect
Why: Shopify only accepts a redirect from a URL that currently 404s, and rejects the rest of the row silently in bulk imports.
Avoid it: Check the import result report line by line rather than assuming a clean upload.
Every returning customer is locked out on day one
Why: Passwords cannot migrate, and imported customers are placeholders until they accept an invite.
Avoid it: Plan the invite wave before launch; Shopify has no official bulk-invite tool.
Shipping rates come out a thousand times wrong
Why: Wix exports weight in kilograms; Shopify's grams column expects grams.
Avoid it: Multiply the weight column by 1,000 in the reshape, then spot-check calculated shipping on three products.
A bad import cannot be undone
Why: Product CSV imports cannot be cancelled once started and leave no import history to roll back.
Avoid it: Run every import against a development store first, and keep the pre-import export as your rollback.
Product images 404 after Wix is retired
Why: Shopify fetches images from the URLs in your CSV at import time; if Wix-hosted media disappears first, the images never land.
Avoid it: Confirm every image renders in Shopify admin before cancelling the Wix plan.
Company email dies the day the domain moves
Why: Transferring a domain away from Wix drops the DNS zone, including MX records; ICANN's 60-day lock can also stall the transfer entirely.
Avoid it: Screenshot every DNS record first, point DNS at Shopify rather than transferring during the migration, and never edit WHOIS contacts beforehand.
Or hand the whole list to someone who has done it.
Send your store URL and you get back a fixed price and a plan for your store specifically: SKU count, which apps have Shopify equivalents, the redirect plan, and the risks we can see.
Get my free migration plan