🇫🇷 Marseille Cloud VPS is live. One more place to put your sites. 70% off your first month with code GOMARSEILLE70 Get Yours →

Migrating From Shopify to WooCommerce: The Hosting-Side Playbook

Category : Wordpress
By :SVWebTeam
Oct 20, 2026

Migrating from Shopify to WooCommerce requires more than transferring products. You must preserve customer-order relationships, prevent inventory gaps, rebuild storefront functionality, map old URLs, test checkout, and prepare a rollback route before changing DNS.

This nine-step playbook covers hosting preparation, data transfer, validation, final synchronization, redirects, DNS cutover, and post-launch monitoring. Use it with this broader website migration checklist to protect traffic, search visibility, and revenue throughout the move.

This is a preparation and validation guide based on official documentation, not a report of a SiteValley test migration. The diagrams explain the checks; use your own store’s recorded results for launch approval.

🚀

We Welcome WordPress

DNS Anycast Ready
One-click CMS deployment Unmetered NVMe web space Free SSL + daily backups Imunify360 protection
$59.40/year
Get Started →

Step 1: Plan your Shopify to WooCommerce migration route

Choose the transfer method before installing migration software. Price is secondary to what your store contains: an inexpensive CSV import can handle products but create expensive cleanup if subscriptions, metafields, customer relationships, or app-managed data disappear.

Product count alone does not determine difficulty. A large catalog using standard fields can be simpler to migrate than a small store whose subscriptions and custom fields depend on several apps.

API-based migration tool

An API-based migration tool can be a practical self-service route when it explicitly supports your products, variants, customers, orders and other required records. Verify its current entity list, field mapping and update behavior: using an API does not by itself preserve relationships or prevent duplicates.

CSV migration

CSV can work for a simple catalog when you only need selected entities. WooCommerce’s built-in product CSV importer handles products, not a complete store: customer and order imports require an appropriate separate tool. Transform Shopify columns to the supported WooCommerce schema, test variations and image URLs, and do not assume separate CSV files preserve record relationships.

Expert-assisted migration

Use expert-assisted migration for subscriptions, metafields, unusual apps, complex variant relationships, or extensive order history. Expert help is appropriate when compatibility must be assessed before transfer or when unsupported records require controlled recreation.

Custom API transfer

Plan a custom API transfer for bespoke data structures or integrations that must preserve exact relationships. The transfer should follow a written mapping specification and include representative tests before the full dataset is moved.

When a self-service migration is appropriate

Self-service makes sense when the store uses records supported by the selected tool and you can check field mappings, relationships and totals. Subscriptions, custom checkout logic or app-owned data may still require a specialist even when the catalog is small.

Before touching production data, create a cutover checklist covering four decisions: the launch window, how long the Shopify account remains available, whether ordering pauses during cutover or new records receive a final delta migration, and who can authorize rollback. A delta migration is a second pass containing records created or changed after the full import began.

Define success in writing: expected records are imported, checkout passes a test purchase, important URLs remain valid or redirect to an equivalent page, transactional email sends correctly, and the rollback procedure has been tested rather than merely documented.

Step 2: Prepare a protected WooCommerce staging environment

Shopify remains the source of truth while WooCommerce staging uses HTTPS, restricted access, captured email, contained integrations, and a restorable backup.

Build the destination before importing a single record, but keep it separate from the live domain. Use a temporary hostname or staging subdomain such as staging.example.com; do not point example.com away from Shopify yet. This gives you somewhere to test, restore, and repeat the migration without interrupting sales.

In cPanel, use Domains to create or confirm the staging hostname. Check SSL/TLS Status (sometimes a tab within SSL/TLS Certificates) and verify HTTPS without certificate warnings. Protect staging with HTTP authentication, such as Directory Privacy, or your host’s staging access controls. Also enable WordPress Settings → Reading → Discourage search engines from indexing this site. That setting is a crawler request, not access control. Labels and available tools depend on the host’s cPanel configuration.

