Skip to content
← Back to the Blog

Migrations

Moving WordPress Sites Without Losing Sleep (or Data)

WordPress migrations have a reputation for going wrong. They don't have to. Here's a methodical approach that makes them predictable and safe.

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

  1. Export the database. A full SQL export of the WordPress database.
  2. Copy the files. Everything in the WordPress root — core files, wp-content, wp-config.php.
  3. Import to the new server. Set up the database on the destination, import the SQL, update wp-config.php with the new database credentials.
  4. 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.
  5. 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.
  6. Testing Before Go-Live

    This step is not optional. Test:

    • 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

    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.