Every step, in order.
BEFORE
Access to current hosting obtained, or a full backup provided Current DNS records recorded, including MX and TXT Domain registrar access confirmed Timing window agreed with the client TTL lowered if possible
MOVING
Full backup taken from source and downloaded Account created with correct package Files uploaded and extracted Database created, user assigned, dump imported Application configuration updated for new credentials Mailboxes recreated Email downloaded from source by IMAP Cron jobs recreated Permissions and ownership checked
TESTING BEFORE DNS
Hosts file entry pointing at the new server Every page type checked Forms submitted and notifications received Login tested Checkout tested, if applicable
SWITCHING
Nameservers changed Propagation monitored AutoSSL run once resolving Site and mail tested again
AFTER
Old hosting retained for at least a week Client confirmed everything works Documentation updated
THE TWO MOST FORGOTTEN
Email contents, and cron jobs.