Prevent staging from sending customer-facing order, account, or password-reset messages. The exact method depends on the mail setup, so confirm outgoing mail is blocked, redirected, or safely captured before importing customer records.

Before the first import:

  • Take a restorable destination backup covering files and database. The cPanel Backup Wizard can create a full account backup, but restoring that full archive requires WHM or hosting-provider assistance; cPanel itself restores partial backups. Confirm the exact recovery route and test it before relying on it.
  • Check disk usage and leave room for the database, original product images, WordPress-generated image sizes, import logs, temporary files, and at least one backup copy.
  • Confirm staging resolves over HTTPS and cannot be browsed anonymously.
  • Confirm indexing is discouraged and customer-facing email cannot escape staging.
  • For large catalogs, ask the host to review PHP memory, request-duration limits, database capacity, and background-job limits against the importer’s requirements. There is no universal safe value because importer design and catalog complexity vary.

Check whether shared hosting or a VPS fits the migration

Shared hosting can handle a modest, conventional catalog when the importer completes within the account’s managed resource limits. Moving to a VPS solely because the store uses WooCommerce is unnecessary. This guide to eCommerce hosting requirements explains the performance, security, scalability, and infrastructure factors to assess.

For stores that fit a shared environment, SiteValley’s Small Business plan currently lists $8.95 per month or $95.99 per year, cPanel, free SSL, a dedicated IP, unmetered web space and traffic, and daily backups with 60 recovery points. The 100,000 monthly visits figure is an estimate under typical conditions, not a guaranteed allowance. Confirm PHP, database, process and importer limits before scheduling a large migration.

A VPS can help when an import requires adjustable server settings, dedicated memory or long-running background jobs. SiteValley’s KVM4 Cloud VPS currently lists $39.99 per month, four CPU cores, 8 GB promotional DDR5 RAM, 80 GB NVMe storage and a 1 Gbps port. The page qualifies transfer as 5 TB before a 100 Mbit/s speed cap. Confirm the selected location and current promotion; root access also means server administration, security updates, backups and application tuning need an assigned owner.

The practical test is whether the selected environment provides protected staging, SSL, restorable backups, enough disk headroom, and sufficient resources for both the import and the live store. Confirm these requirements against the actual catalog, traffic, extensions, and migration tool rather than choosing a plan from product count alone.

Step 3: Install WordPress and configure the WooCommerce foundation

AI-generated conceptual photograph of rackmount server hardware, illustrating the hosting foundation for a WooCommerce store.

Keep the destination deliberately simple before migration. Install WordPress using your host’s supported installer, then install WooCommerce from WordPress Admin → Plugins → Add New Plugin. Apply current stable WordPress, WooCommerce, theme, and extension updates before testing so the software baseline does not change halfway through an import.

Configure the settings that affect migrated records. Use WooCommerce → Settings → General for business location and selling currency; Settings → Products → General contains weight and dimension units. In WordPress Settings → General, check that WordPress Address and Site Address use the staging HTTPS URL. Under Settings → Permalinks, confirm the intended page and product permalink structures. Give each administrator a separate working login.

Use a lightweight temporary theme and install only extensions required by the migration tool. Every extra plugin introduces another possible conflict, scheduled task, database table, or checkout modification—variables that make import problems harder to diagnose.

Imported historical orders can trigger mail, webhooks, fulfillment, payment or subscription actions in connected extensions. Keep customer mail captured and external integrations disabled, sandboxed or routed to test endpoints before import. Review WooCommerce → Settings → Emails and the migration tool’s event behavior, but do not rely on email switches alone. Re-enable live services only after validation and launch approval.

Before the test migration, record this baseline:

  • WordPress and WooCommerce versions
  • PHP version
  • Active theme and version
  • Migration tool and version
  • HTTPS staging URL confirmed
  • Currency, units, and permalinks confirmed
  • Outbound customer email safely contained
  • Only required migration extensions active

Step 4: Inventory Shopify data, apps, URLs, and integrations

Map products to products and variations, customers to linked order history, and app-owned data to a supported destination. Passwords require activation or reset.

