Skip to content

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

WhatHow it gets to ShopifyNotes
ProductsWooCommerce's product export, reshaped to Shopify's columns, then Shopify's product importShopify 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.
CustomersA CSV file in the shape of Shopify's customer templatePasswords do not move. Order counts and totals are not imported with a customer.
Past ordersA migration app from the Shopify App Store, or Shopify's order APIShopify lists no CSV import for past orders. Its WooCommerce guide marks this step as optional.
Pages and blog postsA migration app, Shopify's page and blog APIs, or copy and pasteThe layout comes from the Shopify theme.
CouponsSet up again as discountsNot on Shopify's list of data that moves in bulk.
ReviewsA reviews appShopify's guide says reviews cannot be migrated from WooCommerce directly.
Theme and pluginsDo not moveShopify 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, paymentsDo not moveSettings 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. Step 10: Set up shipping, taxes and a payment provider

    None of these are imported. Shopify's guide has a step for each.

  11. 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 columnBecomes in Shopify
NameThe product's title
DescriptionThe 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.
SKUThe SKU
Weight (lbs)The weight in grams. Multiply pounds by 453.6.
StockThe inventory quantity
Regular priceThe price
ImagesThe 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 defaultIn Shopify
example.com/product/hoodie-with-logoUnder example.com/products/
example.com/product-category/accessoriesUnder example.com/collections/
A page, where your permalink settings put itUnder example.com/pages/
A blog post, where your permalink settings put itUnder 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, /services or /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.

More on this subject

Would you rather we moved it?

Moving a site or a store from one platform to another, with its old addresses redirected to the new ones. Quoted in writing after a free assessment of what moves by itself and what has to be rebuilt. The assessment is free.