Start Free Trial
Start Free Trial

Migrate your store from WordPress/WooCommerce to Shopify

Migrate Store From WordPress Woocommerce to Shopify

In this tutorial, you will learn how to migrate your WooCommerce data products, categories, coupons, customers and orders to Shopify with the Matrixify App.  Matrixify makes your store data migration easier and more accurate!

The main difference between Matrixify and other data migration methods is that Matrixify takes the data directly from WooCommerce API which means that there is access to more data and less room for error when handling files in different templates.
Direct connection to the WooCommerce API also allows Matrixify to migrate over any custom WooCommerce fields to Shopify Metafields, so no information is lost in the migration and you can then use those Metafields in your Shopify theme later.

You can migrate any WooCommerce images that are contained in your Product or Collection descriptions, so that all images, including images in the descriptions, are hosted in Shopify, and not on your old WordPress/WooCommerce servers which you will switch off anyway.

The following tutorial explains how to migrate following data from WooCommerce to Shopify:

  • Products (including Products from trash in WooCommerce as archived in Shopify)
  • Collections (Categories in WooCommerce)
  • Redirects (generated from Product and Category links in WooCommerce to Shopify links)
  • Customers
  • Orders
  • Discounts (Coupons in WooCommerce)

This tutorial only works with WooCommerce API version 3 (WooCommerce version 3.5)

To check what WooCommerce API version your WooCommerce store has you need to open this page in your store: https://<server>/wp-json/wc/v3/
Replace <server> with your stores domain. Check step #2 on how to see what is your stores server/domain.
This page should open JSON file that looks like a page with a lot of text.
If this page opens an error message then please ask your WooCommerce administrator to configure WooCommerce API on version 3.

Steps to migrate your Store from WooCommerce to Shopify

Step-by-step plan on how to migrate your store from WordPress/WooCommerce to Shopify using the Matrixify app:

  1. Generate WooCommerce API credentials.
  2. Construct the WooCommerce API URL with the credentials you’ve generated. The URL should follow this template: https://<consumer key>:<consumer secret>@<server>. Replace <consumer key>, <consumer secret>, and <server> with your own credential details.
  3. Start a new import job from the WooCommerce API URL.
  4. Check the job details and select the “Dry Run” option. This will allow you to see what data will be imported without actually importing it.
  5. Download and unzip the generated zip file.
  6. Upload the images to Shopify Files.
  7. Review the “Import_Result” Excel file before importing.
  8. Disable staff order notifications in Shopify.
  9. Import final Excel file into Matrixify app.
  10. Enjoy your WooCommerce store data in Shopify.

Now let’s dive into how to do it exactly.

1. Generate WooCommerce API credentials

Matrixify app uses WooCommerce API to get your shop data.
The first thing we will need is API credentials that Matrixify can use to access WooCommerce data.

Go into your WordPress Admin -> WooCommerce -> Settings -> Advanced -> Rest API -> Add Key

1 - create WooCommerce REST API Credentials

This will open a page where you can generate new API credentials.
There are three following fields to set:

  • Description: Here you can enter a name for the credentials. It does not need to be a specific name, it is just for your own reference.
  • User: Select the user through which the app will be accessing the API.
  • Permissions: The app only needs to read the data from your store, so select “Read” permissions.

After the fields have been selected, click on the “Generate API Key” button.

2 - create WooCommerce REST API Credentials

Now you can see two fields “Consumer Key” and “Consumer Secret” that we will need in the next step.

2. Construct the WooCommerce API URL with credentials

In the Matrixify app, we will need to provide a URL with API credentials from which the app will take your WooCommerce shop data.

The URL is constructed in the following template:

https://<Consumer Key>:<Consumer Secret>@<server>

For example, if we have the following credentials:

  • Consumer Key: ck_00a000000a0a00a0000000000a0aaa0a0a0aaa00
  • Consumer Secret: cs_1bb111b11111b1b11b1111111111b11bb1b1bbb1
  • Server: your-woo-domain.com

So the URL for the Matrixify would be:

https://ck_00a000000a0a00a0000000000a0aaa0a0a0aaa00:[email protected]

Make sure to take your own WooCommerce server from the WooCommerce Admin URL and API credentials as in the screenshot below.

3 - create WooCommerce REST API Credentials URL migrate Products to Shopify Matrixify

Additional URL attributes to limit migrated data

