How to Migrate Woocommerce Customers between sites?

WooCommerce
How to Migrate Woocommerce Customers between sites?

In this guide, we break down how to successfully migrate Woocommerce customers from Site A to Site B without changing the customer’s password.

Whether you need to migrate 10 or 100,000 customers, use this guide to successfully migrate your Woocommerce customers.

Before we begin, here are a few notes:

  • The migration process will take anywhere from 2 hours to 5 hours. I have done this process a lot and put in a lot of hours before everything worked correctly. Be patient and practice if you need to on different staging sites.
  • For starters, I always import a single customer to minimize any trouble in migration. The steps to this tutorial are setup for you to do the same. How come? I want to make sure no mistakes happen in migration. If everything went well during the single customer migration, I then migrate all customers.
  • The process to migrate Woocommerce data from Site A to Site B is to migrate products first, customers second, coupons third, and orders last. After successfully migrating your customers from Site A to Site B, you then can migrate your orders.
  • Lastly, friendly reminder to take a backup as much as you can during the migration process.

Let’s begin!

The 5 steps to migrate Woocommerce customers from site to site are:

  1. Create a test customer account at Site A
  2. Export your test customer from Site A
  3. Open your CSV file and ensure the password column is hashed
  4. Import test customer to Site B and verify password works
  5. Repeat Steps 2 through 4 to export/import all of your customers from Site A to Site B

1: Create a test customer account at Site A

Before migrating every single one of your customers, start by migrating 1 customer.

To start, go to Site A and register a new customer account with the role “customer”.

If you are signed in as admin on Site A, open up an incognito tab to register your test customer account.

Set a password you can remember or write it down. We will be using this username and password in Step 5 to login to Site B.

Pro tip: I would recommend doing a test order with this “customer” or at least fill out your billing and shipping address in the My Account pages.

2: Export your test customer from Site A

To export the customer you just created from Site A to a CSV file, download the following plugin:

After activating the plugin, go to the WordPress dashboard, hover over Woocommerce and click CSV Export.

On the Settings tab, toggle “Customers” and set the Customer Export format to “CSV Import”. Save the settings.

woocommerce-customer-export-csv-import-format

Next, click the Export tab, and and toggle “Customers” and export your customers.

Pro tip: If you are exporting your test customer account created in Step 1, set the start date and end date to today’s date and then click Export.

woocommerce-export-customers

The export CSV file may take 10 seconds or 15-20 minutes depending on your customer count.

Go to the “Export list” tab, and download your CSV file.

3: Open your CSV file and ensure the password column is hashed

Open your CSV file in Excel or import it into Google Sheets.

With this google sheet I am able to visualize all the meta fields. For example, here is a sample google sheet: export/import customers

Double check the following:

  • password column is included
  • user_id column is not included

Now, comes the fun part! In the third column you should see a password column. For example, your passwords should look similar to this format with a “$” and a bunch of randomly generated letters and numbers:

$P$Bf4b0GgcWzYTeQSPZH9WCToH8tzol2.

Your passwords column will have a format with a “$” and a bunch of randomly generated letters and numbers.

Pro tip: make sure that the user_id column is not the first column. If you used the export format “CSV Import” this should not have been included in the export format.

When ready, click “File” > “Export” to export the CSV file from Google Sheets.

4: Import test customer to Site B and verify password works

You are now ready to import your test customer to Site B!

Go to Site B and download the CSV Import Suite Customer/Order/Coupon CSV Import Suite plugin.

After activating the plugin, go to the CSV Import Suite, and click the “Import tab”.

Click “Import Customers” with CSV file and upload your CSV file.

woocommerce-import-customers-without-changing-password

Next, I am ready to import the customers from this CSV file using the CSV Import Suite plugin.

Since we exported the customers using the CSV Import format in Step 2, the user passwords are correctly hashed and do not need to be re-hashed. Re-hashing the passwords again would change the passwords.

Pro tip: During this process I always do a “Dry Run” first to see how the data is interpreted. Even if I make a mistake and “Start Import” if a column is wrong I can always restore to the previous backup point.

woocommerce-import-customers

After uploading your CSV file to Site B, ensure all fields are mapping correctly to the columns.

Pro tip: Test to see if you can login to Site B with the username and password set in Step 1. If you are able to login, give yourself a round of applause!

5: Repeat Steps 2 to 4 to migrate all of your customers from Site A to Site B

After repeating steps 2 to 4, reach out to a customer on Site A and see if they are able to login to Site B.

Do not be afraid to communicate over email, phone call, or in person meeting if they are having any problems.

A customer may not know their current password they used on Site A. Simply helping them find their autofilled password on Google Chrome or Safari and trying that exact password will ensure all your customers are able to login to Site B.


Frequently Asked Questions

How do I migrate Woocommerce orders from Site A to Site B?
Answer: I wrote another in depth article where I break down how to migrate Woocommerce orders between sites.

The good news is that if you already purchased the plugins used in this tutorial you can use in the Woocommerce order migration process.

How long will the migration process take?
Answer: Expect the migration process to take anywhere from 2 hours to 5 hours. Transferring data and migrating to different servers and environments is a tough process. There usually is no right or wrong way to do it and at times can be customized to your process.

How often should I take backups?
Answer: Take a backup as much as possible during this migrating process. If your server does not have backups I would strongly consider creating an account at WP Engine or another premium WordPress hosting provider such as Flywheel or Kinsta.

What would be a scenario where I would re-hash the user passwords when importing customers to Site B?

If you are importing customers that previously did not have account on Woocommerce, you would enable this option. Your CSV file for the “password” column would be plain text passwords that are not hashed.

For example, the password column would have passwords that look similar to “Holiday20” or “password123”.

What fields should be exported if I choose the “CSV Import” method?
The following fields should be exported in your CSV file:

  • username
  • email
  • password
  • date_registered
  • billing_first_name
  • billing_last_name
  • billing_company
  • billing_address_1
  • billing_address_2
  • billing_city
  • billing_state
  • billing_postcode
  • billing_country (i.e. US)
  • billing_email
  • shipping_first_name
  • shipping_last_name
  • shipping_company
  • shipping_address_1
  • shipping_address_2
  • shipping_city
  • shipping_state
  • shipping_postcode
  • shipping_country (i.e. US)

Here is a sample google sheet to reference: export/import customers

Additional Resources

Comments

  1. Charles Campion June 24, 2019 | 5:34 pm

    Thanks for tutorial it is a big time saver! If I wanted to migrate Woocommerce Subscriptions, would I import the “subscriptions” after importing the customers and before importing the orders? I am having problems having my subscriptions match my parent and renewal orders?

Leave a reply

Your email address will not be published. Required fields are marked*