Overview
A successful migration requires transferring both files and database, testing before DNS cutover, then enabling SSL and validating email sending.
Preparation
- Take a full backup from the old host
- Schedule a freeze window (avoid content changes during migration)
- If possible, lower DNS TTL to 300 seconds 24 hours before cutover
Manual migration steps
1) Create database on new hosting
- cPanel → MySQL Databases
- Create DB, create user, assign user with ALL privileges
2) Upload WordPress files
- Upload via SFTP or File Manager into public_html
- Avoid nesting errors (public_html/public_html)
3) Export and import database
- Export from old host via phpMyAdmin
- Import to new host via phpMyAdmin
4) Update wp-config.php
- Set DB_NAME, DB_USER, DB_PASSWORD, DB_HOST (usually localhost)
5) Test before DNS cutover
- Use a temporary URL/preview method if available
- Confirm homepage, key pages, wp-admin login, images, forms
DNS cutover
- Nameservers change OR A record change (depending on your DNS strategy)
After cutover
- Run AutoSSL / install SSL
- Force HTTPS
- Configure SMTP2GO for forms and WooCommerce emails
- Monitor error logs
Common migration problems
- 500 errors: PHP version mismatch or plugin conflict
- Missing images: upload path issues or incomplete file copy
- Redirect loops: mixed HTTPS rules, Cloudflare flexible SSL, or wrong site URL