With the prep done, the move itself is methodical rather than difficult.
Step 1 — Choose your migration method
You’ve two broad options: manual (moving files via FTP/SSH and the database via a database manager) or plugin-based. For the overwhelming majority of migrations, a plugin is faster, safer, and far less error-prone.
- All-in-One WP Migration — the simplest option. Good for straightforward sites where you want a one-click export and import.
- Duplicator — more control and better suited to larger or more complex sites, though it asks a little more of you technically.
Reach for the manual route only when a site is too large for plugins to handle comfortably, or when you want granular control over the database.
Step 2 — Export the site
Use your chosen plugin to package the site into a single downloadable file — the whole site, database included. Let it finish completely before you do anything else; interrupted exports are a common source of corrupted packages.
Step 3 — Set up the new environment
Get the destination ready before you import. Create the hosting account, set up an empty database, and — importantly — match or exceed the PHP version your site currently runs on. Importing a modern site onto an outdated PHP version is a reliable way to break things on arrival.
Step 4 — Import to the new environment
Install WordPress and your migration plugin on the new host, then import your package. The usual snag here is a server file-size upload limit that’s smaller than your package. You can raise it by editing php.ini or .htaccess, or by asking your host to lift it temporarily — most will.
Step 5 — Update the site URLs
If your domain is changing, the old domain will be baked into your database in hundreds of places. Don’t try to find-and-replace this by hand — WordPress stores some data in a serialised format that breaks if edited carelessly. Use the Better Search Replace plugin, which handles serialised data safely, to swap the old domain for the new one throughout the database.
Step 6 — Test before you go live
This is the step that separates calm migrations from chaotic ones. Before pointing your domain anywhere, preview the migrated site on the new server using a temporary URL or your local hosts file. Then work through a proper checklist: do all pages load, do images display, do forms submit, do any integrations still fire, and — if it’s a shop — does checkout complete? Fix everything you find here, while nobody’s watching.
Step 7 — Point the domain (DNS)
Once you’re happy, update your domain’s DNS to point at the new host. Changes propagate across the internet over a period known as DNS propagation, which can take anywhere from a few minutes to 48 hours. You can shorten the window of uncertainty by lowering your DNS TTL a day or two in advance, so the switch takes effect faster when you make it.
Step 8 — Set up your 301 redirects
If any URL changed during the migration, every old URL must 301 redirect to its new equivalent. No exceptions. This is where your Screaming Frog spreadsheet earns its keep. You can implement redirects with the Redirection plugin for smaller sets, or at server level via .htaccess for larger, cleaner, faster handling. Test a sample afterwards to confirm they’re firing as 301s (permanent), not 302s (temporary) — Google treats the two very differently.
Step 9 — Post-migration checks
Launch isn’t the finish line. Straight away:
- Re-crawl the live site with Screaming Frog to catch broken links and redirect chains.
- Check Search Console for new crawl errors and coverage issues.
- Resubmit your XML sitemap.
- Confirm GA4 is still tracking on the new setup.
- Verify SSL/HTTPS is active and there’s no mixed-content warning.
- Re-test every form and integration on the live environment.
- If the domain changed, run Search Console’s Change of Address tool.
Then keep watching. Compare traffic and rankings against the baseline you captured, and give it a few weeks before drawing conclusions — a brief dip during recrawling is normal.