How to Migrate Your Website to a New Host (Zero Downtime Guide)
Move your WordPress site to a new hosting provider without any downtime or data loss. Step-by-step guide covering plugin migration, manual migration, and DNS cutover timing.
Migrating a website to a new host sounds intimidating but it's a straightforward process when done in the right order. The key is to set up everything on the new host before changing DNS — so you can test thoroughly before going live.
Before You Start
Why are you migrating?
- Moving to faster/cheaper hosting → plan migration carefully to minimize downtime
- Moving from shared to cloud hosting → use this guide for full site migration
- Host cancellation → urgent migration, follow the same steps but faster
What you'll need:
- Access to old hosting account (FTP or File Manager)
- Access to old hosting phpMyAdmin or cPanel database tools
- New hosting account already set up
- Access to your domain registrar
Step 1: Create a Full Backup
Never start a migration without a backup. If anything goes wrong, you need to restore quickly.
Using UpdraftPlus (recommended):
- Install and activate UpdraftPlus on WordPress
- Go to Settings → UpdraftPlus Backups
- Click Backup Now
- Select Include database and Include files
- Download the backup files after completion (store locally or in Google Drive)
Manual backup:
- Files: Connect via FTP, download the entire
public_htmlfolder - Database: Go to cPanel → phpMyAdmin, select your database, click Export, choose SQL format, click Go
Step 2: Set Up New Hosting
Sign up for your new hosting account and install WordPress (or prepare the empty hosting environment).
For Cloudways:
- Create your server and application (see our Cloudways setup guide)
- Note your application's temporary URL (e.g.,
yourdomain.temp.cloudwaysapps.com) - Access the WordPress admin at the temp URL
For Hostinger/Bluehost/SiteGround (cPanel-based):
- Log in to the new hosting account
- Install a fresh WordPress via Softaculous (we'll overwrite it)
- Note the temporary/default URL before DNS is pointed
Step 3: Choose Your Migration Method
Method A: All-in-One WP Migration Plugin (Easiest)
Perfect for sites under 512MB (free limit).
On your OLD site:
- Install All-in-One WP Migration
- Go to All-in-One WP Migration → Export
- Click File to export to a downloadable archive
- Download the
.wpressfile
On your NEW site:
- Install All-in-One WP Migration on the new WordPress
- Go to All-in-One WP Migration → Import
- Click Import From → File
- Upload the
.wpressfile - Wait for import to complete (can take minutes for large sites)
- The plugin will update all URLs automatically
- Flush permalinks: Settings → Permalinks → Save Changes
For sites over 512MB: The Pro version ($69) removes the file size limit. Alternatively, use Duplicator (free up to any size with some configuration).
Method B: Duplicator Plugin
Better for large sites or when you need precise control.
On your OLD site:
- Install Duplicator plugin
- Go to Duplicator → Packages → Create New
- Name it and click Next → Build
- Download both the Installer file (
installer.php) and Archive file (yourdomain.zip)
On your NEW site:
- Upload both files to your new hosting's
public_html/via FTP or File Manager - Visit
newdomain.com/installer.phpin your browser - Follow the installation wizard:
- Enter your new hosting's database credentials
- Confirm the URL change
- Click Run Deployment
- Delete
installer.phpandinstaller-log.txtafter completing
Method C: Manual Migration (Most Control)
Best for developers or when plugins fail.
Transfer files:
- Download your old site's
public_html/via FTP - Upload to new host's
public_html/via FTP
Transfer database:
- On old host: cPanel → phpMyAdmin → select database → Export → SQL
- On new host: Create a new MySQL database + user in cPanel → MySQL Databases
- cPanel → phpMyAdmin → select new database → Import → upload SQL file
- Update
wp-config.phpon new host with new database credentials
Update URLs in database: WordPress stores the old domain in the database. Update with WP-CLI or SQL:
UPDATE wp_options SET option_value = replace(option_value, 'http://oldsite.com', 'http://newsite.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://oldsite.com', 'http://newsite.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://oldsite.com', 'http://newsite.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://oldsite.com', 'http://newsite.com');
Or use the Better Search Replace plugin (simpler, no SQL knowledge needed).
Step 4: Test the Site on New Hosting
Before changing DNS, test your site on the new server.
Method A — Temporary URL:
Your new host likely provides a temporary URL. Log in to WordPress at temp.domain.com/wp-admin and verify:
- All pages load
- Images display
- Navigation works
- Forms function
- WooCommerce (if applicable) works end-to-end
Method B — Edit your hosts file (local preview):
Your local hosts file lets you preview the site at your real domain before DNS changes:
Windows: Edit C:\Windows\System32\drivers\etc\hosts
Mac/Linux: Edit /etc/hosts
Add this line (replace IP with your new host's IP):
123.456.789.012 yourdomain.com
Now visiting yourdomain.com on your computer goes to the new host while everyone else still sees the old host. Remove this line after DNS propagates.
Step 5: Reduce DNS TTL (Optional but Helpful)
24+ hours before migration: Lower your domain's DNS TTL to 300 seconds (5 minutes).
This means DNS changes will propagate in 5 minutes instead of 24–48 hours, dramatically reducing the time when some visitors hit the old server and some hit the new server.
Find TTL in your registrar's DNS settings. Not all registrars allow changing TTL.
Step 6: Point Domain to New Host
Once you've verified the site on the new host:
Option A — Update Nameservers: Change your domain's nameservers to your new host's nameservers. Takes 1–24 hours to propagate.
Option B — Update A Record (faster):
Change the A Record for @ and www to point to your new host's IP. With reduced TTL, propagates in 5 minutes.
Step 7: Post-Migration Checklist
After DNS propagates:
- [ ] Visit your domain — it should load from the new host
- [ ] Log in to WordPress admin
- [ ] Test all pages, posts, and media
- [ ] Test contact forms
- [ ] Check SSL certificate (should auto-install on new host)
- [ ] Check email (if hosted — may need separate configuration on new host)
- [ ] Run a speed test on the new host
- [ ] Check Google Search Console for crawl errors
- [ ] Set up backups on the new host
Step 8: Cancel Old Hosting
Wait at least 48 hours after DNS propagation before canceling old hosting. This ensures any remaining visitors hitting the old server are negligible.
Before canceling:
- Download a final backup from the old host
- Export all email if you hosted email there
- Transfer any email archives
Most hosts offer a grace period — you can usually re-enable within 30 days if something goes wrong.
Common Migration Issues
Images not loading after migration:
Run a search-replace for the old domain URL in the database. Use Better Search Replace plugin — check both http:// and https:// variants.
WordPress admin not accessible:
Update URLs in wp-config.php:
define( 'WP_HOME', 'https://yourdomain.com' );
define( 'WP_SITEURL', 'https://yourdomain.com' );
SSL certificate not working: Install SSL on the new host (usually via cPanel → SSL/TLS or your host's dashboard). Let's Encrypt SSL is free and installs in seconds on most hosts.
Email stopped working: If your email was hosted with your old provider, configure email separately. Cloudways and cloud hosts don't include email — use Google Workspace, Zoho Mail, or your registrar's email hosting.
Thinking about migrating to Cloudways? Cloudways offers a free migration service — their support team will move your site for you when you sign up.
Free Download
2026 Web Hosting Comparison Cheat Sheet
- ✓11 hosts ranked by speed, uptime & price
- ✓Renewal price traps to avoid
- ✓Best host for WordPress, WooCommerce & agencies
- ✓Exclusive discount codes for 2026
Free · Join 2,400+ readers · Unsubscribe anytime