Prepare the new account
Buy the plan, pick the data center you want (the one nearest your visitors, chosen at checkout), and set up the domain on the new account without changing DNS. The new host will give you a temporary address or an IP for testing. If the new host offers a managed migration (Flashcloud, Hosting.com, FastComet, InMotion, HostPapa and ScalaHosting all list one on their plan pages; SiteGround has an automatic WordPress migrator), request it now and tell them you will handle DNS yourself.
Lower the TTL on your domain’s A and MX records to 300 seconds today. The TTL change needs a day to reach every resolver; our DNS propagation article explains why.
Back up everything on the old host
Files and database, separately, downloaded to your own machine. The WordPress documentation on migrating lists the same first step: back up the WordPress directory, images, plugins and files, and the database. If the old host has a backup tool, use it, then also export the database from phpMyAdmin or with WP-CLI so you have a plain SQL file.
wp db export backup.sql
Check the file sizes. A database export of 2 KB is an error page, not a database.
Copy the site to the new server
Upload the files to the new account’s web root and import the database into a new database there. Edit wp-config.php with the new database name, user and password, which the WordPress documentation lists as the step after the backup. For a static site, the upload is the whole job.
If the domain is not changing, nothing else needs editing. If it is, the documentation is clear: references to the old domain will remain in the database and cause issues, so run a search-replace. It recommends WP-CLI’s wp search-replace 'old.example' 'new.example' --skip-columns=guid or a search-replace plugin, and it says never to change the contents of the GUID column, under any circumstances, because feed readers use it to identify posts.
Test the new copy before switching
Visit the site on the new server without changing DNS. Either use the host’s temporary address, or add a line to your computer’s hosts file that points your domain at the new server’s IP so only your browser goes there. Click through the admin, the contact form, the checkout if there is one, and a few deep pages. Fix what is broken now; it is far easier while the old site is still serving everyone else.
203.0.113.10 example.com www.example.com
Remove that line when you are done testing.
Switch DNS
Change the A record (and AAAA if you have one) to the new server’s address. If email moves too, change MX at the same time, otherwise leave it. With a 300-second TTL most visitors arrive at the new server within minutes. Watch both servers’ logs if you can; the old one should go quiet.
If the new host uses its own nameservers and you want to switch to them, do that after the A-record move has settled, not during it. Nameserver changes propagate slowly.
Keep the old host alive, then close it
Leave the old account running for at least the length of the old TTL, and longer if the site takes orders: a few visitors will still land there. For a store, put the old site in maintenance mode once the new one is live, so nobody orders on the copy that will be deleted. Copy across any emails that arrived on the old mailboxes. Then raise the TTL back to an hour or a day, confirm the new site has been backed up at least once by the new host, and cancel the old plan within its refund or billing window.