Before connecting a migration tool, build a source-to-target worksheet. Inventory products, variants, SKUs, collections, inventory quantities, images, customers, addresses, orders, discounts, reviews, pages, blog posts, metafields, gift cards, and multilingual content. Each item needs a destination decision rather than an assumption that the migration tool supports it.

Shopify entityWooCommerce destinationMigration methodMapping requirementValidation testOwner
Products/variantsProducts/variationsDirect/importerSKUs, attributes, stockCompare sample recordsStore admin
Customers/ordersCustomers/ordersDirect + mappingStatuses, addresses, IDsCheck totals/relationshipsStore admin
Metafields/reviewsCustom fields/review extensionExtension-dependentField/schema mappingInspect sample outputDeveloper
Gift cards/subscriptionsCompatible extensionRecreate/migrate where supportedBalances, states, renewal dataTest representative accountOperations
Pages/blog contentPages/postsImport/manual rebuildSlugs, authors, mediaCompare content and URLsContent owner

An export is not a complete portable store. WooCommerce’s migration-extension documentation confirms that Shopify APIs do not expose customer passwords, so plan secure account activation or password resets. Never copy raw payment-card details. Payment tokens, subscriptions, gift-card balances, reviews and app-owned metafields need explicit compatibility checks with the destination extension and payment provider.

Record current product, collection, page and blog URLs now, using source exports, the public sitemap and a crawl where appropriate. Shopify Admin → Content → Menus helps identify navigation links, but menus are not a complete URL inventory. Capture the underlying handles and existing redirects so the redirect worksheet uses known source URLs.

Separate data migration from storefront rebuilding

Products and orders are database records; theme layouts, navigation behavior, filters, and app logic are functionality. Shopify theme code does not become a WooCommerce theme through data migration, and an app feature does not automatically reappear because its associated records were imported.

Inventory payment, shipping, tax, fulfillment, analytics, subscription, fraud-prevention, CRM, and email integrations separately. For each integration, name the WooCommerce replacement and the person responsible for configuring and approving it. A revenue-critical app without an approved replacement is a cutover blocker, not a post-launch task.

Your completed worksheet should classify every item as a direct transfer, transfer with mapping, extension-dependent recreation, manual rebuild, or non-transferable. That classification becomes the specification for the limited migration test.

Step 5: Connect both stores and run a limited test migration

Turn the worksheet into a small, representative import before exposing the entire catalog to the migration process. Install the connector selected in Step 1 and follow its current vendor documentation, or prepare supported Shopify CSV files if that is your route. Connect Shopify as the source and the staging WooCommerce store as the target. Connector requirements and supported entities vary, so do not substitute settings from another migration plugin.

Build a sample that tests relationships and difficult records, not just quantities:

  • One simple product—confirms basic fields, SKU, price, and stock.
  • One variant product—tests attributes and parent/variation relationships.
  • A product with multiple images—exposes media download and attachment problems.
  • One discount or coupon supported by the selected tool—checks rule and field mapping.
  • Several customers and their orders—verifies that relationships survive.
  • Orders in several source states—tests status mapping instead of assuming names are equivalent.
  • One content page—checks body content, slug, and embedded media.
  • One record using a critical metafield or app-owned field—confirms whether it can be migrated or must be rebuilt.

Map source values deliberately. Confirm product types, customer groups where supported, order states, tax-related fields, currencies, and custom values against their intended WooCommerce equivalents. A test that imports 20 records but attaches an order to the wrong customer has failed even if the record count looks correct.

Run only this sample. Record start and end times, warnings, failed entities, and any HTTP timeout or API errors. If images are missing, variants become standalone products, or customer-order links disappear, stop. Fix the connection or mapping before attempting the full transfer.

Treat API access as temporary privileged access

Grant the migration app or API credential only the permissions required by its current documented migration path. Confirm the connector can reach protected staging without opening the whole store to the public. Keep credentials out of screenshots, tickets and ordinary spreadsheets; use the approved secret-management channel.

Document who created the access and schedule its removal or rotation after the final synchronization and validation. This limits how long a migration credential can read or modify store data if it is later exposed.

