WordPress migration without downtime
How to migrate WordPress from one host to another without downtime. Procedure and mistakes to avoid.
Migrating a WordPress site means moving files and database from one server to another. Sounds easy in theory. In practice it's the source of more problems than you'd imagine: broken links, images not loading, plugins not working, SEO crashing for 48 hours. Here you'll find the procedure to do it without the site going offline.
Why you migrate a WordPress site
Legitimate reasons: current hosting is slow, costs too much, support doesn't respond, the server doesn't have enough resources for WooCommerce, the site was attacked and the old host doesn't handle it well. Less legitimate reasons: the site is slow but the problem is WordPress with too many plugins. Migrating won't fix a badly configured WordPress. Optimise it first. If after optimisation you need more power, then migration makes sense.
The three migration methods
Method one: migration plugin. Duplicator, All-in-One WP Migration, Migrate Guru. You create a package on the old host, upload it to the new one, install clean WordPress, import the package. Easy, few risks, works for most sites. Method two: manual migration. Download all files via FTP, export database via phpMyAdmin, upload to new host, import database, change URLs in wp-config.php and in the database. More control, more chance of error. Method three: hosting-managed migration. Many hosts (Kinsta, SiteGround) do migration for free. They ask for your old hosting credentials, copy everything, configure DNS. Convenient, but you have to trust the new host with your old site.
The procedure to migrate without downtime
Never change DNS before you've migrated everything and tested. The right procedure: configure the new hosting with a temporary URL (most allow this via a hosts file on your computer or a server preview URL). Install clean WordPress or import files via plugin. Test locally on your computer by modifying the hosts file. If everything works, update the domain DNS to point to the new server. DNS can take 1-48 hours to propagate. During this time, some visitors see the old site, others the new. Real downtime, if there are no errors, is zero.
Mistakes to avoid during migration
First mistake: not changing URLs in the database. If the site was on http and moves to https, or if the domain changes, the database contains the old URLs and internal links don't work. Fix: use the Better Search Replace plugin to update all occurrences. Second mistake: forgetting wp-config.php. Database credentials are different on new hosting. Third mistake: not clearing site cache. Caching plugins save files to disk, if you bring them with the migration the site shows old or broken content. Delete the wp-content/cache folder before migrating, or recreate it on the new server. Fourth mistake: not testing the contact form and WooCommerce checkout. It happens that emails don't arrive anymore after migration because the new host has different SMTP.
After migration: what to check
Visit every page. Not just the home. Navigate the site as a normal user. Try a contact form and check the email arrives. Try a WooCommerce checkout without paying. Check SSL is configured and that the HTTP → HTTPS redirect works. Verify the sitemap is accessible and that Google Search Console doesn't flag errors in the following days. Finally: look for the robots.txt file. If it was set to block crawlers on the old host (which is often done on staging), it might have been copied to the new one too, and the site won't be visible to Google anymore.
How much does a WordPress migration cost
If you do it yourself with a plugin: you save money, but if something breaks you're on your own figuring it out. If you ask managed hosting: often free if you're migrating to them. If a freelancer does it: 2-4 hours, from €90 to €180, you talk directly to whoever's doing the work. If an agency does it: from €300 to €1,000, and between you and whoever touches the site there are accounts, PMs, tickets.
If the article made you realize your site has the same problem, email me. Written estimate within 48 hours, €45/h fixed.