Shopify to WooCommerce migration has become one of the more common moves in e-commerce in 2026. Store owners who built on Shopify for convenience are increasingly finding that the platform’s monthly fees, transaction charges, and limitations on customisation are cutting into margins and restricting growth. WooCommerce, built on WordPress, offers full ownership of your store, no transaction fees, and a plugin ecosystem that covers almost any functionality you need.
This guide covers everything involved in a complete shopify to woocommerce migration: what data moves, how the migration tool works, and how to work through each step correctly.
What You Are Moving
A complete migration covers six categories of data:
- Products: titles, descriptions, images, variants, SKUs, pricing, inventory, product type, and vendor
- Customers: names, email addresses, phone numbers, and full billing and shipping address data
- Orders: complete order history with financial status and fulfilment status filters
- Coupons: discount codes with start and end date filtering
- Pages: CMS page titles and content
- Blogs: post titles, content, tags, and featured images
Each of these needs to arrive in WooCommerce intact and correctly structured. A partial migration, where products come through but order history does not, creates operational problems that take significant time to resolve manually.
How the Migration Plugin Works
The plugin connects to your Shopify store through Shopify’s API using credentials from a custom app you create in your Shopify admin. This direct API connection is the key difference between this approach and a CSV-based migration.
With CSV exports, data has to be reformatted to match WooCommerce’s import structure. Shopify and WooCommerce use different field names, data structures, and relationship models. That reformatting is time-consuming and error-prone, particularly for orders and customer records that have relational dependencies.
The API connection bypasses this entirely. Data moves directly from Shopify to WooCommerce in its original structure, and the plugin handles the translation between platforms. The result is a cleaner, more complete import with fewer opportunities for data loss.
Before You Start: Prerequisites
- A live WooCommerce store set up on WordPress (products do not need to be added yet)
- Admin access to your Shopify store
- Adequate server resources on your hosting environment. The plugin processes a significant volume of data and requires sufficient CPU and memory to handle the workload without timing out
Step 1: Create a Shopify Custom App and Get API Credentials
The plugin requires API credentials from a Shopify custom app. The process differs slightly depending on when the app was created:
- Apps in Dev Dashboard (after 1st January 2026): Create the app through the Shopify Dev Dashboard. Generate the API key and API secret key from the app settings.
- Legacy Custom Apps: Create the app through the legacy custom app section in Shopify admin and retrieve the credentials from there.
Save your store URL, API key, and API secret key before moving to the next step.
Step 2: Install and Configure the Plugin
- Purchase the plugin from the WooCommerce Marketplace
- Download the .zip file and install it through WordPress Admin > Plugins > Add New > Upload Plugin
- After activation, go to WooCommerce > Settings > Shopify to WooCommerce
- In the API Settings tab, enter your Shopify store URL, API key, and API secret key
- Add an email address for import completion notifications
- Click the connection status check to confirm the API connection is working
Step 3: Configure What to Import
The Import Settings tab has six sub-tabs, one for each data type. Configure each one before running the import:
Products
- Import all products or use filters: product title, type, vendor, product ID range, or publishing date
- Set the import status: Active, Archived, or Draft
Orders
- Filter by date range (created before or after a specific date)
- Filter by financial status: paid, pending, authorised, refunded, or voided
- Filter by fulfilment status: shipped, unshipped, partial, or unfulfilled
- Option to skip importing customer address data with orders
Customers
- Imports names, phone numbers, and full address data including city, province, postcode, and country
Coupons
- Import all coupons or filter by start or end date
- Option to import coupons as new records in WooCommerce
Pages and Blogs
- Pages import with title and full content
- Blog posts import with title, content, tags, and featured image
Step 4: Run the Import and Monitor Progress
Go to the Run Import tab and start the migration. A live progress bar tracks the import as it runs. You will also receive an email notification at the address you configured when the import is complete.
After it finishes, check the Import Status tab for a summary of what was imported.
Step 5: Verify Your Data
Before switching your domain to point to the new WooCommerce store, verify the migration:
- Spot-check products for correct titles, images, prices, and variant data
- Confirm order history is complete and linked to the correct customer records
- Test coupon codes to confirm they are active in WooCommerce
- Review a selection of pages and blog posts for content accuracy
- Check customer records for complete address data
Common Issues to Watch For
- Timeouts during large imports: If your server does not have adequate resources, large product or order imports may time out. Increase PHP execution time limits or migrate in batches using the filter options.
- Missing variant images: Check product variants individually after import to confirm all images came through correctly.
- Coupon date mismatches: Verify that coupon start and end dates transferred correctly, particularly if your Shopify store used timezone-specific date settings.
Final Thoughts
A complete Shopify to WooCommerce migration covers more data than most store owners initially expect. Working through each data type systematically, using the API-based import rather than CSV files, and verifying the results before going live gives you the best chance of a clean transfer. The plugin-based approach handles the platform translation automatically, which is where manual migration methods consistently fall short.