You can also use additional URL parameters to limit the data you migrate from your WooCommerce store to Shopify using the Matrixify app.

Whether you’re looking to migrate only specific entities, or you want to limit the data based on a certain date range, you can construct your WooCommerce API URL with the necessary parameters.

To migrate only a specific entity

If you do not wish to migrate everything, you can add ?only= at the end of the URL to specify what you wish to migrate.
For example, to migrate only Customers and Products add ?only=customers,products at the end of your URL.

Available values are:

  • products
  • categories
  • customers
  • orders
  • coupons

Migrate specific Orders

For Orders, you can also add the following parameters:

  • order_status – can be set to the following values as supported by WooCommerce API:
    • pending
    • processing
    • on-hold
    • completed
    • cancelled
    • refunded
    • failed
    • trash
  • orders_created_since – on or after (>=) specific date and time
  • orders_created_before – before (<) specific date and time
  • orders_updated_since – on or after (>=) specific date and time
  • orders_updated_before – before (<) specific date and time

Date attributes need to be in ISO8601 format, in your WooCommerce store time zone.

For example, you can set parameters like this:

?only=orders&orders_created_since=2020-01-26T00:00:00&orders_created_before=2021-01-29T00:00:00&order_status=completed

This export will migrate only completed Orders, created at or after 2020-01-01 00:00 and before 2021-01-01 00:00 (from 2020 year).
You can also include other entities in the same constructed URL, but only Orders will be filtered with these order parameters.

Migrate specific Customers

For, customers you can filter customers by their role and created/updated dates with the following parameters:

  • customer_role – possible values (if you do not have this parameter specified the app will assume the role as all):
    • all
    • administrator
    • editor
    • author
    • contributor
    • subscriber
    • customer
    • shop_manager
  • customers_created_since – on or after (>=) specific date and time
  • customers_created_before – before (<) specific date and time
  • customers_updated_since – on or after (>=) specific date and time
  • customers_updated_before – before (<) specific date and time

Date attributes need to be in ISO8601 format, in your WooCommerce store time zone.

For example, you can set parameters like this:

?only=customers&customer_role=subscriber&customers_updated_since=2023-01-01T00:00:00

This example would migrate only customers that have roles set as subscribers and have been last updated since the start of 2023.

Migrate specific Products

Same as for Orders and Customers, you can use various filters for Products to limit what products are migrated.
By using these filters you can migration only some products that you need to ensure to exclude products that you do not wish to migrate.

  • product_status – possible values (you can also list multiple statuses separated by a comma):
    • draft
    • pending
    • private
    • publish
  • products_created_since – on or after (>=) specific date and time
  • products_created_before – before (<) specific date and time
  • products_updated_since – on or after (>=) specific date and time
  • products_updated_before – before (<) specific date and time

Date attributes need to be in ISO8601 format, in your WooCommerce store time zone.

For example, you can set parameters like this:

?only=products&product_status=pending,publish&products_updated_since=2023-01-27T00:00:00

This example would migrate only Products with pending or publish status that have been last updated since the start of 2023.

Note that, following this tutorial you will generate Matrixify template Excel file with your Products data where you will be able to further remove rows of Products that you do not wish to migrate.

Combining URL attributes

While the URL parameters can be used separately to migrate only specific data, they also provide great ability to just limit what data is being migrated.
This is important if you either do not need to migrate old data from the store or have already done the whole migration previously but now need to migrate over the rest of the data that was changed in WooCommerce after the big migration.

The simplest way to achieve this in both cases is to add updated since URL parameters:

?products_updated_since=2023-10-28T00:00:00&orders_updated_since=2023-10-28T00:00:00&customers_updated_since=2023-10-28T00:00:00

A full example would be:

https://ck_00a000000a0a00a0000000000a0aaa0a0a0aaa00:[email protected]?products_updated_since=2023-10-28T00:00:00&orders_updated_since=2023-10-28T00:00:00&customers_updated_since=2023-10-28T00:00:00

In this example, the app would migrate all entities – products, customers, orders, categories, and coupons, but only recently updated (since 2023, October 1) products, customers, and orders will be migrated over thus limiting the amount of data migrated.

If you need help constructing the URL that would best fit your specific use case, feel free to ask our support for assistance.

3. Start a new import job from the WooCommerce API URL

Now that we have the URL constructed, we can go into the Matrixify app. In the Import section you can paste your URL and press the “Upload from URL” button.

