— all systems operational
HCWeb Hosting Centre
Migrations

Migrating WordPress and other CMS sites to WHC

WordPress, Joomla, Drupal — three ways to move a CMS site (plugin, manual, or we do it), with the gotchas specific to CMS migrations.

Published 6 min read

CMS migrations are different from static site migrations because the CMS holds its content in a database, not in files. That means an extra step — moving the database — and a couple of common gotchas around URLs and serialised data.

The good news: WordPress (and to a slightly lesser extent Joomla and Drupal) have well-developed migration tooling. You have three good options.

Three ways to migrate a CMS site

MethodTimeComplexityBest for
Migration plugin30-60 minLowStandard sites under 2 GB
Manual export/import1-3 hoursMediumLarger sites or non-standard setups
We do it for you1-2 hours activeZero on your sideAny size, especially if you’re not technical

The right choice depends on site size, your comfort with the technical bits, and whether you’ve consolidated everything with us (domain + DNS + hosting) so we can take the migration end-to-end.

Option 1: Migration plugin (WordPress)

For WordPress, the best plugins are:

  • Duplicator — solid for small/medium sites; free version covers most cases
  • All-in-One WP Migration — very easy UI; free version has a size limit (around 512 MB) that can be a problem on larger sites
  • WPvivid Backup & Migration — good free tier, handles large sites
  • Migrate Guru — managed cloud service, good for hands-off migrations

The general flow with any of them:

  1. Install the plugin on the old WordPress site
  2. Create a full backup/export file (the plugin packages files + database into one archive)
  3. Download that archive to your computer
  4. On the new WHC hosting account, install fresh WordPress (one-click install in Enhance)
  5. Install the same migration plugin on the new WordPress
  6. Upload the archive and run the import
  7. Test, then switch DNS

Each plugin has slight variations. Read the plugin’s docs for the exact steps.

Option 2: Manual export/import

For non-WordPress CMSes or when plugins aren’t viable, the manual flow:

Files:

  1. Connect to your old host via SFTP and download everything in the web root
  2. Upload to your new WHC hosting account’s web root via the hosting panel’s file manager or SFTP

Database:

  1. On the old host, open phpMyAdmin → select your CMS database → Export → SQL → Go
  2. On Enhance, create a new database (Databases → Create database; note the name, user, password)
  3. Open phpMyAdmin on Enhance → click the new database → Import → choose the SQL file → Go

Configuration:

Update the CMS’s database config file with the new credentials:

  • WordPress: wp-config.php — update DB_NAME, DB_USER, DB_PASSWORD, DB_HOST (usually localhost)
  • Joomla: configuration.php — update $user, $password, $db, $host
  • Drupal: sites/default/settings.php — update the $databases array

Option 3: We do it for you

Open a migration ticket in the billing portal. Tell us:

  • Your current host (so we know what control panel/access method to expect)
  • Either your old host’s login or a recent backup file
  • The domain(s) involved
  • Any deadline you’re working to

We do the file transfer, database move, URL update, and DNS switch. You test at the temporary URL before we cut over. Typically 1-2 hours of active work, finished same day in most cases.

This is the most reliable option, especially for non-technical site owners or for high-traffic sites where downtime is expensive.

CMS-specific gotchas

These are the issues that trip people up specifically on CMS migrations.

Hardcoded URLs in the database

WordPress (and most CMSes) store some URLs directly in the database — particularly in post content, theme settings, and serialised plugin data. After migration, those URLs still point at the old site.

The fix:

  • WordPress: install Better Search Replace (free plugin), search for http://oldsite.com and replace with https://newsite.com. Tick the “dry run” box first to preview changes. Handles serialised data correctly (raw SQL find-and-replace doesn’t).
  • Joomla/Drupal: similar plugins exist, or use the database tools in your control panel.

wp-config.php site URL constants

If WordPress is still trying to redirect to the old domain after migration, your wp-config.php might have these lines hardcoded:

define( 'WP_HOME', 'http://oldsite.com' );
define( 'WP_SITEURL', 'http://oldsite.com' );

Update or remove them. Without these constants, WordPress reads the URL from the database (which Better Search Replace updates).

Salt keys

Don’t copy the wp-config.php AUTH_KEY lines verbatim from the old site — they’re fine if you do, but for security best practice, regenerate at api.wordpress.org/secret-key/1.1/salt. All existing logged-in users will be logged out, which is what you want.

Plugin licences tied to old domain

Premium plugins (Yoast, WooCommerce extensions, Elementor Pro, Gravity Forms) often have domain-based licensing. Reactivate them after migration. Most plugin vendors honour reactivations without making you buy a new licence.

Theme/plugin file permissions

Sometimes file permissions don’t transfer cleanly. If you see “could not establish FTP connection” errors when trying to install or update plugins/themes post-migration, fix permissions:

  • Directories: 755
  • Files: 644
  • wp-config.php: 600 or 644

Hosting panel → File Manager → right-click → Permissions, or via SFTP.

Image URLs in posts

If your site has years of posts with embedded images, those <img> tags might reference the old domain. Better Search Replace covers this, but check after migration.

Page cache plugins

If you’re using a cache plugin (WP Super Cache, W3 Total Cache, WP Rocket), clear its cache after migration and reconfigure. Cached pages often hardcode the old domain.

Specific to WooCommerce

If you’re migrating a WooCommerce store, also:

  • Disable payment gateways temporarily during the test phase so test orders don’t trigger real charges
  • Backup your orders database table before any database manipulation
  • Test checkout end-to-end on the temporary URL before switching DNS
  • Re-verify payment gateway domain settings (Stripe, PayPal etc. tie credentials to a domain)

Stores with active orders mid-migration are the trickiest case — open a ticket and we’ll plan a maintenance window.

After migration checklist

Once you’ve switched DNS and your CMS is running on WHC:

  • Log in to admin and check everything works
  • Test contact forms (recipient email may have been your old hosting email)
  • Test checkout if it’s an e-commerce site
  • Reactivate premium plugin licences
  • Run search-and-replace if any URLs still reference the old domain
  • Submit your sitemap to Google Search Console (the IP and hosting changed, but the URLs didn’t — should be invisible to Google but a sitemap re-ping doesn’t hurt)
  • Cancel the old hosting after a few days

Where to go next

Tags: migration wordpress migration joomla migration drupal migration cms migration duplicator all-in-one wp migration
Was this helpful?

Let us know — or open a ticket if you're still stuck.