Why Most Migrations Go Wrong
WordPress migrations have a bad reputation — sites going down for hours, emails breaking, Google deindexing content. Most of these are the result of rushing or skipping the DNS propagation step. The process below has been used on hundreds of migrations without a single case of meaningful downtime.
What You Will Need
- Access to your current host control panel
- Your new hosting account set up and ready
- Access to your domain registrar
- The Duplicator plugin (free version works for most sites)
- Approximately 1–2 hours
Step 1: Create a Complete Backup
Install Duplicator on your current WordPress site. Go to Duplicator > Packages > Create New. The wizard creates two files: an installer PHP file and a zip archive of your entire site. Download both to your computer.
Step 2: Set Up Your New Hosting Account
Log into your new host and create a MySQL database and user. Note the database name, username, password, and host. Most hosts use localhost as the database host.
Step 3: Upload and Run the Installer
Upload both Duplicator files to your new host’s root directory via FTP or File Manager. Navigate to yoursite.newhost.com/installer.php. Enter the database credentials when prompted. The installer extracts your site and imports your database.
Step 4: Test Everything Thoroughly
On the temporary URL, verify the homepage loads, multiple posts and pages work, all images display, contact forms submit, and the WordPress admin login works. Do not proceed until every test passes.
Step 5: Lower Your DNS TTL
Go to your domain registrar, find your DNS A record, and change the TTL to 300 seconds. Wait 24 hours for this change to propagate before switching DNS.
Step 6: Switch Your DNS
Update your A record to point to your new host’s IP address. Because you lowered TTL to 5 minutes, most visitors will be on the new server within 10 minutes. Both servers have identical content so nobody notices the switch.
Step 7: Verify and Clean Up
After an hour, confirm the site is loading from the new host. Keep the old hosting account active for 48–72 hours in case of edge-case propagation issues, then cancel it.