Moving a client's website to a new host is one of those tasks that sounds simple until you're halfway through and realize the email stopped working, the SSL certificate is throwing errors, and the client is asking why their site looks different. With proper planning, migrations are smooth and invisible to the end user. Without it, they're a mess.
Here's the step-by-step process for migrating client sites with zero downtime.
Before You Touch Anything: The Pre-Migration Checklist
Gather this information for every site you're migrating:
- Current hosting login credentials (cPanel, FTP, SSH, hosting control panel)
- Domain registrar login (where DNS is managed, which may be different from the host)
- Database credentials (database name, username, password, host)
- Email accounts (list all mailboxes, forwarding rules, and autoresponders)
- SSL certificate details (is it AutoSSL/Let's Encrypt, or a paid certificate?)
- DNS records (export the full zone file, including MX records, SPF, DKIM, DMARC, and any custom records)
- Third-party integrations (CDN, email marketing, CRM, analytics, payment gateways that reference the domain)
Missing any of these will cause problems mid-migration. Spend 20 minutes gathering everything upfront to save hours of troubleshooting later.
Step 1: Set Up the New Hosting Account
Create the hosting account on your new server before starting the migration. On a VPS with WHM, create a new cPanel account for the client's domain. On shared hosting, add the domain as an addon domain.
At this point, don't change DNS yet. The domain still points to the old server. You'll set up and test everything on the new server first, then switch DNS as the final step.
Step 2: Transfer Website Files
You have a few options for moving files:
cPanel Backup and Restore
If both the old and new servers run cPanel, this is the cleanest method. Generate a full backup from the old cPanel (Backup >Download a Full Account Backup). Upload the backup to the new server and restore it via WHM (Account Functions >Restore a Full Backup). This transfers files, databases, email accounts, and cron jobs in one shot.
Manual File Transfer
If cPanel migration isn't an option, transfer files manually via SFTP. Download the entire public_html directory from the old server. Upload it to the new server's public_html. For large sites (10+ GB), use SSH and rsync if both servers support it. rsync is faster because it only transfers changed files and compresses data in transit.
WordPress Migration Plugins
For WordPress sites, plugins like All-in-One WP Migration or Duplicator package the entire site (files + database) into a single downloadable archive. Install the plugin on the old site, export the archive, install WordPress on the new server, install the same plugin, and import. This method works well for sites under 2 GB.
Step 3: Migrate the Database
If you used a full cPanel backup or a WordPress migration plugin, the database is already transferred. For manual migrations:
- Export the database from the old server using phpMyAdmin (Export >Quick >SQL format) or via command line with
mysqldump - Create a new database and user on the new server via cPanel >MySQL Databases
- Import the SQL file into the new database using phpMyAdmin (Import tab) or command line
- Update wp-config.php (or your application's config) with the new database name, username, and password
For large databases (500+ MB), phpMyAdmin may time out. Use SSH and the mysql command-line client instead: mysql -u username -p database_name < backup.sql
Step 4: Handle Email Continuity
Email is where most migrations go wrong. When you switch DNS, MX records change, and email starts flowing to the new server. If email accounts aren't set up on the new server before the switch, messages bounce.
- Recreate all email accounts on the new server with the same addresses and passwords. If the client uses webmail or IMAP (which keeps mail on the server), old messages won't transfer automatically.
- Migrate email data using imapsync or a cPanel transfer tool. This copies existing messages from the old server to the new one.
- If the client uses external email (Google Workspace, Microsoft 365), email is unaffected by the hosting migration. Just make sure the MX records in the new DNS zone point to the email provider, not the hosting server.
- Preserve SPF, DKIM, and DMARC records in the new DNS zone. Missing these records causes email deliverability issues.
Step 5: Test Before Switching DNS
This is the step most people skip, and it's the most important one. Test the site on the new server before pointing DNS to it.
Edit your local hosts file to point the client's domain to the new server's IP address. This lets your browser load the site from the new server without affecting anyone else:
- On Mac/Linux: edit
/etc/hosts - On Windows: edit
C:\Windows\System32\drivers\etc\hosts - Add a line:
123.456.789.0 clientdomain.com www.clientdomain.com(use the new server's IP)
Now browse the site and test everything:
- Homepage loads correctly with all images and styles
- Internal links work (no hardcoded references to the old server)
- Forms submit successfully
- Login functionality works (WordPress admin, client portals)
- E-commerce checkout processes test orders
- SSL certificate is valid (you may need to use a temporary certificate for testing)
- PHP version matches what the site requires
Fix any issues before proceeding. Don't remove the hosts file entry until migration is complete.
Step 6: Switch DNS
Once everything checks out on the new server, update DNS at the domain registrar:
- Option A: Change nameservers. Point the domain to the new host's nameservers. This transfers DNS management entirely to the new server. Simple, but propagation takes 24-48 hours.
- Option B: Update A records. Keep the existing nameservers and update the A record to point to the new server's IP address. This is faster (often propagates within 1-4 hours) and lets you keep DNS management at the registrar.
Before making the switch, lower the TTL (Time To Live) on the DNS records to 300 seconds (5 minutes). Do this 24-48 hours before the migration. This ensures that once you change the records, the update propagates quickly instead of being cached for hours.
Step 7: SSL Certificate on the New Server
Once DNS is pointing to the new server, AutoSSL or Let's Encrypt will issue a new SSL certificate automatically. This usually happens within minutes on cPanel servers with AutoSSL enabled.
If the site uses a paid SSL certificate (EV, wildcard, or multi-domain), you'll need to export the certificate, private key, and CA bundle from the old server and install them on the new server via cPanel >SSL/TLS >Install and Manage SSL.
Step 8: Post-Migration Verification
After DNS has propagated and the site is loading from the new server:
- Run a full site crawl with Screaming Frog or a similar tool to check for broken links and missing resources
- Verify SSL is working (check for mixed content warnings in the browser console)
- Send test emails to and from all client email addresses
- Check that cron jobs are running (WordPress scheduled posts, backup scripts)
- Verify that backups are configured and running on the new server
- Monitor uptime closely for the first 48 hours
Keep the old hosting account active for at least 7-14 days after migration. If something was missed, you can still access the old server's data. Cancel the old account only after you've confirmed everything is stable.
Free Migration Makes It Easier
If the migration process sounds like a lot of work, it is. That's why SpectraHost offers free website migration on all hosting plans. Our team handles the file transfer, database migration, email setup, DNS guidance, and post-migration testing. You provide access credentials, and we do the rest.
For agencies migrating multiple client sites, free migration removes the biggest objection to switching hosts. No downtime, no data loss, no billable hours spent on file transfers.
Plan the Migration, Then Execute
The difference between a clean migration and a messy one is preparation. Gather credentials, test on the new server, lower TTL in advance, and switch DNS during low-traffic hours. Follow this process and your clients will never know their site moved.
Ready to move? Check out SpectraHost plans and take advantage of free migration to get your clients onto faster, more reliable hosting.
