Every month, thousands of store owners search for how to migrate from Shopify to WooCommerce. The reasons vary, but the pattern is consistent: merchants outgrow Shopify’s walled garden and want full control over their store, their data, and their margins.
Shopify to WooCommerce migration does not have to mean downtime, lost customers, or vanishing search rankings. With the right process, tools, and redirect strategy, you can move your entire store, including products, customers, orders, and SEO equity, to WooCommerce without missing a single sale.
This guide walks through every step, from the honest comparison of both platforms to the final post-migration checklist. Whether you run a 50-product boutique or a 10,000-SKU catalog, the methodology is the same.
Why store owners switch from Shopify to WooCommerce
Before diving into the technical migration process, it helps to understand the fundamental differences between these two platforms and why the switch makes sense for many growing businesses.
Ownership and control
Shopify is a hosted SaaS platform. You rent space on Shopify’s infrastructure, and Shopify controls the underlying code, server environment, and data storage. If Shopify decides to change its terms, raise prices, or discontinue a feature, you have limited recourse.
WooCommerce is open-source software that runs on WordPress. You own the code, the database, the server, and every piece of content. You can host it anywhere, modify anything, and export your data at any time. This distinction matters most when your business depends entirely on your online store.
Transaction fees and cost structure
Shopify charges transaction fees on every sale unless you use Shopify Payments as your exclusive payment processor. These fees range from 0.5% to 2% depending on your plan, and they come on top of the payment processor’s own fees. For a store processing significant monthly revenue, these additional fees add up to a substantial annual cost.
WooCommerce charges zero platform transaction fees. You only pay your payment processor’s standard rate (Stripe, PayPal, or whichever gateway you choose). Your ongoing costs are hosting, domain, SSL, and any premium plugins or themes you select. Pricing for hosting and plugins varies depending on your requirements, but the total cost of ownership is typically lower for established stores.
Customization and flexibility
Shopify’s Liquid templating language and app ecosystem allow meaningful customization, but you work within Shopify’s boundaries. Certain checkout modifications require Shopify Plus. Deep backend changes are simply not possible.
WooCommerce, built on PHP and WordPress, offers virtually unlimited customization. You can modify checkout flows, build custom shipping calculators, create unique product types, integrate with any third-party API, and extend functionality with any of the 60,000+ WordPress plugins available. The trade-off is that this flexibility requires more technical knowledge or a capable development partner.
Scalability
Both platforms scale to high-traffic stores, but they scale differently. Shopify handles infrastructure scaling automatically within its platform constraints. WooCommerce scales through hosting architecture decisions: dedicated servers, load balancers, Redis caching, CDN configuration, and database optimization. A well-architected WooCommerce store handles millions of monthly visitors and thousands of daily orders without breaking a sweat.
Data portability and vendor independence
With Shopify, exporting your complete store data (especially customer passwords, app-specific data, and certain order metadata) has limitations. Some data lives within Shopify’s ecosystem and third-party apps, making a clean export difficult.
WooCommerce stores everything in a MySQL database you fully control. Every product, customer, order, review, and metadata field is accessible via direct database queries, REST API, or WP-CLI. You are never locked in.
Planning your migration: the pre-migration checklist
A successful migration starts weeks before any data moves. Rushing this phase is the single biggest cause of migration failures.
Step 1: Audit your Shopify store
Start by documenting everything in your current store:
- Product count and complexity - Simple products, variable products with multiple attributes, digital downloads, subscriptions, bundles
- Customer accounts - Total active customers, those with saved addresses and order history
- Order history - How far back you need to preserve orders (for warranty claims, returns, analytics)
- Content pages - About, contact, FAQ, policy pages, blog posts
- Custom functionality - Shopify apps and integrations that need WooCommerce equivalents
- URL structure - Shopify uses
/products/,/collections/,/pages/prefixes that differ from WooCommerce defaults
Step 2: Crawl and map every URL
This step is non-negotiable for SEO preservation. Use Screaming Frog, Sitebulb, or a similar crawler to export every indexed URL from your Shopify store:
Shopify URL pattern → WooCommerce equivalent
/products/blue-widget → /product/blue-widget/
/collections/summer-sale → /product-category/summer-sale/
/pages/about-us → /about-us/
/blogs/news/my-article → /blog/my-article/
Export this mapping to a spreadsheet. Every single URL that has organic traffic, backlinks, or internal links must have a corresponding redirect rule. Missing even one high-traffic URL means lost rankings and 404 errors for your visitors.
Step 3: Choose your WooCommerce hosting
Your hosting choice directly impacts store performance and the migration process. For WooCommerce, prioritize:
- PHP 8.2+ with OPcache enabled
- MySQL 8.0 or MariaDB 10.6+
- Redis or Memcached for object caching
- Server-level caching (Nginx FastCGI or Varnish)
- Staging environment for testing before going live
- Automatic daily backups with point-in-time recovery
- SSH access for WP-CLI operations
Managed WordPress hosts like Cloudways, Kinsta, and GridPane provide most of these features out of the box. The right hosting choice depends on your traffic volume, budget, and technical requirements.
Step 4: Install WordPress and WooCommerce on staging
Set up your new store on a staging domain or subdomain first. Never migrate directly to production.
# Install WordPress via WP-CLI
wp core download
wp config create --dbname=store_db --dbuser=store_user --dbpass=secure_password
wp core install --url=staging.example.com --title="My Store" --admin_user=admin --admin_email=admin@example.com
# Install and activate WooCommerce
wp plugin install woocommerce --activate
# Install essential plugins
wp plugin install wordpress-seo --activate
wp plugin install redirection --activate
wp plugin install redis-cache --activate
Configure WooCommerce settings to match your current Shopify setup:
- Payment gateways (Stripe, PayPal, etc.)
- Shipping zones and methods
- Tax configuration
- Email notifications
- Permalink structure (set to
/%postname%/for clean URLs)
Exporting data from Shopify
Shopify provides built-in CSV export functionality for products, customers, and orders. Access these from your Shopify admin panel.
Product export
Navigate to Products > All Products in Shopify admin, select all products, and click Export. Choose “All products” and “CSV for Excel, Numbers, or other spreadsheet programs.” This CSV contains:
- Product title, description, vendor, tags
- Variant information (SKU, price, weight, inventory)
- Image URLs
- SEO title and meta description
- Product status (active, draft, archived)
For stores with more than 10,000 products or complex variant structures, the Shopify Admin API provides more reliable exports with complete metadata.
Customer export
Export customers from Customers > Export in Shopify admin. The export includes names, emails, addresses, phone numbers, order counts, and total spend. Note that customer passwords cannot be exported due to one-way hashing, so all customers will need to set new passwords on WooCommerce.
Order export
Shopify’s native order export works for smaller stores. For large order histories, use the Shopify API or a dedicated export app. The order data includes order numbers, line items, shipping information, payment status, and fulfillment details.
Importing data into WooCommerce
This is where the migration gets technical. You have three main approaches, each suited to different scenarios.
Option 1: Automated migration tools
Cart2Cart and LitExtension are the two leading automated migration services. They connect directly to both platforms and transfer:
- Products with all variants, images, and metadata
- Categories and tags with hierarchy preserved
- Customers with addresses and order history
- Orders with line items and status
- Blog posts and CMS pages
- Coupons and discount rules
Both tools offer a free demo migration of a limited number of entities so you can verify the results before committing. Pricing varies based on the number of entities being migrated.
Automated tools are the best choice when you have complex variant structures, large order histories, or limited technical expertise. They handle the data transformation between Shopify’s data model and WooCommerce’s database schema automatically.
Option 2: WooCommerce built-in CSV importer
WooCommerce includes a product CSV importer at WooCommerce > Products > Import. This works well for straightforward product catalogs but requires your CSV columns to match WooCommerce’s expected format.
Shopify’s CSV format differs from WooCommerce’s, so you will need to transform the data. Key column mapping differences:
| Shopify CSV column | WooCommerce CSV column |
|---|---|
| Title | Name |
| Body (HTML) | Description |
| Vendor | Attribute (or meta) |
| Type | Categories |
| Tags | Tags |
| Variant Price | Regular price |
| Variant Compare At Price | Sale price |
| Variant SKU | SKU |
| Variant Inventory Qty | Stock |
| Image Src | Images |
Option 3: WP-CLI batch import
For developers and large catalogs, WP-CLI provides the most control over the import process. Here is a practical workflow for importing products from a prepared CSV.
First, prepare your CSV in WooCommerce format (after transforming from Shopify’s export):
# Import products from CSV using WP-CLI and WooCommerce
wp wc product create --name="Blue Widget" --type=simple \
--regular_price="29.99" --sku="BW-001" \
--description="Premium blue widget with reinforced edges." \
--short_description="Durable blue widget." \
--categories='[{"id":15}]' \
--images='[{"src":"https://example.com/images/blue-widget.jpg"}]' \
--manage_stock=true --stock_quantity=150 \
--user=admin
For bulk operations, script the import with a loop that reads from your transformed CSV:
#!/bin/bash
# bulk-import-products.sh
# Reads a CSV and creates WooCommerce products via WP-CLI
INPUT_FILE="products-woo-format.csv"
SITE_PATH="/var/www/html"
# Skip header line
tail -n +2 "$INPUT_FILE" | while IFS=',' read -r name sku price stock description category_id image_url; do
wp wc product create \
--name="$name" \
--type=simple \
--regular_price="$price" \
--sku="$sku" \
--description="$description" \
--manage_stock=true \
--stock_quantity="$stock" \
--categories="[{\"id\":$category_id}]" \
--images="[{\"src\":\"$image_url\"}]" \
--user=admin \
--path="$SITE_PATH"
echo "Imported: $name (SKU: $sku)"
done
echo "Import complete."
For variable products with multiple attributes and variations:
# Create a variable product
PRODUCT_ID=$(wp wc product create \
--name="Widget Pro" \
--type=variable \
--description="Available in multiple sizes and colors." \
--sku="WP-PRO" \
--categories='[{"id":15}]' \
--attributes='[{"name":"Size","options":["Small","Medium","Large"],"visible":true,"variation":true},{"name":"Color","options":["Red","Blue","Green"],"visible":true,"variation":true}]' \
--user=admin \
--porcelain)
# Create variations for the variable product
wp wc product_variation create "$PRODUCT_ID" \
--regular_price="24.99" \
--sku="WP-PRO-SM-RED" \
--attributes='[{"name":"Size","option":"Small"},{"name":"Color","option":"Red"}]' \
--manage_stock=true \
--stock_quantity=50 \
--user=admin
wp wc product_variation create "$PRODUCT_ID" \
--regular_price="29.99" \
--sku="WP-PRO-MD-BLUE" \
--attributes='[{"name":"Size","option":"Medium"},{"name":"Color","option":"Blue"}]' \
--manage_stock=true \
--stock_quantity=75 \
--user=admin
To import product images in bulk and attach them to existing products:
# Download and attach images to products
wp wc product update 123 \
--images='[{"src":"https://cdn.example.com/product-image-1.jpg"},{"src":"https://cdn.example.com/product-image-2.jpg"}]' \
--user=admin
Verify the import results:
# Count imported products
wp wc product list --format=count --user=admin
# Check for products missing images
wp db query "SELECT p.ID, p.post_title FROM wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id AND pm.meta_key = '_thumbnail_id'
WHERE p.post_type = 'product' AND pm.meta_value IS NULL"
# Verify stock levels
wp wc product list --fields=id,name,sku,stock_quantity --format=table --user=admin
Importing customers and orders
Customer and order imports are more complex than products due to relational data (orders reference customers and products). For these, automated tools like Cart2Cart or LitExtension are strongly recommended. If you prefer a programmatic approach, the WooCommerce REST API or a custom PHP import script using wc_create_order() provides full control.
# Create a customer via WP-CLI
wp wc customer create \
--email="customer@example.com" \
--first_name="Jan" \
--last_name="Kowalski" \
--billing='{"first_name":"Jan","last_name":"Kowalski","address_1":"ul. Dluga 12","city":"Gdansk","postcode":"80-001","country":"PL"}' \
--user=admin
Preserving SEO during migration
SEO preservation is the highest-stakes aspect of any platform migration. A botched redirect strategy can wipe out years of organic traffic in days.
URL structure differences
Shopify and WooCommerce use different default URL patterns. You must account for every variation:
Shopify → WooCommerce
/products/product-name → /product/product-name/
/collections/category-name → /product-category/category-name/
/collections/all → /shop/
/pages/page-name → /page-name/
/blogs/news → /blog/
/blogs/news/article-name → /blog/article-name/
/cart → /cart/
/checkout → /checkout/
/account → /my-account/
Implementing 301 redirects
301 redirects are permanent redirect signals that pass approximately 95-99% of link equity to the new URL. You have several implementation options.
Option A: Server-level redirects (recommended for performance)
For Nginx:
# /etc/nginx/conf.d/shopify-redirects.conf
# Product redirects
rewrite ^/products/(.*)$ /product/$1/ permanent;
# Collection redirects
rewrite ^/collections/(.*)$ /product-category/$1/ permanent;
# Page redirects
rewrite ^/pages/(.*)$ /$1/ permanent;
# Blog redirects
rewrite ^/blogs/news/(.*)$ /blog/$1/ permanent;
rewrite ^/blogs/news/?$ /blog/ permanent;
# Account redirect
rewrite ^/account/?$ /my-account/ permanent;
For Apache (.htaccess):
RewriteEngine On
# Product redirects
RewriteRule ^products/(.*)$ /product/$1/ [R=301,L]
# Collection redirects
RewriteRule ^collections/(.*)$ /product-category/$1/ [R=301,L]
# Page redirects
RewriteRule ^pages/(.*)$ /$1/ [R=301,L]
# Blog redirects
RewriteRule ^blogs/news/(.*)$ /blog/$1/ [R=301,L]
RewriteRule ^blogs/news/?$ /blog/ [R=301,L]
Option B: WordPress redirect plugin
The Redirection plugin for WordPress provides a GUI for managing redirects and logs 404 errors so you can catch any missed URLs. This is easier to maintain but slightly slower than server-level redirects because each redirect goes through PHP.
Option C: Individual product-level redirects
Some products may have different slugs between platforms (due to Shopify’s naming conventions or manual slug changes). For these, create individual redirect rules:
# Use WP-CLI to check for URL mismatches
# Compare your Shopify URL export against WooCommerce product slugs
wp post list --post_type=product --fields=ID,post_name --format=csv > woo-products.csv
Cross-reference this with your Shopify URL map and create specific redirects for any mismatches.
Submitting the new sitemap
After migration and redirect implementation:
- Generate a fresh XML sitemap using Yoast SEO or Rank Math
- Submit the new sitemap in Google Search Console
- Remove or update the old sitemap reference
- Use Google Search Console’s URL Inspection tool to verify key pages are indexed correctly
- Monitor the Coverage report for any new crawl errors
Preserving meta data
Ensure that every migrated page retains its SEO title and meta description. If you used custom SEO titles in Shopify, map these to the corresponding Yoast SEO or Rank Math fields in WooCommerce:
# Set Yoast SEO title for a product
wp post meta update 123 _yoast_wpseo_title "Custom SEO Title - Store Name"
wp post meta update 123 _yoast_wpseo_metadesc "Custom meta description for this product."
# Bulk update SEO meta from CSV
while IFS=',' read -r product_id seo_title seo_desc; do
wp post meta update "$product_id" _yoast_wpseo_title "$seo_title"
wp post meta update "$product_id" _yoast_wpseo_metadesc "$seo_desc"
done < seo-metadata.csv
Canonical tags and duplicate content
WooCommerce and Yoast SEO handle canonical tags automatically, but verify that:
- Product pages point to themselves (not to Shopify URLs)
- Category pages have proper canonicals
- Paginated pages use
rel="next"andrel="prev"correctly - No duplicate content exists between
/product/and/shop/pages
Post-migration checklist
Use this checklist after migration but before pointing your production domain to the new WooCommerce store.
Functionality verification
- All products display with correct titles, descriptions, prices, and images
- Variable products show all options and allow selection
- Product search returns accurate results
- Category and tag archive pages work correctly
- Cart functionality works (add, remove, update quantities)
- Checkout process completes successfully with test transactions
- Payment gateways process payments and issue confirmations
- Shipping calculations return correct rates for all zones
- Tax calculations apply correctly by region
- Customer registration and login work
- Order confirmation emails send correctly
- Coupon codes apply discounts properly
SEO verification
- 301 redirects resolve correctly for all mapped URLs (test with curl -I)
- No redirect chains or loops exist
- XML sitemap generates and includes all product and category URLs
- Robots.txt allows crawling of product and category pages
- SEO titles and meta descriptions are present on all key pages
- Canonical tags point to the correct URLs
- Structured data (Product schema) renders correctly
- Google Search Console shows no new critical errors
- Open Graph and Twitter Card meta tags are present
Performance verification
- Homepage loads in under 3 seconds
- Product pages achieve LCP under 2.5 seconds
- Core Web Vitals pass in PageSpeed Insights
- Images use WebP or AVIF format with lazy loading
- Caching is configured (page cache, object cache, browser cache)
- CDN is active for static assets
Data integrity
- Product count matches between Shopify and WooCommerce
- Customer count matches (verify with
wp user list --role=customer --format=count) - Order history is accessible and accurate
- Inventory levels are correct
- Product reviews transferred (if applicable)
Going live: the cutover process
When staging testing is complete and every checklist item passes, schedule the cutover during your lowest-traffic period.
- Put Shopify in maintenance mode to prevent new orders during migration
- Run a final data sync to capture any orders or customers created since the initial migration
- Update DNS to point your domain to the new WooCommerce hosting
- Verify SSL certificate is active and HTTPS works for all pages
- Test the live site immediately after DNS propagation (check redirects, checkout, payment processing)
- Submit the updated sitemap in Google Search Console
- Monitor Google Search Console daily for the first two weeks, watching for crawl errors, indexing drops, or redirect issues
- Keep Shopify active for at least 30 days after migration so you can reference historical data and handle any edge cases
DNS propagation typically takes 1-48 hours. During this window, some visitors may reach the old Shopify store while others reach the new WooCommerce store. This is normal and resolves itself as DNS caches expire worldwide.
Common migration pitfalls and how to avoid them
Forgetting pagination URLs. Shopify paginates collections with ?page=2, while WooCommerce uses /page/2/. If your paginated collection pages had backlinks or traffic, redirect them specifically.
Ignoring image URLs. Shopify hosts product images on its CDN (cdn.shopify.com). After migration, update all internal references to point to images on your new hosting. Broken image links hurt both user experience and SEO.
Skipping customer password reset. Communicate proactively with your customers. Send an email before migration explaining the move, and trigger password reset emails immediately after going live.
Not testing mobile. Mobile accounts for over 60% of e-commerce traffic. Test the entire checkout flow on multiple mobile devices, not just desktop.
Removing Shopify too early. Keep your Shopify subscription active for at least 30 days post-migration. This gives you a safety net for data verification and handling any missed redirects.
WooCommerce vs Shopify: the honest verdict
Neither platform is universally better. The right choice depends on your business stage, technical resources, and priorities.
Choose Shopify if you want zero server management, are just starting out, and value simplicity above all else. Shopify handles hosting, security, and updates automatically.
Choose WooCommerce if you want full ownership and control, need deep customization, want to avoid ongoing transaction fees, plan to scale significantly, or need integrations that Shopify’s ecosystem does not support. WooCommerce requires more technical involvement, either in-house or through a development partner, but rewards that investment with flexibility and independence.
For established businesses migrating from Shopify to WooCommerce, the transition represents a shift from renting your store to owning it. The upfront effort of migration pays dividends through lower fees, greater control, and unlimited growth potential.
How wppoland.com helps with Shopify to WooCommerce migration
At wppoland.com, we have migrated dozens of e-commerce stores from Shopify to WooCommerce, ranging from small boutiques to large multi-language catalogs with tens of thousands of products.
Our migration process includes:
- Complete store audit and migration planning
- Full product, customer, and order data transfer
- SEO-preserving redirect strategy with URL mapping verification
- WooCommerce configuration, theme setup, and performance optimization
- Post-migration monitoring and support
Every migration is different, and pricing is individual based on store size, complexity, and specific requirements. If you are considering moving from Shopify to WooCommerce and want a migration partner who understands both the technical and SEO implications, reach out to our team at wppoland.com for a consultation.
