Moving a WordPress site to a new cPanel host should not cost you a single second of downtime. Whether you are leaving a slow host, consolidating multiple sites onto one account, or upgrading to better infrastructure, the migration process follows a predictable sequence: copy the files, export the database, set up the new hosting environment, import everything, verify, and then — only then — point your DNS to the new server. If you handle the DNS cutover correctly, your visitors never see an error page or a moment of unavailability.

This guide covers three migration approaches ranked by complexity: using a migration plugin (easiest), using cPanel's built-in tools (intermediate), and manual migration via command line (advanced). All three achieve the same result — a complete, working copy of your WordPress site on a new host with zero downtime.

Before You Start: Pre-Migration Checklist

Every migration, regardless of method, requires the same preparation:

Method 1: Migration Plugin (Easiest)

Migration plugins handle the entire process — packing files and database, transferring them to the new server, and unpacking everything. This is the best method for sites under 2GB and for users without SSH access.

Recommended Plugins

Plugin Free Tier Limit Best For Notes
All-in-One WP Migration 512MB import (extendable) Simple sites under 512MB Handles search-replace automatically
Duplicator 500MB package Sites needing precise control Creates installer + archive package
UpdraftPlus (Premium) Paid migration addon Sites already using UpdraftPlus for backups Migrates directly between servers
Migrate Guru Unlimited (free) Large sites (no size limit) Uses external server for migration, no local storage needed

Step-by-Step: Duplicator

On the old host:

  1. Install and activate the Duplicator plugin.
  2. Go to Duplicator > Packages > Create New.
  3. Run the system scan. Fix any warnings (large files, non-standard permissions).
  4. Click Build. Duplicator creates two files: an archive (your entire site) and an installer.php file.
  5. Download both files to your local computer.

