When I realized Shopify couldn’t handle a very specific use case for our new company, The Waterford Puzzle Company, I looked at a few different options, including BigCommerce, Magento, and WooCommerce. We didn’t have a huge amount of history (customer accounts, orders, etc) but I knew there would be other things to consider when making the switch to what I eventually decided on: WooCommerce.
Now that I’ve migrated one site from Shopify to WooCommerce, I’m considering doing it for StitchPeople.com, too. This one would be a different beast, however, since there’s a lot of history (5+ years’ worth) and many more intricacies and edge cases to consider. So based on migrating these two sites, here’s my attempt at cataloging all the things that need to be thought through when migrating a site from Shopify to WooCommerce.
This is a high-level overview. I won’t be going into any detail on how to actually do any of this stuff (there are plenty of other resources online, including some free and paid plugins), just talking about the theory of what needs doing. I also won’t be discussing why you might want to switch from Shopify to WooCommerce.
Assuming you want to import your order history, you’ll need customers to attach to those orders. So before you jump straight into importing orders, import your customers first. I like to bring over as much information as possible, including any information stored in user meta fields by third-party apps, etc. Anything I can realistically bring over in the migration, I do. And if that means I need to use user meta data in WordPress, so be it.
If your Shopify store has customer accounts enabled and you want those to be available on WooCommerce, there’s one downside—there’s no way to transfer over the user’s password. This is because Shopify (or any responsible online service for that matter) doesn’t actually know those passwords. Passwords that customers create are salted and hashed before they’re stored in the database. When a customer logs in, the password they type in is salted and hashed in the exact same way as when it was created, and then compared against the stored salted/hashed password in the database. WordPress handles passwords the same way.
Because you don’t know the specifics of the salt and hash process on Shopify (what the salt value is, how many times a password is hashed, with what algorithm, and in what order, etc)., there’s no way to bring over the user’s password to WordPress.
The solution is to migrate the accounts, and then alert your customers about the change and let them know that they will need to reset their passwords. This is same standard ‘Forgot password?’ feature on any other website. This will send an email to the email address associated with the user account and let them reset their password. Once you’ve imported all your customers (and probably their order histories, too) you can find a tool or plugin to help you trigger an email to all users inviting them to reset their passwords. Just make sure your email settings (from name and address, SMTP settings, etc.) are good to go before you trigger that email.
Once you have your customers and products imported, you can import all the orders from Shopify and associate them with the new customers and products in WooCommerce. Doing this lets customers see their order history in WooCommerce once they reset their password and login.
If you sell digital products, this will be one of the trickiest parts. Depending on the service you’re using with Shopify and how you’ve configured it, you may need to migrate to a new digital file delivery system completely. The biggest downside is that any links you’ve sent out in emails, or that customers have bookmarked, may no longer work. I’ve been using SkyPilot for all my digital deliveries, and will probably use WooCommerce’s built in digital file delivery system when I migrate. This will break all the links my customers have been using to download their digital files.
The solution to this problem is to re-generate all download links using whatever new service you choose, and send new links to all your customers. There will undoubtedly be people who miss that email and write in asking for help, but that’s just part of the process and customer service in general. I moved us from SendOwl to SkyPilot a few years ago, and to this day we still get emails every once in a while asking about dead links to downloadable products.
Whatever digital delivery service you choose, see if there’s a way to incorporate it into the user’s account when they login to WooCommerce. If there’s an easy way for them to see their order history and download their purchased products directly from their user account, that may help cut down on the number of customers emailing you.
URLs and Redirects
Shopify uses /products and /collections for URLs. You can setup WooCommerce to use the same kind of URL structure, which will cut down on the number of 404s after you migrate. But as meticulous as you try to be, there will always be some URLs that don’t transfer properly, especially those for things like Shopify pages and blog posts. In fact, you may not even want to keep the same URL structure from Shopify, in which case you’ll need some good URL redirect rules in place.
There are plenty of plugins out there to help you manage and monitor redirects. I use the Redirection plugin, which lets you create Regex rules and quickly see all the URLs that results in 404 errors on your WordPress site. Once you see those 404 errors, you can quickly and easily create a one-off redirect rule for a single URL, or you can use that information to create a more general regex rule.
The most important thing, in my opinion, is to monitor your 404s. Nothing is more frustrating for a customer than to click a link on Facebook, Pinterest, Google, etc. and get to a 404 page. Let those 404 errors happen enough, and you’ll lose favor with the SEO gods. So once you migrate, check those 404 error logs daily (if not multiple times a day) to make sure people are getting to your content as expected and fix it ASAP if they’re not.
If you have discount codes setup in Shopify that are still active, be sure to transfer those over to WooCommerce as well. As a customer, entering a coupon code you know should work but having it return an error message instead is almost worse than a 404 error.
If you’ve been using any tracking codes or pixels from sites like Pinterest, Facebook, Google Analytics, etc. be sure to move those tracking codes over to your WooCommerce store. As much as possible, you don’t want a lapse in analytics and statistics. If anything, the validity of that data is more important than ever during a migration because you want to know how everything is performing after the migration. Did your conversion rate drop after migrating? Are you seeing the same type of traffic from the same kinds of sources? If anything looks different after the migration, you’ll want to look into it. But to even know if things are different, you need all those tracking codes in place.
Bonus: Instructional Content
If you’re nervous about how customers will react to the change, create some blog posts, tutorials, or even videos that walk customers through the changes. It may be time consuming, but my guess is you want your customers to be able to quickly and easily navigate your site. Every second counts, from loading speeds to a customer trying to figure out how to accomplish a task on your site.
The first week after migrating a site from Shopify to WooCommerce is going to be stressful. It’s hard to account for every single detail before you migrate because each shop is different. Do your best to think through all your customer use cases and make sure they’re accounted for in WooCommerce. Once you pull the trigger on your migration, be sure to make yourself available to fix any issues that might come up. Check real-time analytics to watch how people are interacting with your site, and be sure to check those 404 logs religiously.
Am I missing something? Let me know in the comments.