Recommended Free Tools
Move a WooCommerce store as a controlled WordPress migration: back up every file and the complete database, prepare the destination, restore both, preserve or safely change URLs, run WooCommerce’s database updates, test the checkout, and change DNS only after the new copy passes acceptance checks. Keep the old host online and retain an untouched backup until traffic, payments, orders, email, and scheduled jobs are confirmed on the new server.
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
What a WooCommerce host migration actually moves
A WooCommerce store is more than a collection of product pages. The migration includes the WordPress core files, themes, plugins, media, configuration, database tables, scheduled actions, payment settings, customer accounts, orders, downloadable files, and server services such as cron and email. Missing any one of those can produce a store that appears to work while silently losing orders, images, webhooks, or background jobs.
As an Amazon Associate I earn from qualifying purchases.
If the domain, URL scheme, and path remain exactly the same, the move is mainly a file-and-database transfer. WordPress’s migration guidance notes that you do not need to reinstall WordPress when moving to another server. A domain, HTTPS scheme, subdirectory, or hostname change adds URL replacement, redirects, and serialization risks.
Choose the migration approach before touching the live store
| Approach | Best for | Strengths | Trade-offs |
|---|---|---|---|
| Manual files plus SQL | Administrators comfortable with hosting panels, SSH, and databases | Transparent, auditable, and independent of a plugin’s limits | Requires careful handling of credentials, permissions, large files, and database imports |
| Migration plugin | Smaller stores or owners who prefer a graphical workflow | Can package files and database and provide guided URL replacement | Upload limits, timeouts, serialized-data handling, and compatibility vary by plugin and host |
| WP-CLI and shell tools | Repeatable migrations, large stores, and automation | Scriptable exports, imports, checks, and search-replace operations | Requires command-line access and a tested rollback plan |
| Managed migration service | Teams that need provider support or have limited server access | May include staging, backups, and migration assistance | Less control over timing and implementation; verify exactly what is included |
For a busy store, decide whether you can stop new orders briefly. A short maintenance or order-freeze window is simpler and safer. Near-zero downtime requires a final database delta and explicit reconciliation of orders created while the source remained writable.
#1 Best Overall
- Easily store and access 2TB to content on the go with the Seagate Portable Drive, a USB external hard drive
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Inventory the live store and define acceptance criteria
Record the current environment before creating a backup. Save the WordPress and WooCommerce versions, PHP version, MySQL or MariaDB version, active plugins, theme and child theme, custom code, payment gateways, shipping and tax integrations, cron jobs, mail settings, CDN or cache hostnames, and any scheduled imports or feeds.
Write down measurable checks for the new host. At minimum, acceptance should include:
- The expected number of products, customers, orders, refunds, coupons, and downloadable files.
- The newest source order ID and the newest destination order ID after the final transfer.
- Successful customer login, cart, coupon, shipping, tax, checkout, payment authorization, refund, and transactional email tests.
- Working variable products, product categories, search, media, subscriptions, webhooks, scheduled actions, and analytics.
- Valid HTTPS with no mixed content, correct canonical URLs, redirects, robots rules, XML sitemaps, and cache behavior.
- Working administrator roles, mobile layouts, and access to logs and monitoring on the new host.
Step 1: Freeze changes or plan a final database delta
Use a maintenance or order-freeze window when possible
Put the store in maintenance mode or otherwise prevent checkout during the final export. Announce the window internally, pause scheduled imports that can write to the database, and stop editors from changing products or settings. A freeze gives you one consistent database snapshot and avoids reconciling orders that arrive during copying.
Use a delta procedure for stores that cannot stop selling
If orders must continue, copy the site in advance, then perform a final source database export immediately before DNS cutover. Document which tables or records changed, and verify order counts and the newest order ID on both installations. Do not assume a file copy of the old database includes orders created afterward. The cutover team must know exactly when writes stop and which system is authoritative.
Step 2: Create two independent backups
Make a complete backup of the WordPress directory, including wp-content/uploads, plugins, themes, custom files, and any files outside the standard directories that the site uses. Export the complete database, not only WooCommerce tables. WordPress’s migration guidance specifically calls for backing up the WordPress directory, images, plugins, other files, and the database.
Create two independent copies using separate operations or destinations. Keep one untouched copy away from both hosting accounts. Protect backups because they contain customer information, order data, API keys, payment configuration, and often database credentials. Transfer them over encrypted channels, restrict file permissions, and remove temporary SQL dumps and installers from web-accessible directories.
Before relying on a backup, check that the archive can be opened and that the SQL dump is non-empty and readable. If possible, restore it to an isolated environment; a backup that was never tested is only an assumption.
Step 3: Provision the destination host to match the source
Create the destination site, database, database user, HTTPS certificate, mail service, and cron mechanism before importing anything. Match the supported PHP version, MySQL or MariaDB version, required PHP extensions, file permissions, memory and upload limits, and web-server rewrite behavior. A host that is technically online but lacks an extension used by a payment gateway or image library can fail only on specific customer paths.
Rank #2
- Easily store and access 5TB of content on the go with the Seagate portable drive, a USB external hard Drive
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Prepare a temporary hostname, provider preview URL, staging domain, or hosts-file override so you can test the restored site without changing public DNS. Make sure the destination can send test email and reach payment, shipping, tax, analytics, and webhook endpoints. Keep production credentials disabled or clearly separated if the preview environment could create real transactions.
Step 4: Transfer the files and database
- Copy the files. Upload or extract the complete WordPress directory to the destination document root. Preserve directory structure, symbolic links where applicable, and file permissions. Confirm that the uploads directory and any private download directories are present.
- Create the destination database. Create the database and user, grant the required privileges, and note the database name, username, password, host, and table prefix.
- Import the SQL dump. Use the host’s database tool or a command-line client appropriate for the dump size. Large imports may need higher packet, execution-time, or upload limits than a browser-based tool provides.
- Update configuration. Edit
wp-config.phpif the database name, user, password, host, or table prefix changed. Do not paste credentials into public tickets or leave a backup copy of the file in the document root. - Verify ownership and permissions. The web server must be able to read WordPress files and write only where the application requires it, such as uploads and cache directories.
WP-CLI’s database command uses the credentials in wp-config.php and supports export, import, checks, queries, creation, and reset operations. A typical export is wp db export backup.sql. Use the equivalent import and check commands in a controlled destination environment, and retain the original dump until acceptance is complete.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Step 5: Preserve or change URLs safely
When the domain and paths are unchanged
Keep the existing home and siteurl values when the public domain, HTTPS scheme, and WordPress path are identical. Changing them unnecessarily creates avoidable redirects, cookie problems, and references that must later be repaired. Test the temporary copy through a hosts-file override rather than altering stored URLs merely to preview it.
When the domain, scheme, path, or hostname changes
Update the site URL values in the correct order for your recovery situation, then perform a serialization-aware search and replace across the database. WordPress warns that serialized PHP data stores string lengths. A blind SQL replacement can invalidate those lengths and break widgets, theme settings, page builders, and plugin configuration.
Use WP-CLI’s search-replace operation or a dedicated tool that understands serialized data. Include old and new schemes, subdirectory paths, image URLs, attachment references, and service hostnames as appropriate. Exclude tables or columns only when you understand why; an incomplete replacement can leave mixed content or links back to the old host. Afterward, inspect representative posts, products, variations, checkout settings, widgets, menus, and plugin configuration.
Keep redirects from the old domain to the new one when the public address changes. Update canonical URLs, robots rules, XML sitemaps, CDN and cache hostnames, webhook endpoints, OAuth callback URLs, and any third-party integration that has the old address stored.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Step 6: Regenerate rewrites and clear caches
Once the restored site responds on the destination, resave permalinks in the WordPress dashboard to regenerate rewrite rules. Check the resulting .htaccess file on Apache or the equivalent Nginx configuration. Confirm that product, category, account, checkout, and API endpoints do not return 404 errors.
Clear WordPress, object, page, server, CDN, and browser caches in a deliberate order. Purge stale redirects and cached checkout pages. Verify that the cache excludes cart, checkout, account, and other session-sensitive paths. Inspect response headers and test as both a logged-out customer and a logged-in customer.
Rank #3
- Easily store and access 1TB to content on the go with the Seagate Portable Drive, a USB external hard drive.Specific uses: Personal
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop. Reformatting may be required for Mac
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Step 7: Run pending WooCommerce database updates
Check the WooCommerce status screen for pending database updates after the files and database are restored. The WooCommerce CLI supports WooCommerce 3.0.0 and later, and wp wc update runs pending WooCommerce database updates. This command is useful for busy stores where an interactive administrator request could time out.
Run updates in the intended sequence, monitor the command output and server logs, and take a fresh database backup before a significant schema update. Do not repeatedly start an interrupted update without checking its status. Confirm that WooCommerce reports a current database version and that scheduled actions are processing normally.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesStep 8: Test the restored store before DNS changes
Customer and catalog paths
- Open the home page, representative product and category pages, variable products, internal search, menus, images, downloadable files, and any custom landing pages.
- Create a test customer account, sign in, reset the password, view order history, and verify account permissions.
- Add simple and variable products to the cart, change quantities, apply valid and invalid coupons, and remove items.
- Calculate shipping and tax for representative addresses, including edge cases used by your business.
Checkout, orders, and payments
- Run a gateway sandbox or other non-capturing authorization test. Ensure the gateway points to the intended environment and that return, callback, and webhook URLs resolve to the new host.
- Place a test order and confirm order creation, stock reduction, customer email, administrator notification, payment status, downloadable permissions, and order notes.
- Test a refund through the gateway workflow, and verify that the refund and order status are recorded correctly.
- For subscriptions or recurring billing, check scheduled renewals, webhook delivery, payment tokens, and the service’s approved callback addresses.
Background services and operations
- Confirm that real cron or the selected scheduled-task runner executes imports, emails, cleanup, subscriptions, and WooCommerce scheduled actions.
- Check transactional email delivery, sender authentication, bounce handling, and mail logs.
- Review PHP, database, web-server, and queue logs while exercising checkout and administration.
- Verify analytics, feeds, search indexing controls, backups, monitoring, and cache invalidation.
- Test HTTPS from a clean browser and inspect for mixed content, invalid certificates, insecure form actions, and redirect loops.
Use a hosts-file override or staging URL for these checks. Avoid sending real customer traffic or charging a real card from a preview copy. Remove or disable test orders, test credentials, and preview access before production cutover.
Step 9: Cut over DNS with a rollback plan
Lower the DNS TTL ahead of the planned window when your DNS provider permits it. At cutover, stop source writes according to your freeze or final-delta procedure, complete the last export if required, import and verify it, and then change the relevant A, AAAA, CNAME, or nameserver records. Keep the old installation available; do not redirect it into a destructive loop or immediately cancel the account.
DNS resolution is cached by resolvers and clients, so different visitors can reach different hosts for a period. Monitor both installations during propagation. Watch access logs, PHP and database errors, failed payments, order creation, email, cron, uptime, and webhook responses. Compare order counts and the newest order ID after traffic has settled.
Keep the old host and an untouched backup until DNS traffic has settled and the destination has passed your rollback criteria. If a serious defect appears, restore the previous DNS records, stop writes on the destination, reconcile any orders created there, and investigate using logs and the preserved database snapshot.
Same-domain moves versus domain changes
| Concern | Same public URL | Changed domain, scheme, or path |
|---|---|---|
Stored home and siteurl |
Preserve existing values | Update to the new canonical address |
| Database replacement | Usually unnecessary | Required, using serialization-aware tooling |
| Redirects | Usually limited to server normalization | Map old URLs to corresponding new URLs |
| External integrations | Confirm host-level callbacks still work | Update webhooks, OAuth callbacks, feeds, and gateway endpoints |
| Primary risk | Runtime, permissions, or missing files | Broken serialized data, mixed content, and lost redirects |
Common failure modes and fixes
The site redirects to the old host
Check home and siteurl, hard-coded values in wp-config.php, serialized options, reverse-proxy rules, and cached redirects. Clear every cache layer only after correcting the source of the redirect.
Product images or downloads return 404
Confirm that uploads and private download directories were copied, ownership and permissions allow access, URLs were replaced correctly if the domain changed, and rewrite rules were regenerated. Check case-sensitive filename differences when moving between filesystems.
Rank #4
- Easily store and access 4TB of content on the go with the Seagate Portable Drive, a USB external hard drive.Specific uses: Personal
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Permalinks or checkout return 404
Resave permalinks, verify Apache or Nginx rewrite configuration, and ensure the web root points to the correct WordPress directory. Exclude checkout and account paths from page caching.
Orders or customers are missing
Confirm that the complete database was imported, the destination is using the intended database and table prefix, and the final-delta procedure was completed. Compare counts and the newest order ID rather than relying on the dashboard alone.
Payments authorize but the order never updates
Inspect webhook and callback URLs, firewall rules, HTTPS validity, gateway credentials, cron processing, and PHP or database errors. Ensure the restored copy is not still configured for a sandbox or an old hostname.
Scheduled actions do not run
Check real server cron, WordPress loopback requests, the site URL, blocked HTTP requests, and the process user’s permissions. Review the WooCommerce scheduled-actions screen and server logs for failures.
Database import times out or fails
Use a command-line import or a host-supported large-database method, increase relevant limits where appropriate, and verify the dump for truncation. Never resume production traffic on a partially imported database.
Security and data-handling checklist
- Encrypt transfers and restrict backup access to the migration team.
- Treat SQL exports,
wp-config.php, API keys, payment credentials, and customer data as secrets. - Rotate credentials if a dump or configuration file was exposed during the move.
- Remove temporary dumps, archives, installers, preview users, and diagnostic files from public directories.
- Install the destination certificate before opening the store and verify secure cookies and HTTPS redirects.
- Confirm least-privilege database and file permissions, then enable monitoring and a new backup schedule.
When to use a maintenance window versus near-zero downtime
A maintenance window is the right choice when order volume is manageable, the database is large or complex, or the team cannot reliably reconcile concurrent writes. It reduces operational complexity and makes the final database state unambiguous.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchNear-zero downtime is justified when even a short closure has a material business cost. It requires a rehearsed initial copy, continuous or repeated database synchronization, a final write freeze, order and customer reconciliation, and monitoring on both hosts. The phrase “zero downtime” does not remove the need to account for orders, refunds, product edits, stock changes, and scheduled jobs created during the final transfer.
Final acceptance checklist
- Files, uploads, database, configuration, and permissions are present on the destination.
- Database credentials, PHP/runtime requirements, HTTPS, mail, cron, and rewrite rules work.
- URL values and any serialization-aware replacements are verified.
- WooCommerce reports no pending database update, or the documented update has completed.
- Catalog, accounts, cart, coupons, shipping, tax, checkout, payment, refunds, downloads, and email pass tests.
- Webhooks, subscriptions, scheduled actions, analytics, caches, sitemaps, redirects, and mobile layouts pass checks.
- Final order counts and newest order IDs match the migration plan.
- DNS is changed, monitoring is active, and the old host plus rollback backup remain available.
Bottom line
Move WooCommerce in stages: inventory, freeze or synchronize writes, create verified backups, match the destination environment, restore files and database, handle URLs with serialization-safe tools, update WooCommerce, test every revenue-critical path, then cut over DNS and monitor. The migration is complete only after the new host can create and process real orders reliably and you still have a tested way back.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