This will open a new import page where you can inspect that everything looks correct.

Upload to Shopify with Matrixify from WooCommerce API migration

If app returns error “URL does not exist” it could mean that your Cloudflare Web Application Firewall (WAF) is blocking the connection from our server IP address.
Make sure that the Cloudflare WAF has Matrixify IP address 54.218.250.7 whitelisted to allow connections to your WooCommerce API.

4. Check the job details and select the “Dry Run” option

In the new import page, we can see details about the import job that we are about to run.

You can see what data the app will import and make sure that item counts look correct.
*Do note that WooCommerce API for Customers does not return Customers that created orders as guests without creating an account in your store, so the Customer count could be less than what you see in your WooCommerce admin.
But don’t worry – those Customers will get created with their basic details and addresses from the Order data.

Notice the “Format” should say “WordPress / WooCommerce API” – that way you know that it is recognized and connected to your WooCommerce API.

Migrate WooCommerce data to Shopify with Matrixify Categories Products Customers Orders Coupons

Then scroll down to the “Options” and select the “Dry Run” option. This will only convert the data from your WooCommerce shop to Matrixify template, without importing it just yet. It will give you a chance to then take a look at the converted data – check that everything is as you need, clean up your data before importing, and make any needed adjustments.

Doing a Dry Run is an optional thing – technically you could just run the Import without the Dry Run, and then look at the imported data directly in your Shopify Admin.

You do not need to change any other options – the default ones should work fine.

Check out Matrixify Import Options documentation to see what each option means.

2 - Check the job details and select the "Dry Run" option

Press the “Import” button at the top or bottom of the page to start the Dry Run import.

Dry Run import should be quick, but if you have a lot of data and it takes a while, then you should know that you don’t have to keep the Matrixify app open – you can close the browser, as it will continue working on our servers. Once the conversion is finished you will get an e-mail about it. Or you can just come back later and look into the recent jobs to see how it goes and if it’s finished already.

2 - migrate whole store from WooCommerce to Shopify with Excelify

5. Download and unzip the generated zip file

Once the Dry Run (or import) is finished, you can press the “Download Import Results” button to download Matrixify generated zip file.

Unzip that downloaded file. Inside you will find the folder “Images” and Excel file “Import_Result.xlsx“.

1 - Download and unzip the generated zip file

In the “Images” folder app will return images as actual files that are listed in the Product or Collection Body HTML code.
In many migrations, there might not be images within the HTML code, in that case, the “Images” folder will not be returned.

Actual Product images and Collection featured images are not returned in the folder as they will be downloaded by Shopify from the image links listed in the Excel file.

6. Upload the images to Shopify Files

In the “Images” folder you can find all image files that are used in the Product and Collection (Category) descriptions.

1 - Upload the images to Shopify Files

Since you are most likely going to switch off your old WordPress / WooCommerce hosting, you are going to need to host those images elsewhere. Shopify can host your images on their servers, and we strongly suggest using that opportunity.

When converting data from WooCommerce with the Matrixify app, the image links in your Product and Collection descriptions are changed to the locations where Shopify will host those images. So all you need to do is to upload those images to Shopify so that those new links start to work.

Head into your Shopify Admin Files section by going in Shopify Admin -> Content -> Files and press the “Upload” button to upload your files.

Navigate to your unzipped images folder and select to upload all those images.
This can be done by pressing Ctrl+A (or Cmd+A on a Mac) buttons on your keyboard.

It is important not to change the names of the images as then the uploaded image link will not match the one in your migrated descriptions.

If the Matrixify has guessed the new image links correctly, then they will show up in descriptions. If you have any broken image links after the migration, please, contact Matrixify Support so that we can fix it for you.

2 - Upload the images to Shopify Files

7. Review the “Import_Result” Excel file before importing

Once your images are uploaded to the Shopify Files section, we can take a look at the Matrixify generated Excel file with your WooCommerce store data.

This is a great moment to fix and clean up any data that you want to make better now that you are moving to Shopify. Quite often legacy systems have some degree of a mess in the data – partial phone numbers, misspelled words, uneven variant option names, and so on. Or maybe there is something you don’t need to migrate, then you can simply remove that data from the import file.

All fields that do not have a specific place in the Shopify will be set as Metafields in the generated file. You can look into Shopify manual on the Metafields and also make a note of our tutorial on how to bulk manage Metafields if you need to edit them later in bulk.

