Step-by-step Shopify to WooCommerce migration: export products, customers, orders, preserve SEO with 301 redirects, and automate imports with WP-CLI. Free checklist included.
EN

Shopify to WooCommerce migration: the complete step-by-step guide

5.00 /5 - (14 votes )
Last verified: May 1, 2026
17min read
Guide
500+ WP projects
WooCommerce expert

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 columnWooCommerce CSV column
TitleName
Body (HTML)Description
VendorAttribute (or meta)
TypeCategories
TagsTags
Variant PriceRegular price
Variant Compare At PriceSale price
Variant SKUSKU
Variant Inventory QtyStock
Image SrcImages

#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:

  1. Generate a fresh XML sitemap using Yoast SEO or Rank Math
  2. Submit the new sitemap in Google Search Console
  3. Remove or update the old sitemap reference
  4. Use Google Search Console’s URL Inspection tool to verify key pages are indexed correctly
  5. 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" and rel="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.

  1. Put Shopify in maintenance mode to prevent new orders during migration
  2. Run a final data sync to capture any orders or customers created since the initial migration
  3. Update DNS to point your domain to the new WooCommerce hosting
  4. Verify SSL certificate is active and HTTPS works for all pages
  5. Test the live site immediately after DNS propagation (check redirects, checkout, payment processing)
  6. Submit the updated sitemap in Google Search Console
  7. Monitor Google Search Console daily for the first two weeks, watching for crawl errors, indexing drops, or redirect issues
  8. 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.

Next step

Turn the article into an actual implementation

This block strengthens internal linking and gives readers the most relevant next move instead of leaving them at a dead end.

Want this implemented on your site?

If visibility in Google and AI systems matters, I can build the content architecture, FAQ, schema, and internal linking needed for SEO, GEO, and AEO.

Related cluster

Explore other WordPress services and knowledge base

Strengthen your business with professional technical support in key areas of the WordPress ecosystem.

Will I lose my SEO rankings when migrating from Shopify to WooCommerce?
Not if you handle the migration correctly. The key is creating a complete URL map of every Shopify page and implementing 301 redirects to the corresponding WooCommerce URLs. This tells search engines that the content has permanently moved. With proper redirect mapping, canonical tags, and sitemap submission, most stores retain 95-100% of their organic traffic within 4-8 weeks.
How long does a Shopify to WooCommerce migration take?
A typical migration takes 1-4 weeks depending on store size and complexity. Small stores with under 500 products can be migrated in a few days. Larger stores with thousands of products, complex variants, customer accounts, and order history require more planning and testing. The migration itself (data transfer) usually takes hours, but pre-migration planning and post-migration testing account for most of the timeline.
Can I migrate my Shopify customer accounts and order history to WooCommerce?
Yes, both customer data and order history can be migrated. Tools like Cart2Cart and LitExtension support full customer account migration including names, emails, addresses, and order history. Note that customer passwords cannot be transferred due to encryption, so customers will need to reset their passwords on the new WooCommerce store.
Why choose WooCommerce over Shopify?
WooCommerce offers full ownership of your store data and code, zero platform transaction fees, unlimited customization through open-source PHP, access to thousands of free and premium plugins, hosting flexibility to optimize costs and performance, and no vendor lock-in. Shopify is simpler to start with, but WooCommerce provides more control and lower long-term costs for growing businesses.
What tools are available for Shopify to WooCommerce migration?
The most popular migration tools are Cart2Cart (automated migration with mapping interface), LitExtension (supports complex data structures and custom fields), and WP-CLI with WooCommerce CSV import for developers who prefer command-line control. Each tool has strengths depending on store complexity and technical expertise.

Need an FAQ tailored to your industry and market? We can build one aligned with your business goals.

Let’s discuss

Related Articles

Six to sixteen weeks for typical engagements, with a four-phase shape: discovery, scoping, build and cutover, tuning. The variables are catalogue size, integration count, URL preservation, and editorial team readiness, not framework choice.
wordpress

How long does a headless WordPress migration take in 2026?

Six to sixteen weeks for typical engagements, with a four-phase shape: discovery, scoping, build and cutover, tuning. The variables are catalogue size, integration count, URL preservation, and editorial team readiness, not framework choice.

Headless WooCommerce shifts cost and complexity. It pays back when mobile Core Web Vitals are tied to revenue, when the catalogue stabilises, and when a senior front-end engineer is in the loop. It does not pay back for tiny shops or for sites where the bottleneck is not the front.
wordpress

Headless WordPress for WooCommerce: when it pays back, and what to skip

Headless WooCommerce shifts cost and complexity. It pays back when mobile Core Web Vitals are tied to revenue, when the catalogue stabilises, and when a senior front-end engineer is in the loop. It does not pay back for tiny shops or for sites where the bottleneck is not the front.

Master every aspect of WooCommerce performance optimization - from database tuning and Redis caching to cart fragment fixes and headless architecture. Practical steps with measurable results.
wordpress

WooCommerce Performance Optimization: The Complete Guide 2026

Master every aspect of WooCommerce performance optimization - from database tuning and Redis caching to cart fragment fixes and headless architecture. Practical steps with measurable results.