How To Migrate Woocommerce Orders Like A Pro

You are looking to migrate and orders in Woocommerce from an old site to a new site.

Let’s begin…

Step 1: Download plugins and take a backup

We will be using the following paid plugins:

Yes, these plugins are paid but will save a lot of time and headaches.

I also would suggest installing the Disable Emails plugin. This plugin ensures that no email notifications go out to your customers in the migration process. I have made this mistake by not utilizing this plugin like this that sent over 2,000 order notification emails to past customers. Not a good sign and not a way to revert back once it happens.

Note: I highly suggest taking a backup before exporting your orders. However, if you want to wait to take a backup until Importing your orders that is fine.

Step 2: Set Order Export Format to CSV Import

On the WordPress dashboard, hover over Woocommerce and click CSV Export.

Next, click on the “Settings” tab and set Order Export format to “CSV Import”.

Woocommerce-CSV-Import-Orders

Go back to the “Export” tab and ensure toggle orders (default option) is checked.

Keep all default statuses unless you have a specific periods or order statuses you are looking to export.

I usually leave all field blanks to export all orders and click export.

woocommerce-migrate-orders-export

Step 3: Download CSV file from Export List tab

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

woocommerce-migrating-orders-csv-export-download

Step 4: Import orders from CSV file into Google Sheets or Excel

After exporting the orders CSV, open up Google Sheets (or Excel).

Import the CSV file. I replace my current sheet and then click “Import Data”.

ID column

If you are using the Order Export format of “CSV Import”, the “id” column will be exported as default. If importing historical orders, do not import the “id” column, the first column in your CSV file.

Woocommerce-CSV-Export-Orders

Status column
If your exported orders have “status” in Column D that are need to be updated from “on-hold” to “completed” or from “processing” to “completed”, do the following:

  • Highlight Column D > click Edit > click Find and Replace.
  • Find “on-hold”, replace all to “completed”.
  • Find “processing”, replace all to “completed”.

After your CSV file is ready to go, go to File > Download As > Comma-separated values (.csv, current sheet).

Step 5: Import Orders from CSV file

Go to your Dashboard on your live site > Woocommerce > CSV Import Suite > click “Import Orders”.

Next, upload your CSV file and configure your options.

woocommerce-allow-line-items-with-unknown-productsku-id

Notes

  • Allow unknown products: If you have products or product variations that have been discontinued, check “allow unknown products”.
  • Merge/update: I only do this if I do not format the dates correctly or added line items to a single order and want to update the order.

Before staring the import, make sure you have gone to Plugins > and the Disable Emails is not only installed but also activated.

Single order import
If I have 10 or 100,000 orders to import, I always import a single order to minimize any trouble in migration. For example, if I did not remove the “id” column or the Disable Emails plugin was not activated, this could cause major issues for all 5,000+ orders.

Note: after the single order has been imported, I navigate to Woocommerce > Orders > and study the single order to ensure everything migrated correctly.

All orders import
If the single order import went well, repeat the steps above and import all orders into your site.

woocommerce-csv-import-orders


FAQ

Question: I do not use a premium host such as WP Engine, Kinsta, or Flywheel. How can I easily create a backup with a plugin?
Answer: A few plugins to use are Duplicator, BackupBuddy, or BlogVault.

Question: How come you wouldn’t just copy the live site to the dev site? Wouldn’t all orders be migrated?
Answer: If you are developing an entirely new theme I prefer to start with a fresh WordPress install, develop the theme, and then re-import the products, customers, coupons, and then orders.

Question: Are you supposed to import the orders or customers first?
Answer: Customers should be imported first than orders.

Question: Do you have a preference of disabling Order Notification emails vs. the Disable Emails plugin?
Answer: There is no right or wrong answer but I prefer the Disable Emails plugin. I have made a mistake when importing orders to not disable Woo email notifications or use the Disable Emails plugin. Over 5,000 email notifications were sent to previous customers. I am still paranoid about this happening and use the Disable Emails plugin to be safe. I do this in very low traffic times (i.e. after 11pm in my time zone).

Question: I am using Excel and the file format does not working while importing?
Answer: While exporting your CSV file in Excel, ensure that the export format is set to UTF-8.


Closing

Overall, migration can be a very painful process. I have done this process before and have put in a lot of hours before everything worked correctly. During each step above, I strongly suggest to take a backup every time on your hosting provider.

Hopefully you are on your way to migrating orders between sites. Leave a comment below if you have any questions or get in touch with us at our Contact page here: https://sgwebpartners.com/contact