The “Import_Results” file will contain multiple sheets/tabs for each entity:

  • Products
  • Custom Collections
  • Redirects
  • Customers
  • Orders

1 - Review the "Import_Result" Excel file before importing

Products / Migrate from WooCommerce to Shopify

In the Products sheet, you can find all the product details that will be migrated.

You can find explanations of each column in the Matrixify Products documentation.

In WooCommerce you can have many Options per Product that are creating the Variants, but in Shopify, you can only have 3 options. The Matrixify app solves this by including all options above 3rd into option 3, joined with | symbol. That way you will still be able to choose all the options for your products, even if you had more than 3 options for your product variants in WooCommerce.

In this app-generated Excel file, you can also manage where and how you wish for the WooCommerce Product short_description to be saved.
By default, the app will just save it in a custom Metafield column Metafield: woo.short_description. You can copy and paste it in another Shopify description field if needed top manage where short_description is used in your Shopify store: Body HTML for regular Product description or Metafield: description_tag column for SEO description.

2 - Review the "Import_Result" Excel file before importing

Custom Collections / Migrate from WooCommerce to Shopify

Custom Collections in Shopify are manual collections where you can manually add products to them.
These would be generated from your WooCommerce Categories.

You can find explanations of each column in the Matrixify Custom Collections sheet documentation.

Custom Collections / Migrate from Woocommerce to Shopify

Redirects / Migrate from WooCommerce to Shopify

WooCommerce Product and Category (Collection) URLs are constructed differently in the Shopify.
This is why the Matrixify app automatically creates a redirect for each Product and Collection so that search engines know where those items are moved and can update their index. Also, customers who have bookmarked links to specific pages, or backlinks that point to them – all those will still continue working after the migration because visitors will get redirected to the correct pages in your new Shopify store.

You can find explanations of each column in the Matrixify Redirects sheet documentation.

Redirects / Migrate from Woocommerce to Shopify

Customers / Migrate from WooCommerce to Shopify

This contains all the Customer details that you will migrate to Shopify, including all their Addresses.

Matrixify will migrate all Customers – the ones that have Orders, and the ones that do not.

In WooCommerce each Customer has a “Role” assigned. In Shopify, there is no such thing as a Customer role, so this information will be stored in the Customer Tags. You can also find the Customer Role and other fields that Shopify does not have, in the Metafield columns.

You can find explanations of each column in the Matrixify Customers sheet documentation.

Customers / Migrate from Woocommerce to Shopify

Orders / Migrate from WooCommerce to Shopify

In this sheet, you could see all the order data in the Matrixify template.

The app would take all Orders from your WooCommerce store including their Refunds, Fulfillments, Customer addresses, and other details that can be found in the sheet.

You can find explanations of each column in the Matrixify Orders sheet documentation.

Orders / Migrate from Woocommerce to Shopify

Discounts / Migrate from WooCommerce to Shopify

The last section of the file is Discounts with WooCommerce coupon details.

Coupons do work differently in WooCommerce than Discouns do in Shopify so there might be various warnings returned that you need to look into if it is something you need to adjust for your data or not.

You can find explanations of each column in the Matrixify Discounts sheet documentation.

