WordPress migrations make a lot of people nervous, and understandably so. There are moving parts, potential for downtime, and a real risk of data loss if something goes wrong. But done properly, a migration is a non-event.
Before You Start
Complete backup. Before touching anything, take a full backup of the site — database and files — and verify it. Download it locally. This is your safety net.
Document everything. Custom cron jobs, custom wp-config.php settings, server-level redirects, email configuration, any integrations or third-party services that reference the current server's IP address.
Set up the destination first. The new hosting environment should be fully configured before migration day — PHP version, extensions, database, SMTP — so you're not troubleshooting configuration issues under time pressure.
The Migration Process
- Export the database. A full SQL export of the WordPress database.
- Copy the files. Everything in the WordPress root — core files, wp-content, wp-config.php.
- Import to the new server. Set up the database on the destination, import the SQL, update wp-config.php with the new database credentials.
- Update URLs if necessary. If the domain is changing, run a serialization-safe search and replace across the database. Never do a simple find-and-replace on a raw SQL dump — you'll corrupt serialized data.
- Test on the new server before changing DNS. Edit your local hosts file to preview the site on the new server before anyone else sees it.
- All pages load correctly
- Forms submit and send correctly
- E-commerce checkout works end to end
- Any third-party integrations still function
- Email sending works from the new server
- No broken images or missing files
Testing Before Go-Live
This step is not optional. Test:
DNS Cutover
Lower your TTL to 300 seconds (5 minutes) 24 hours before the planned migration. When you're ready, update the DNS records. The propagation window will be short, and you can keep the old server live during it so there's no real downtime.
After Migration
Monitor the site closely for 24–48 hours. Watch for 404 errors (missing redirects), form submission failures, or anything that behaved differently in testing on the live environment.
Migrations go wrong when they're rushed or underprepared. Done methodically, they're one of the more satisfying pieces of WordPress work.