Step 6: Validate the sample before importing the full store

Three validation gates: compare field values, verify relationships, and test the buying journey. Fix and repeat any failed gate before the full import.

Do not approve the full import because the migration tool reports “success.” The release gate is whether WooCommerce preserved the values, relationships, and buying journey that make those records usable.

Start with source-versus-destination counts, then compare the actual fields:

  • Names, SKUs, regular prices, sale prices, stock quantities, variants, images, and categories match.
  • Customer names, email addresses, and billing and shipping addresses map correctly.
  • Order customers and line items are linked to the correct records.
  • Subtotals, taxes, discounts, shipping charges, refunds where supported, and final order totals match the source.
  • Imported order statuses correspond to the intended WooCommerce statuses.

Open representative records in WordPress Admin → Products and WooCommerce → Orders. Counts cannot reveal a variation attached to the wrong parent or an order assigned to the wrong customer.

Use a pass/fail sheet rather than informal notes:

TestShopify source valueWooCommerce resultExpected behaviorActual behaviorOwnerStatus
Variant SKURecord valueImported valueExact matchRecord resultCatalogPass/Fail
Order totalSource totalTarget totalExact monetary matchRecord resultOperationsPass/Fail
Coupon checkoutCoupon rulesTest checkoutCorrect discountRecord resultQAPass/Fail

The sheet turns each discrepancy into an owned blocker instead of something rediscovered after launch.

Next, behave like a customer. Search for an imported SKU, use catalog filters, select every variation, add it to the cart, change quantity, apply a coupon, and proceed through checkout. Confirm that taxes and shipping choices match the intended configuration, checkout completes in the gateway’s test or sandbox mode, stock falls by the purchased quantity, the order appears under the correct account, and the expected order email reaches the staging mail capture.

Sample old Shopify product, collection, page, and blog URLs from the redirect worksheet. For each one, confirm that the planned WooCommerce destination is the closest relevant equivalent. Do not approve redirects merely because a destination URL exists.

If a release-gate test fails, do not import over bad mappings. Restore the clean destination backup or remove test records using the migration tool’s documented cleanup process, correct the mapping, and rerun the same sample until every blocking test passes.

Step 7: Complete the full import and synchronize final changes

AI-generated conceptual photograph of a portable drive connected to a laptop, illustrating data transfer and preservation during a store migration.

Once the sample passes every release gate, run the full import—but treat Shopify as a changing source until the final synchronization finishes. Orders, customers, catalog records, and stock can change while the initial import is running.

Immediately before starting, take a fresh WooCommerce backup, check available disk space in cPanel → Files → Disk Usage, and record the exact start time and timezone. Capture source counts for every entity being migrated. Then let the selected tool import records in its documented sequence. Customers and products generally need to exist before orders that reference them, but the tool’s supported sequence takes precedence.

Use a control sheet so discrepancies have somewhere to be recorded:

ItemRecord
Full-import start timeDate/time + timezone
Source countsProducts, customers, orders, other entities
Destination countsCompleted counts after import
Excluded recordsArchived/filtered/unsupported records
Failed recordsCount + error/reference
Delta windowFull-import start → final synchronization
Approval statusPending/Approved + owner

A count mismatch is not automatically an import failure, but every difference needs a documented explanation.

While the import runs, watch both its progress screen and the hosting environment. Check cPanel → Metrics → Errors where available and cPanel → Files → Disk Usage for unexpected growth. Repeated retries, PHP errors, unavailable staging pages, database errors, or rapidly disappearing storage are reasons to pause and investigate rather than assume the importer will recover.

After completion, compare full source and destination counts. Reconcile differences against archived products, deleted or excluded customers, unsupported reviews or app data, test orders, and filters configured in the migration tool.

At cutover, stop catalog edits and control every order source, including other sales channels and automated integrations. Shopify Online Store password protection controls that storefront; separately check other channels rather than assuming all ordering has stopped. Run the selected tool’s supported recent-data import, then reconcile changes it cannot update, such as edited orders, refunds, stock changes or deletions. A “recent orders” import may not be a complete change log.

