How to Migrate Your Shopify Store to WooCommerce
Updated 3 weeks ago
The easiest way to migrate from Shopify to WooCommerce is to use a migration plugin that transfers products, customers, orders, pages, blog posts, and coupons via API, such as Migrate & Import Shopify to WooCommerce. For small stores, the manual method using Shopify export CSVs is free. The full process is the same in both cases: prepare your hosting and WooCommerce, export your Shopify data, migrate the data, set up redirects, point your domain, test the store, and only then cancel your Shopify plan.
Keep your Shopify store active and visible until the import is complete: CSVs don't include image files, only their URLs, and WooCommerce downloads the images from those links.
Before you start
You’ll need full access to the Shopify admin (to export data and create API credentials) and hosting where you can install WordPress and WooCommerce. WooCommerce currently recommends:
WordPress 6.9 or later.
PHP 8.3 or later (tested up to PHP 8.4).
MySQL 8.0 or MariaDB 10.6 or later.
HTTPS is required.
A WordPress memory limit of 256 MB or higher.
All Duplika hosting plans are compatible with WordPress. Go to cPanel from mi.duplika.com and install WordPress using the WordPress Toolkit (also available through Softaculous Apps Installer). If you need to change the PHP version, follow Change PHP version and settings. Plans include a Let's Encrypt SSL certificate, which is installed and renewed automatically for domains pointing to our DNS servers. After activating it, update the WordPress Address (URL) and Site Address (URL) fields in Settings > General so they use https://.
Also decide what to do with your domain: you can transfer it to another registrar or simply update its DNS records to point to the new hosting. Before importing anything, back up your WooCommerce database and test the process with a small sample file.
Choose your migration method
The manual method (CSV) is free but requires editing files and using additional plugins for customers and orders. Automated plugins and services connect both stores via API and reduce manual work. Prices published by each provider:
Tool | What it migrates | Price |
|---|---|---|
Migrate & Import Shopify to WooCommerce (official WooCommerce marketplace) | Products, customers, orders, pages, blog posts, and coupons, with filters and a connection to Shopify via API. | USD 79 per year (USD 158 for two years). |
Free: products, variants, stock, prices, images, and categories. The premium version adds orders, customers, coupons, pages, blog posts, taxes, shipping zones, and settings. | Free; premium version costs USD 69 to 119, depending on the license. | |
Products, categories, customers, orders, coupons, reviews, pages, blog posts, and images; includes 301 redirect creation. | From USD 29 (automated); All-in-One from USD 129. | |
Products, customers, orders, coupons, reviews, pages, images, SEO, and variants; includes 301 redirects. | From USD 39, depending on the amount of data. | |
Products, customers, orders, coupons, reviews, images, and variants; 301 redirects are a separate add-on. | Pricing is based on the data migrated; as a guide, the average is USD 99 for a store with 1,500 products. |
No tool transfers Shopify's design: a Shopify theme can't be installed as a WordPress theme. You’ll need to recreate the design with a WooCommerce theme, such as Storefront, the free official theme, and adjust the logo, colors, and typography in Appearance > Customize or Appearance > Editor.
Export and back up your Shopify data
Export products, customers, orders, and the theme from the Shopify admin. Save all files in UTF-8 format so accented characters and ñ aren't corrupted.
Products
In the Shopify admin, go to Products > Export.
Choose whether to export all products, products on the current page, selected products, or products that match a filter.
Select CSV file for Excel, Numbers, or another spreadsheet program and download the file.
The CSV includes the name, description, URL handle, vendor, category, tags, SKU, prices, inventory, variant options (Option1, Option2, Option3), image URLs, and SEO fields. Images are included as URLs, not files.
If a product has more than 100 variants, Shopify emails the CSV to you. Exports with thousands of variants may time out; if that happens, split the export using filters.
Customers
Go to Customers > Export.
Choose All customers and the CSV format for spreadsheet programs.
Download the file: up to 50 customers are downloaded directly in your browser; files for more than 50 customers are sent by email.
Customer CSVs have a 15 MB limit: if the file exceeds it, split it into multiple files. Passwords aren't exported for security reasons, and the Total Spent and Total Orders fields aren't imported as customer data.
Orders
Go to Orders > Export.
Choose all orders or a date range, and the CSV format.
Download the file: up to 50 orders are downloaded in your browser; files for 51 or more orders are sent by email.
The order CSV includes the order number, customer email, financial and shipping statuses, currency, totals, discounts, SKU, addresses, payment method, and refunds. The transaction history includes captured payments only, not authorizations.
Theme and files
To back up the design, go to Online Store > Themes, open the active theme's menu (Actions), and choose Download theme file. Media files that aren't product images (banners, logo, favicon, blog images) are downloaded from Content > Files, because Shopify exports don't include them.
Manual method: migrate products via CSV
The native WooCommerce importer can't read the Shopify CSV as exported: you need to edit it in a spreadsheet so that it matches the WooCommerce format.
1. Edit the product CSV
Open the exported file in Excel or Google Sheets and adapt it to the WooCommerce columns. Main mappings:
Shopify column | WooCommerce column |
|---|---|
URL handle | Slug |
Title | Name |
Description (Body HTML) | Description |
SKU | SKU |
Price | Regular Price |
Compare-at price | Sale Price (if applicable) |
Inventory quantity | Stock |
Product image URL | Images |
Product category / Type | Categories |
Vendor | Product attribute or brand |
Option1 name / Option1 value | Attribute 1 name / Attribute 1 value(s) |
Watch out for column names: many older guides use Handle, Body (HTML), Variant Price, and Image Src, which were Shopify's previous column names. The current CSV uses URL handle, Description, Price, and Inventory quantity, among others.
For variable products, WooCommerce uses a parent-child model:
One row for the parent product, with the variable type in the Type column and its attributes (
Attribute 1 nameandAttribute 1 value(s), for exampleSizeandS, M, L).One row for each variant, with the type set to variation and
Parentpointing to the parent's SKU or ID.Use consistent attributes and values for the parent and its variations.
When you're done, delete Shopify-specific columns that don't have an equivalent, save the file as products.csv, and verify that all image URLs are valid and accessible.
2. Import the CSV into WooCommerce
In the WordPress admin, go to WooCommerce > Products.
Click Import, next to the button for creating a product.
Upload
products.csv.On the mapping screen, match each file column to the corresponding WooCommerce field and choose which columns to ignore.
Click Run the importer and wait for it to finish. If there are errors, you’ll receive a message with a link to the log.
Check Products to confirm that the products, variants, and images were imported correctly.
Manual method: migrate customers and orders via CSV
WooCommerce doesn't natively import Shopify customers or orders: for the manual method, use plugins from the WordPress repository.
Customers
Edit the customer CSV so that it uses the WordPress user format: at minimum, include
user_login,user_email,first_name,last_name,display_name, androlewith the value customer. Each email must be unique; you can use the formula=UNIQUE(D:D)in Google Sheets to find duplicates.Install a user import plugin, such as Import Users from CSV.
Go to Users > Import from CSV and upload the customer file.
Limitations to keep in mind: passwords aren't migrated (customers will have to create new ones), roles and additional data may need to be adjusted manually, and duplicate email addresses will cause the import to fail.
Since Shopify passwords can't be transferred, let your customers know before the switch so they can reset their passwords the first time they log in.
Orders
Install an order import plugin, such as Order Export & Order Import for WooCommerce.
Go to the plugin's import section, choose the Order type, and review the sample CSV it provides: this is the format you need to adapt the Shopify export to.
Upload the order file, map the columns (for example, map the Shopify order ID to the plugin's ID field), and run the import.
Limitations: payment information isn't transferred for privacy and security reasons; shipping methods, taxes, and coupons may not map correctly; the relationship between orders and customers may break if the IDs don't match; and line items with variants or custom options may be imported incorrectly or omitted. For these reasons, the manual method is recommended for small stores or tests; to migrate your entire order history accurately, use the plugin method.
Plugin method: migrate everything in one go
With Migrate & Import Shopify to WooCommerce (or the service of your choice), the migration is performed via Shopify API, without editing CSVs:
Install and activate the plugin from Plugins > Add New in WordPress.
Connect the plugin to your Shopify store using the API credentials it requests. Shopify no longer allows you to create legacy apps from the admin: new apps are created from the Dev Dashboard. Use only the permissions requested by the migration tool.
Choose which data to migrate (products, customers, orders, pages, blog posts, coupons) and configure filters, if available.
First, run a test migration on a staging site using a small sample, and compare the numbers of products, variants, customers, and orders against Shopify.
Check the relationships between customers and orders, and test logging in to a customer account before migrating the rest.
Run the full migration and compare the results with your backup CSVs.
Never share API credentials in screenshots or support messages.
Set up 301 redirects
Shopify product URLs use the /products/ path followed by the product handle, and collection URLs use the /collections/ path followed by the collection handle. After switching the domain to WooCommerce, these old URLs will return 404 errors unless you redirect them, and you'll lose your accumulated search rankings and visits.
Create a map of each old URL and its new equivalent: each Shopify product URL should point to the product URL in WooCommerce, and each collection URL should point to the equivalent category or page.
Create 301 redirects with a redirect plugin such as Redirection or with your hosting provider's redirect tools.
Test several old URLs in your browser and confirm that they lead to the correct page.
Redirects set up within Shopify (Content > Menus > View URL Redirects) belong to the Shopify site and aren't transferred. After the DNS change, redirects must be set up on the site or server handling the domain. Also, Shopify doesn't allow redirects for the fixed paths /products, /collections, and /collections/all, so you need to map URLs individually.
Point your domain and activate SSL
The last technical step before launch is to move your domain from Shopify to your WooCommerce hosting.
In cPanel, open Zone Editor and update the domain's A/AAAA or CNAME records to point to your Duplika account. Changes usually take up to 2 hours, although they can take up to 2 days to propagate.
If your email is still hosted with Duplika, don't change the MX, SPF, DKIM, or DMARC records: only change the records for the website. Check that email works before and after the change.
Verify that the SSL certificate is active on the new site (at Duplika, it's installed and renewed automatically for domains pointing to our DNS servers) and that the site loads over HTTPS.
If you bought the domain from a third party, you’ll continue to manage and renew it there. If you bought it through Shopify and want to keep it, you’ll need to transfer it to an external registrar: canceling your store doesn't cancel domain renewals. When you deactivate Shopify, custom domains are disconnected, and Shopify maintains its HSTS policy for 90 days. If your new hosting uses HTTPS, you don't need to take any additional steps for this reason.
Test your store before switching
Before pointing the domain permanently (or as soon as you do), verify that the entire store works:
Compare the numbers of products, variants, customers, and orders against your export CSVs.
Place a complete test order: catalog, cart, checkout, payment method, and confirmation email.
Test logging in to a customer account and resetting the password.
Review the payment, invoicing, and integration plugins you use, and configure any that are missing.
Cancel your Shopify plan
Only cancel Shopify once your WooCommerce store has been tested and your domain points to the new hosting:
In the Shopify admin, go to Settings > Plan > Cancel plan.
Confirm the cancellation: it takes effect at the end of the current billing cycle.
Apps are automatically uninstalled when you deactivate the store, and you may have outstanding charges for apps, domains, or other external services. Download your backup CSVs before canceling, because afterward you won't be able to export them from the admin.
With your store migrated, continue with adding and editing products in WooCommerce and, if you have a large catalog, optimizing WooCommerce speed.