How to migrate from WooCommerce to Shopify
Products and customers move from WooCommerce to Shopify as CSV files. Past orders need a migration app or Shopify's API. Passwords, your theme and what your plugins did do not move, and every old address needs a redirect because Shopify's address patterns are fixed.
- By
- WP Ministry
- Published
In short
- Products and customers go across as CSV files. Past orders need a migration app or Shopify's order API.
- Import products first, then customers, then past orders. That is the order Shopify gives.
- Customer passwords do not move. Shopify says they cannot be migrated from another store.
- Your theme and your plugins stay behind. You choose a Shopify theme and replace each plugin's job.
- Shopify's address patterns are fixed, so every old WooCommerce address needs a redirect.
- Shopify cannot redirect an address that begins with /shop, /cart or /services. Check yours before you commit.
A WooCommerce store can be moved to Shopify, and Shopify publishes its own guide to doing it. Products and customers go across as CSV files. Past orders need a migration app from the Shopify App Store or Shopify's order API. Pages and blog posts go by an app, by Shopify's APIs, or by hand.
Three things do not move at all: customer passwords, your WordPress theme, and whatever your plugins did for the store. Your old addresses also stop working unless you redirect them, because Shopify's address patterns are fixed and differ from WooCommerce's.
What moves and what does not
| What | How it gets to Shopify | Notes |
|---|---|---|
| Products | WooCommerce's product export, reshaped to Shopify's columns, then Shopify's product import | Shopify downloads each product image from its address and stores its own copy. A product can have three options. One with more does not have its options imported. |
| Customers | A CSV file in the shape of Shopify's customer template | Passwords do not move. Order counts and totals are not imported with a customer. |
| Past orders | A migration app from the Shopify App Store, or Shopify's order API | Shopify lists no CSV import for past orders. Its WooCommerce guide marks this step as optional. |
| Pages and blog posts | A migration app, Shopify's page and blog APIs, or copy and paste | The layout comes from the Shopify theme. |
| Coupons | Set up again as discounts | Not on Shopify's list of data that moves in bulk. |
| Reviews | A reviews app | Shopify's guide says reviews cannot be migrated from WooCommerce directly. |
| Theme and plugins | Do not move | Shopify themes are written in Liquid, its own template language. Each plugin's job is done by a Shopify feature, by an app, or dropped. |
| Shipping, taxes, payments | Do not move | Settings you make again in the Shopify admin. |
Before you start
Take a full backup of the WooCommerce site. WordPress's documentation says a site has two parts, the database and the files, and that you need both to restore it. Keep this copy after the move: it is your record of the old store. If you have no backup tool yet, see WordPress backup plugins compared.
Write down every address the store answers at. Each product, category, page and blog post, and any address you have used in ads, emails or print.
List what each plugin does for the store. Payments, shipping rates, tax, subscriptions, reviews, email, product options. Each line needs an answer on the Shopify side before you switch.
Decide three things.
- The theme. A new Shopify store starts with a default theme. Shopify's own themes are free, and paid themes come from the Shopify Theme Store.
- The payment provider. Shopify says it charges a third-party transaction fee on orders paid through a third-party provider, at a rate that depends on your plan, and that orders processed through Shopify Payments do not carry it. Shopify Payments is available in certain countries.
- Past orders. You may need them inside Shopify, or only on file. WooCommerce's report tables have a "Download" link that saves the data as a CSV file.
If you have not settled whether to move at all, read when to switch between WooCommerce and Shopify first.
Move the store, in this order
Shopify's guide gives the order: products first, then customers, then past orders, so that each order can be connected to its products and its customer.
Step 1: Open the Shopify store and leave it private
Shopify says a new store is in private mode by default: its pages are hidden from visitors and search engines. Leave it that way while you work. Your WooCommerce store stays live throughout.
Step 2: Export your products from WooCommerce
In the WordPress dashboard go to Products, then All Products, and select "Export". Leave "Export all columns" selected, choose the product types and categories you want, and select "Generate CSV". This exporter is part of WooCommerce itself.
Step 3: Reshape the file to Shopify's columns
Shopify's documentation says the first line of the file must be the column headers in its product CSV table, and it offers a sample file as a template. Download the sample and rename your columns to match. The table under these steps shows which WooCommerce column becomes what.
Step 4: Import the products
In the Shopify admin go to Products and select "Import", then add your file. Shopify's WooCommerce guide says to deselect "Publish new products to all sales channels", so nothing is on sale before you have looked at it. Review the summary and select "Import products". A product CSV cannot be larger than 15 MB. Split a larger one.
Step 5: Check what arrived
Shopify's guide names three common faults: products that imported but are not published, products with details missing, and variants that failed to import. Compare the product count with WooCommerce's and open a sample of each kind of product.
Step 6: Move your customers
Shopify's guide exports customers from WooCommerce with an import and export plugin. It says there is no column mapping for customer imports, so rename the columns to those in Shopify's customer template. Country and state go in as ISO codes. In the Shopify admin go to Customers, select "Import", add the file and select "Import customers". The limit is 15 MB here too.
Step 7: Bring across past orders, if you need them
Shopify's guide sends you to migration apps from the Shopify App Store for this. Switch off new-order notifications for staff first. Shopify warns that every staff member set to receive them gets an email for each imported order.
Step 8: Move pages and blog posts
For a handful of pages, copy and paste is the route Shopify lists first. For a large blog it lists migration apps and its blog API. Read each page afterwards. What comes across is the words and the images. The layout is the Shopify theme's.
Step 9: Set up the theme and replace what your plugins did
Work through the list you made. Some jobs are built into Shopify, some need an app, and some you may drop. Coupons are created again as discount codes.
Step 10: Set up shipping, taxes and a payment provider
None of these are imported. Shopify's guide has a step for each.
Step 11: Place test orders
Shopify's guide says to try a successful and a failed payment, a refund, a cancellation and a fulfillment before you open the store.
| WooCommerce column | Becomes in Shopify |
|---|---|
| Name | The product's title |
| Description | The description |
| Attribute 1 name and Attribute 1 value(s) | The first option's name and value. One value per row, so a product with several values needs a row for each. |
| SKU | The SKU |
| Weight (lbs) | The weight in grams. Multiply pounds by 453.6. |
| Stock | The inventory quantity |
| Regular price | The price |
| Images | The product image URL |
Shopify's guide says to remove the WooCommerce columns that have no place in its file.
Redirect your old addresses
Shopify's guide says its link structure is likely different from your previous one, so old links to specific pages likely will not load. That covers every link from a search engine, another site, an old email or a bookmark.
| In WooCommerce, by default | In Shopify |
|---|---|
example.com/product/hoodie-with-logo | Under example.com/products/ |
example.com/product-category/accessories | Under example.com/collections/ |
| A page, where your permalink settings put it | Under example.com/pages/ |
| A blog post, where your permalink settings put it | Under example.com/blogs/ and the name of the blog |
Shopify calls /products and /collections fixed paths. You cannot keep /product/ as it was.
To make the redirects, build a CSV file with two columns, "Redirect from" and "Redirect to". Put each old path in the first and its new path in the second. In the Shopify admin go to Content, then Menus, open the URL redirects and select "Import". A store can hold up to 100,000 redirects.
Three limits come from Shopify's documentation. Know them before you commit to the move.
- Some prefixes cannot be redirected. Shopify says you cannot redirect an address that begins with
/apps,/application,/cart,/carts,/orders,/servicesor/shop. WooCommerce's shop page is at/shop/by default, and with the "Shop base" permalink setting product addresses begin with the shop page's name too. A site with pages under/services/has the same problem. - Only broken addresses redirect. Shopify redirects from an address only when it would otherwise show a "Page not found" error.
- Query strings might not work as expected. That matters if your store uses plain permalinks such as
example.com/?product=111.
Shopify's guide says to set the redirects up before you move the domain, so that they are in place the moment it points at Shopify. As soon as it does, put a sample of old addresses of each kind into the redirect checker, which follows a redirect and shows each hop. Each should reach its new page in one hop.
Check before you switch the domain
- Product, customer and order counts match what WooCommerce shows.
- A product with variants shows every option, with the right price and stock for each.
- Product images load from Shopify's addresses, not from your WordPress site.
- Pages and posts read correctly, and the links inside them point to Shopify addresses.
- Shipping rates and taxes come out right for an order to each region you sell to.
- A test order goes through with each payment method, and the confirmation email arrives.
- The redirect import finished, and its count matches your list of addresses.
Then make the store public and connect the domain. Shopify says you might need to disconnect the domain in your previous platform's settings first, and that you might see SSL certificate errors if you do not. A domain bought elsewhere is connected by changing DNS records at your domain provider. Shopify says the change usually takes effect within two hours and can take up to two days.
Where it goes wrong
- Passwords. Shopify says customer passwords cannot be migrated from another store, and that imported customers are invited to create new ones. Its current customer accounts ask for no password: a customer signs in with a six-digit code sent by email. Find out which kind of account your store uses, and tell customers before the switch that signing in will look different.
- Variants. A product with more than three options does not import with its options. Find these before the export and decide how each will be sold on Shopify.
- Images that still live on the old site. The product import copies product images into Shopify. Images in page and post text that you pasted across can still point at your WordPress site, and they break when that hosting is canceled.
- Missing redirects. The usual gaps are categories, tags, blog posts and addresses that begin with a prefix Shopify will not redirect.
- Forms and email. Contact forms were a WordPress plugin, so they are set up again. Mailboxes kept at your WordPress host do not move with the store.
- Subscriptions and saved cards. Saved payment methods do not travel with the customer file. Shopify treats moving them as a separate payment method migration, arranged with its support team.
If you would rather hand the work over, our WooCommerce to Shopify migration service moves the products, customers, past orders, pages, blog posts and redirects for a quote in writing.
Common questions
Does Shopify have its own tool for this?
Shopify's guide describes the Store Migration app as a first-party app that imports your products from a WooCommerce CSV export. For customers the guide uses a CSV file, and for past orders and reviews it points to third-party apps.
Do I have to move my past orders?
No. Shopify's guide marks the order steps as optional. If you leave them behind, keep the backup of the WooCommerce site and a downloaded copy of the order report, so you can still answer a question about an old order.
When can I cancel my WordPress hosting?
Not on the day of the switch. Wait until the DNS change has taken effect, the Shopify store has taken real orders, and no image or file is still loaded from the old site. Move any mailboxes first, and keep the backup.
- Error fixHow to fix WooCommerce payment gateway errors
- ResourceWooCommerce checkout is down: a runbook
- Cost guideWooCommerce maintenance cost: why a store costs more, and what the extra should buy
- ResourceWooCommerce sale readiness checklist: Black Friday or any big sale
- Error fixHow to fix a WooCommerce checkout that is not working
- GuideHow to maintain a WooCommerce store: before every update, every week, every month and before a sale