On the new host (MassiveGRID's cPanel hosting or any cPanel host):

  1. Create a new MySQL database and database user in cPanel > MySQL Databases. Note the database name, username, and password.
  2. Upload the archive and installer.php to the new domain's document root using cPanel's File Manager.
  3. Access yournewdomain.com/installer.php in your browser (or use a temporary URL / hosts file edit — see the DNS section below).
  4. The Duplicator installer walks you through extracting files, connecting to the new database, and running the search-replace to update URLs.
  5. Verify the site works on the new server.

Method 2: cPanel-to-cPanel Migration

If both your old and new hosts run cPanel, you can transfer the entire account (or specific components) using cPanel's built-in tools.

Using cPanel Backup + Restore

On the old host:

  1. Go to Backup in cPanel.
  2. Under "Partial Backups," download a Home Directory Backup and a MySQL Database Backup for your WordPress database.

On the new host:

  1. Go to Backup in cPanel.
  2. Under "Restore," upload and restore the home directory backup.
  3. Upload and restore the MySQL database backup.
  4. In MySQL Databases, create a new database user and assign it to the restored database with All Privileges.
  5. Edit wp-config.php in File Manager to update the database name, username, password, and host if they differ on the new server.
  6. If your domain name is changing, run a search-replace on the database. Use the WP-CLI command wp search-replace 'olddomain.com' 'newdomain.com' or the Better Search Replace plugin.

Using Transfer Tool (WHM)

If your new host provides WHM access or offers migration assistance, the Transfer Tool in WHM can pull an entire cPanel account from the old server automatically. This is the cleanest method because it preserves all settings, email accounts, databases, and cron jobs. On MassiveGRID's high-availability cPanel hosting, the support team handles cPanel-to-cPanel migrations at no additional cost.

Method 3: Manual Migration (SSH)

For developers and system administrators who prefer command-line control, manual migration via SSH is the most precise method and works for sites of any size.

Step-by-Step

On the old server (via SSH):

# Export the database
mysqldump -u dbuser -p dbname > wordpress_backup.sql

# Compress the site files
tar -czf wordpress_files.tar.gz -C /home/username/public_html .

Transfer files to the new server:

# From the old server, push to the new server
scp wordpress_backup.sql newuser@newserver:/home/newuser/
scp wordpress_files.tar.gz newuser@newserver:/home/newuser/

On the new server (via SSH):

# Extract files to document root
tar -xzf /home/newuser/wordpress_files.tar.gz -C /home/newuser/public_html

# Create the database
mysql -u root -p -e "CREATE DATABASE wpdb; GRANT ALL ON wpdb.* TO 'wpuser'@'localhost' IDENTIFIED BY 'strongpassword'; FLUSH PRIVILEGES;"

# Import the database
mysql -u wpuser -p wpdb < /home/newuser/wordpress_backup.sql

# Update wp-config.php
nano /home/newuser/public_html/wp-config.php
# Update DB_NAME, DB_USER, DB_PASSWORD, DB_HOST

# Search-replace if domain changed
wp search-replace 'olddomain.com' 'newdomain.com' --path=/home/newuser/public_html

# Fix file permissions
find /home/newuser/public_html -type d -exec chmod 755 {} \;
find /home/newuser/public_html -type f -exec chmod 644 {} \;

The Zero-Downtime DNS Cutover

This is the critical step that makes the difference between a seamless migration and a period of downtime. The principle is simple: do not touch DNS until the new server is fully verified and ready to serve traffic.

Step 1: Verify the New Site Without DNS

You need to see your site on the new server before changing DNS. There are two ways to do this:

Option A: Edit your local hosts file

Add a line to your computer's hosts file that maps your domain to the new server's IP address. This forces your browser to connect to the new server while the rest of the world still sees the old server.

# On macOS/Linux: /etc/hosts
# On Windows: C:\Windows\System32\drivers\etc\hosts

123.456.789.10  yourdomain.com  www.yourdomain.com

Option B: Use a temporary URL

Most cPanel hosts provide a temporary URL (like server123.yourhostname.com/~username or an IP-based URL). Check with your hosting provider.

Step 2: Test Everything

With the hosts file edit or temporary URL, thoroughly test your site on the new server:

Step 3: Freeze Content on the Old Site

Once you are ready to cut over, stop making changes on the old site. If the site accepts user-generated content (comments, orders, registrations), consider putting it in maintenance mode briefly or making a final database sync.

Step 4: Update DNS

Change the A record (and AAAA record for IPv6) for your domain to point to the new server's IP address. If you reduced the TTL earlier, the change will propagate within minutes. Most visitors will reach the new server within 5–15 minutes; global propagation typically completes within 1–2 hours.

Step 5: Remove Hosts File Edit

Remove the hosts file entry you added in Step 1. From now on, your browser resolves DNS normally, and you should reach the new server.

Step 6: Monitor

Watch your new server's logs and cPanel resource usage for 24–48 hours. Verify that traffic is arriving at the new server and that no errors are appearing. Keep the old server active for at least a week in case you need to roll back.

Post-Migration Tasks

Frequently Asked Questions

How long does a WordPress migration take?

The actual file and database transfer takes minutes for most sites (under 5GB). The total process — including setup, verification, and DNS propagation — typically takes 2–4 hours. Planning and preparation (reducing DNS TTL, documenting settings) should start 48 hours before the migration window.

Will I lose any SEO rankings during migration?

Not if you do it correctly. Keep the same URLs, permalink structure, and content. A zero-downtime migration with proper DNS cutover means search engines continue to access your site throughout the process. Google has confirmed that changing hosting providers (IP addresses) does not affect rankings. If you are also changing your domain name, set up 301 redirects from the old domain to the new one.

Can I migrate a WordPress Multisite network?

Yes, but it requires additional care. The database contains network-specific tables, and the domain mapping must be updated on the new server. For subdomain networks, wildcard DNS must be configured on the new host. We recommend the manual migration method for Multisite. See our Multisite setup guide for the architectural details you need to understand.

What if my old host does not provide SSH or cPanel backup access?

Use a migration plugin like All-in-One WP Migration or Duplicator, which work entirely through the WordPress dashboard. These plugins package your files and database into a downloadable archive that you can then upload to the new host. Migrate Guru transfers directly between servers without needing to download anything locally.

Should I keep the old hosting account after migration?

Yes — keep it active for at least 7 days after DNS cutover. This gives you a rollback option if issues emerge on the new server. It also ensures that any cached DNS entries pointing to the old server still serve your site during the propagation window. After confirming everything is stable on MassiveGRID's high-availability cPanel hosting (or your new host), you can safely cancel the old account.