Final synchronization checklist:

  • Full import completed without unresolved failures
  • Source and destination totals reconciled
  • Exclusions and unsupported entities documented
  • Final delta window synchronized or manually reconciled
  • Recent orders and stock spot-checked
  • Migration approval recorded
  • Temporary migration access retained only until validation is complete

Know when to contact hosting or migration support

Do not repeatedly restart an import that consistently times out. Escalate recurring timeouts, resource-limit errors, database connection failures, storage exhaustion, or unexplained unavailable pages to the appropriate hosting or migration-tool support team.

Provide the exact timestamp and timezone, migration stage, error text, destination URL, affected entity type, and any recent configuration changes. This gives support enough context to correlate the failure with server or application logs. Never paste API tokens, passwords, or migration credentials into an ordinary support ticket.

Step 8: Rebuild redirects, integrations, email, and launch settings

DNS rollback redirects traffic but does not move transactions. Preserve and reconcile new orders, payments, and stock before restoring old data, with one authoritative store and owner.

Before changing the domain, prepare permanent 301 redirects from important Shopify product, collection, page and blog paths to their closest WooCommerce equivalents. Install and test them on the destination that will receive those old paths. Follow Google’s site-move guidance: avoid redirect chains and blanket redirects to the homepage, and keep redirects for at least a year where practical.

Reconnect revenue-critical services in test or sandbox mode first: payment gateways, shipping, taxes, fulfillment, subscriptions, fraud controls, CRM, analytics, consent management, and webhooks. Run a test order through the full chain and confirm that each connected system receives the expected event.

Test transactional email separately from ordinary mailbox delivery. Trigger an order confirmation, password reset, failed-payment notification, and administrator alert. A working you@example.com inbox does not prove that WordPress can reliably send automated mail.

Prepare DNS without disturbing business email. Lower the web record’s TTL in advance where the DNS provider permits it, document the current A, AAAA, or CNAME values for rollback, and preserve MX, SPF, DKIM, and DMARC records. Review how DNS propagation, TTLs, and caching affect when customers begin reaching the new store.

DNS rollback changes routing as cached records expire. It does not copy WooCommerce orders back into Shopify. Before reverting traffic or restoring an old database, preserve and reconcile all post-cutover orders, payments, refunds and stock changes. Decide which store is authoritative and stop concurrent ordering while reconciling; otherwise a rollback can lose sales data or cause duplicate fulfillment.

Launch approval checklist:

  • Backup and rollback web-record values documented
  • Post-cutover order reconciliation procedure documented
  • Important URLs have tested 301 mappings
  • Checkout and mobile purchase flow pass
  • Integrations and transactional emails pass
  • SSL and security controls are ready
  • Analytics and consent tracking are verified
  • MX, SPF, DKIM, and DMARC records are preserved
  • Named decision-maker has approved cutover or rollback

Prepare the destination for its public hostname before release. Follow the host’s supported staging-to-live process and WordPress migration guidance to update WordPress/Site Address and embedded staging URLs with a serialization-aware method. Back up first, avoid raw database-wide text replacement, and verify the final hostname’s TLS certificate, redirects and payment/webhook callback URLs. A local hosts-file override or the host’s preview facility can test destination routing before public DNS changes.

Step 9: Complete the Shopify to WooCommerce migration

After final synchronization and launch approval, switch the required web A, AAAA or CNAME records to the destination. Preserve mail records unless a separately tested email migration requires a change. At release, remove staging HTTP authentication and unintended noindex restrictions, clear WordPress’s Discourage search engines setting for the public site, and set WooCommerce Site visibility to Live where applicable. Keep any retained staging copy private.