Here are a few errors and warnings for WooCommerce Coupons migration related to discount structure and logic differences between Shopify and WooCommerce:

  • Error message: Entitled Collection Ids: cannot entitle collections in combination with product variants or products.
    Answer: In Shopify, you can specify either products or collections for a discount to be applied, but not both at the same time. To fix this issue, you should specify either applicable products or categories for specific coupons in WooCommerce before migrating them to Shopify.
  • Warning message: "Exclude sale items" in WooCommerce is set to TRUE, but this logic does not translate to Shopify.
    Answer: Shopify does not have the option to exclude sale items from applying discounts like WooCommerce does. To work around this limitation, you may need to consider alternative strategies for managing discounts and promotions within your Shopify store.
  • Warning message: WooCommerce 'Exclude products' does not translate to Shopify. List explicitly included Products.Answer: In Shopify, it is not possible to exclude specific products from applying discounts as you can in WooCommerce. To resolve this issue, you should list the explicit products to which the discount applies and remove any exclusion criteria from the WooCommerce side. By doing so, you can successfully migrate your WooCommerce coupons to Shopify Discounts.
  • Warning message: Warning: Could not find the following 'Applies To: Customers Email': [[email protected]].Answer: In WooCommerce, you can define any valid email under “Usage restrictions / Allowed emails” for coupon settings, while in Shopify, you can only specify existing customers. This warning indicates the email addresses that were not added to the list of applicable emails for this specific discount. To resolve this issue, you might consider creating customer records for these email addresses in Shopify.
  • Warning message: "Allow free shipping" in WooCommerce is set as TRUE, but Shopify has Free Shipping as a separate Discount Type or configured in Shipping settings.Answer: In WooCommerce, you can set “Allow free shipping” for any coupon code. However, in Shopify, free shipping is managed differently – it can either be a separate discount type or configured within the shipping settings. To resolve this warning, you should create a free shipping discount in Shopify and combine it with any existing discounts or configure free shipping within your shipping settings, as appropriate for your store.
  • Warning message: WooCommerce 'Exclude categories' does not translate to Shopify. List explicitly included Collections.Answer: In Shopify, it is not possible to exclude specific collections from applying discounts as you can in WooCommerce. To resolve this issue, you should list the explicit categories to which the discount applies and remove any exclusion criteria from the WooCommerce side. By doing so, you can successfully migrate your WooCommerce coupons to Shopify Discounts.

Migrate WooCommerce Discounts and Coupons to Shopify with Matrixify app using WooCommerce API

8. Disable staff order notifications in Shopify

If you as the store owner don’t want to receive e-mail notifications from Shopify for creating each Order, go to Admin -> Settings -> Notifications, and disable the “Staff order notifications“.

Disable Shopify staff order notifications for bulk orders import migration

9. Import final Excel file into Matrixify app

Once you have made sure that data in the Excel file looks correct, you can again go into the Matrixify app, and upload that Excel file into the Import section.

When the file is uploaded and analyzed, make sure that the app recognizes each sheet from the file.
Since you are now uploading the Matrixify template file then you will also see that format is “Matrixify“.

This time you do not need to select the “Dry Run” option as now you need to actually import the store data from the file.

If all details look correct, you can just start the import by pressing the “Import” button.

5 - migrate Orders from WooCommerce to Shopify with Excelify

 

10. Enjoy your WooCommerce Store Data in Shopify

While the import is running you will see how many items are created and other details about the import.
Same as with the Dry Run previously, you can close the app while the job is running and come back later to check the results.

Once the import finishes you will see that it has a green “Finished” label.

Then you can go into your Shopify Admin and check your migrated WooCommerce Data in Shopify.

1 - Enjoy your WooCommerce Store Data in Shopify

 

Good to know

  • This tutorial explains how WordPress WooCommerce migration can be done with the Matrixify app.
  • To check what WooCommerce API version your WooCommerce store has you need to open this page in your store: https://<server>/wp-json/wc/v3/
    Replace <server> with your stores domain. Check step #2 on how to see what is your stores domain.
    This page should open JSON file that looks like a page with a lot of text.
    If this page opens an error message then please ask your WooCommerce administrator to configure WooCommerce API on version 3.
  • You can skip the Dry Run step and the whole reviewing of the converted Import Result file, and import the data without the Dry Run option – it will do the import straight away, and it will still generate the converted Import Result file with the images folder. Remember to upload images to the Shopify Files section.
  • If you see that some items in the import are showing as Failed, don’t worry – you can download the “Import Results” file of that import, and at the “Import Comment” column in each sheet, you can see the reasons for those items that failed. Then you can resolve those issues, and re-import just the Failed rows.
  • If the import speed is important to you, the higher plan you upgrade to, the quicker the import will be, as for example, Enterprise Plan essentially spins off 10 parallel import processes, achieving the effect as if 10 apps would import your data in parallel.
  • You can also migrate your WordPress Blog Posts and Pages to Shopify by following this tutorial.
  • Learn more about migrations to Shopify and what other types of data Matrixify can migrate to Shopify in bulk.
  • If you feel stuck with something, our Support is willing to help you – just reach out to us.

Errors and issues

  • I received this warning message: “Exclude sale items” in WooCommerce is set to TRUE, but this logic does not translate to Shopify. What should I do?Unfortunately, Shopify does not have the option to exclude sale items from applying discounts like WooCommerce does. To work around this limitation, you may need to consider alternative strategies for managing discounts and promotions within your Shopify store.