- Choose Your Migration Method
- Before You Start (Pre-Migration Checklist)
- Method A: Migrate Using WHM Transfer Tool
- Method B: Manual Migration (Files + Database)
- DNS Cutover: Migrate the Domain Correctly
- SSL After Migration (Avoid “Not Secure” and Mixed Content)
- Email Migration Notes (Don’t Lose Mail)
- Common Issues and Fixes
- FAQ
- Need Help?
- Related Hosticko Pages
- Outbound Links (Helpful Resources)
Migrating websites and domains between cPanel servers is straightforward if you follow the right order. The cleanest method is the WHM Transfer Tool because it can move an entire cPanel account in one go (web files, databases, email, DNS zone, cron jobs, and more). For single websites only (or when you don’t have WHM/root access), you can migrate manually.
This guide covers both approaches, plus the DNS/SSL/email steps that usually cause downtime when people skip them.
Choose Your Migration Method #
Option A: WHM Transfer Tool (Recommended) #
Use this when you have WHM access on the destination server (and preferably on the source too). It is best for:
- Full cPanel account moves (one or many accounts)
- Multiple domains/addon domains under the same account
- Sites that rely on email accounts on the same hosting
Option B: Manual Migration (Single Site / No WHM Access) #
Use this when:
- You only need to move one website (not the full account)
- You don’t have WHM/root access (shared hosting to shared hosting, or third-party host)
- You are migrating from a non-standard setup
Before You Start (Pre-Migration Checklist) #
- Lower DNS TTL 24–48 hours before cutover (e.g., 300–600 seconds) for faster propagation.
- Collect access: source cPanel/WHM logins, destination cPanel/WHM logins, DNS/registrar access.
- Backup everything: full home directory + all databases + email (if applicable).
- Confirm disk space on the destination server (files + database + email size).
- Plan your email approach: keep MX on old provider until you’re ready, or migrate email as part of the cPanel account transfer.
Method A: Migrate Using WHM Transfer Tool #
Step 1: Prepare the Destination Server #
- Make sure the destination server has enough storage and resources.
- Match PHP versions as closely as possible (helps avoid post-migration 500 errors).
- Confirm required PHP extensions (common ones:
mysqli,mbstring,curl,gd,zip,intl).
Step 2: Open WHM Transfer Tool #
- Log in to WHM on the destination server.
- Go to Transfers → Transfer Tool.
- Enter the source server IP/hostname, and authentication details.
Step 3: Select What to Transfer #
Typically you can transfer:
- cPanel accounts (websites + databases)
- Email accounts and mail data
- DNS zones
- SSL certificates (sometimes imported; verify after)
Best practice: Start with 1 account as a test (if you’re migrating multiple accounts), validate everything, then migrate the rest.
Step 4: Run the Transfer and Monitor Progress #
Let the transfer complete fully. If the tool shows warnings, don’t ignore them—most issues are permission, quota, or connectivity related.
Step 5: Verify on the Destination Server (Before DNS Cutover) #
Before pointing the domain to the new server, verify:
- Website loads (homepage + key pages)
- WordPress admin works (
/wp-admin) if applicable - Database-driven functions work (search, forms, checkout)
- Cron jobs exist (if you rely on scheduled tasks)
- Email accounts exist and mailboxes show expected folders/messages
Tip: Use a staging domain/subdomain or hosts-file testing if you want to validate the live domain without changing DNS.
Method B: Manual Migration (Files + Database) #
Step 1: Copy Website Files #
- Compress your site files on the old host (
public_htmlor domain’s document root) into a ZIP. - Download the ZIP and upload it to the new host’s document root.
- Extract the ZIP and confirm file permissions are correct.
Step 2: Export and Import the Database #
- Old host: open phpMyAdmin → select database → Export (SQL).
- New host: create a database + user → assign privileges.
- New host: phpMyAdmin → Import the SQL file.
Step 3: Update Configuration #
- WordPress: update
wp-config.phpwith new DB name/user/password/host. - Laravel: update
.envand clear cache if needed. - Custom PHP: update DB config values in your config file.
Step 4: Fix URLs (If Domain Is Changing) #
If you are changing the domain name during migration, you may need a search/replace in the database (WordPress commonly stores full URLs). Handle this carefully to avoid breaking serialized data.
DNS Cutover: Migrate the Domain Correctly #
Once the destination is verified, update DNS using one of these:
Option 1: Change Nameservers #
Use this if you want the destination server (or Hosticko) to manage DNS.
Option 2: Update A Record(s) #
Use this if you manage DNS at Cloudflare, your registrar, or an external DNS provider. Update:
- @ (root) A record → destination server IP
- www record → CNAME to root or A record to destination IP
Important: DNS propagation can cause mixed traffic temporarily (some visitors hit old server, some hit new). That’s normal—TTL reduction helps minimize it.
SSL After Migration (Avoid “Not Secure” and Mixed Content) #
- Issue SSL on the new server (AutoSSL / Let’s Encrypt depending on plan).
- Force HTTPS and confirm the site loads with the correct certificate.
- If the site shows mixed content warnings, update internal links from http → https.
WordPress tip: After enabling SSL, update WordPress site URL and clear cache.
Email Migration Notes (Don’t Lose Mail) #
Website migration and domain DNS changes do not automatically mean email migration is done. Email depends on MX records.
- If email is hosted on the source cPanel account and you transfer the account, mailboxes often move too — but verify.
- If email is hosted externally (Google Workspace / Microsoft 365), keep MX records unchanged.
- If you’re moving email to Hosticko, switch MX only when mailboxes are ready and tested.
Common Issues and Fixes #
500 Internal Server Error #
- Check PHP version mismatch.
- Review
.htaccessrules (bad directives can break the site). - Check file permissions and missing PHP extensions.
Error Establishing Database Connection #
- Wrong DB name/user/password in config.
- User not assigned to database or missing privileges.
- Wrong DB host value (often
localhoston shared hosting).
Emails Not Arriving #
- MX records still point to old provider.
- SPF/DKIM/DMARC records not copied correctly during DNS changes.
- Mail client still configured to old server settings.
FAQ #
What’s the safest approach for near-zero downtime? #
Test the migrated site before DNS cutover, reduce TTL in advance, perform the cutover during low-traffic hours, then re-check the site and email flow.
Should I migrate DNS zones too? #
If your destination server will manage DNS, migrating zones saves time. If you use Cloudflare or external DNS, you’ll usually keep DNS there and only update the needed records.
Should I move one site or the full account? #
If the account contains multiple domains, email, and databases you rely on, moving the full account with WHM Transfer Tool is usually cleaner than piecemeal moves.
Need Help? #
If you want Hosticko to review your plan, assist with WHM Transfer Tool, or troubleshoot a migration, submit a ticket here:
https://client.hosticko.com/submitticket.php