On the public domain, verify payment-gateway live settings and enable the approved email, fulfillment and webhook integrations. Complete a controlled real order with the store owner’s approval, then handle its refund and stock adjustment if appropriate. A sandbox transaction alone does not prove live payment authorization. Complete this sign-off:

  • HTTPS: Pass/Fail
  • Homepage, products, and redirects: Pass/Fail
  • Guest/account checkout and payment authorization: Pass/Fail
  • Tax, shipping, and stock reduction: Pass/Fail
  • Order emails: Pass/Fail
  • Analytics and consent tracking: Pass/Fail
  • Mobile checkout: Pass/Fail
  • Error monitoring: Pass/Fail
  • Rollback readiness: Pass/Fail

During the agreed observation window, monitor 404s, server errors, failed webhooks, checkout failures, WooCommerce scheduled-action queue problems, email delivery, disk usage, and new orders. Keep the Shopify account and its data available, and retain the pre-launch WooCommerce backup until that window closes. Do not cancel the source store immediately, even if its public domain already points to WooCommerce.

Submit the current XML sitemap in Google Search Console → Sitemaps, then watch indexing, page-status, and redirect reports. Completion means a successful public-domain order, functioning integrations, monitored errors, reconciled inventory, and a usable rollback route—not merely DNS pointing at the new server.

Conclusion: Verify the live store before retiring Shopify

A safe Shopify to WooCommerce migration ends only after the live store has processed enough representative activity to show that checkout, stock, email, redirects, analytics, and external integrations remain reliable. Keep the rollback route available throughout the agreed observation window.

Before decommissioning Shopify or removing migration access, complete a final production review:

  • Reconcile post-launch WooCommerce orders and stock against expected live activity.
  • Review 404 reports and correct missing or inaccurate redirects.
  • Confirm scheduled jobs, WooCommerce queues, webhooks, and transactional email continue to run.
  • Monitor disk usage, PHP errors, database performance, and checkout availability.
  • Retain the pre-launch backup according to the documented rollback plan.
  • Remove or rotate temporary migration credentials after final validation.
  • Export and retain any Shopify records required for accounting, tax, warranty, or legal purposes before closing the account.

Once the observation window closes, record final approval and preserve the migration worksheet, validation results, redirect map, and rollback documentation for future troubleshooting.

Frequently Asked Questions

How do you migrate from Shopify to WooCommerce without losing orders?

Run a full import into a protected staging store, validate customer-order relationships, and complete a final delta migration or manual reconciliation during the cutover window. Keep the Shopify account available until recent orders, payments, and inventory changes have been synchronized and verified.

Can Shopify customer passwords be migrated to WooCommerce?

Generally, no. Shopify customer passwords are not normally available for export in a form WooCommerce can reuse. Plan a secure account activation or password-reset process and explain it to customers before or immediately after launch.

Can Shopify subscriptions and payment methods be transferred?

Not automatically. Subscription records and reusable payment tokens depend on the source app, payment gateway, destination extension, and provider rules. Confirm compatibility with each vendor; never export or copy raw card details.

How long should Shopify remain available after the migration?

Keep the Shopify account available throughout the agreed post-launch observation window. Do not cancel it until WooCommerce has passed live checkout, integration, redirect, email, monitoring, data-reconciliation, and rollback-readiness checks.

Do you need a VPS for a Shopify to WooCommerce migration?

Not always. Shared hosting may suit a modest catalog when the migration tool operates within the account's resource limits. A VPS is more appropriate when the import requires isolated resources, adjustable server settings, long-running background jobs, or closer performance monitoring.

How can you preserve SEO when moving from Shopify to WooCommerce?

Record existing Shopify URLs, create permanent 301 redirects to the closest WooCommerce equivalents, preserve important page content and metadata, submit the new XML sitemap, and monitor 404, indexing, canonical, and redirect reports after launch.

What should a Shopify-to-WooCommerce rollback plan include?

Document the previous DNS values, the WooCommerce backup and restore procedure, the person authorized to trigger rollback, and the criteria for making that decision. The plan must also explain how orders, payments, customers, and stock changes created after cutover will be reconciled because changing DNS does not reverse transactional data.

Real Clients Feedback

250+5-Star Ratings
7+YrsCollecting Reviews

SiteValley.com is rated 4.8 / 5 based on 329 Reviews »

Logo

Ready to work together towards your success?

We love taking your call.