A WordPress site migration has two parts: moving the files and database to the new host, and switching DNS to point your domain at the new server. The migration itself can happen with zero impact on live visitors — the DNS switch is what makes the site "move" publicly, and you control the timing of that step.
Before you start, set aside 2–4 hours for a simple site, or a full day for a large WooCommerce store. Have access to both your old hosting control panel and your new hosting account, and have access to wherever your domain's DNS records are managed (usually your domain registrar).
Before You Start: Take a Backup
Even if migration goes smoothly, start with a current backup of your live site. If your current host provides backups, download one now. If not, install and run All-in-One WP Migration on your current site and export a backup file to your computer.
This backup is your fallback if anything goes wrong. Do not skip it.
Method 1: Plugin Migration (Recommended for Most Sites)
The plugin method is appropriate for most WordPress sites — any site under 512MB in total size (files + database). For larger sites, use the manual method below.
Step 1: Set up WordPress on the new host
Log in to your new hosting control panel and use the one-click WordPress installer to create a fresh WordPress installation. It does not matter what admin credentials you use — the migration will overwrite them. You just need a working WordPress installation at the destination.
Step 2: Install All-in-One WP Migration on both sites
Install and activate All-in-One WP Migration (free, wordpress.org/plugins) on both your old site and your new site. On your old site, go to All-in-One WP Migration → Export → Export to File. This creates a single .wpress archive containing your complete site: all files, all media, and the full database.
Download the .wpress file to your computer.
Step 3: Import on the new host
On your new WordPress installation, go to All-in-One WP Migration → Import → Import from File. Upload the .wpress file. The import process replaces everything on the new installation with your site's content — your theme, plugins, all pages, all media, and the database including users and settings.
After import completes, log in with your original WordPress admin credentials (not the ones you created on the new host — those were overwritten).
Step 4: Test on the new host before switching DNS
Most new hosting control panels provide a temporary URL or a hosts file preview option so you can view the new site before DNS is updated. Check:
- Home page, a few inner pages, and any contact or checkout pages load correctly
- Images and media display correctly
- Navigation links work
- Forms submit correctly (test with a real submission if possible)
- If running WooCommerce: add a product to cart and step through to the payment page
Step 5: Update WordPress URLs on the new host
If you are migrating to a host with a different URL structure (from http:// to https://, or the site was previously on a subdomain), you need to update the WordPress Site URL and Home URL settings. Go to Settings → General in WordPress admin and confirm both URLs match your intended live URL with https://.
Method 2: Manual Migration (Large Sites or Full Control)
The manual method requires FTP/SFTP access and phpMyAdmin (or a database management tool). It handles any site size and gives you full control over what is transferred.
Step 1: Export the database from the old host
Access phpMyAdmin on your old host (available in most hosting control panels under Databases). Select your WordPress database, click Export, choose Quick export format as SQL, and download the .sql file.
Step 2: Download WordPress files from the old host
Connect to your old host via FTP/SFTP (credentials in your hosting control panel). Download your entire WordPress directory — typically public_html/ or the subfolder where WordPress is installed. This includes:
wp-content/— your themes, plugins, and all uploaded mediawp-config.php— your database connection settings (do not lose this file)wp-admin/andwp-includes/— WordPress core files
For a site with a large media library, this download can take significant time. The wp-content/uploads/ directory contains all your media and is typically the largest portion.
Step 3: Create a new database on the new host
In your new hosting control panel, create a new MySQL database, a database user, and assign the user to the database with all privileges. Note the database name, username, and password — you will need them in the next step.
Step 4: Import the database to the new host
Access phpMyAdmin on your new host. Select the new empty database, click Import, and upload the .sql file you exported in Step 1. The database will be populated with all your site data.
Step 5: Upload WordPress files to the new host
Connect to your new host via FTP/SFTP and upload all the WordPress files you downloaded. Once uploaded, edit wp-config.php to update the database connection details to match the new database you created in Step 3:
define( 'DB_NAME', 'new_database_name' );
define( 'DB_USER', 'new_database_user' );
define( 'DB_PASSWORD', 'new_database_password' );
define( 'DB_HOST', 'localhost' );
Step 6: Test, then switch DNS
Test the site on the new host using a temporary URL or hosts file entry as described in Step 4 of the plugin method above. Once you have confirmed everything works, proceed to the DNS switch.
Switching DNS: The Actual Move
This is the step that makes your domain point to the new host. Until you do this, your live site continues running on the old host — visitors are unaffected.
Log in to wherever your domain's DNS is managed (typically your domain registrar — GoDaddy, Namecheap, Google Domains, Cloudflare, etc.). Update the A record for your domain (and the www subdomain) to point to your new host's IP address. Your new host's control panel will display this IP address — look for "server IP" or check the welcome email.
DNS propagation takes 24–48 hours globally, but typically propagates within 1–4 hours for most visitors. During propagation:
- Some visitors will see the old site; some will see the new site — both are live during this window
- If your site accepts user registrations, form submissions, or orders: keep both sites running during propagation to avoid data loss
- For WooCommerce sites: consider scheduling the DNS switch during your lowest-traffic period
After Migration: Checklist
Once DNS has propagated and all visitors are hitting the new host:
- Check SSL: Your new host should have issued an SSL certificate for your domain. Confirm your site loads on
https://with no browser warning. If SSL is not active, initiate it from your new hosting control panel (most provide Let's Encrypt via a single click). - Submit updated sitemap to Google Search Console: Log in to Google Search Console, navigate to Sitemaps, and submit your sitemap URL (typically
yourdomain.com/sitemap.xmlor/sitemap_index.xml). This prompts Google to re-crawl from the new server. - Test all forms and checkout flows: Run through any contact form, subscription form, or checkout on the live domain — not the temporary URL.
- Check email: If your email hosting was on the old host and you have not yet migrated it, update your MX records to point to the new host's mail server.
- Cancel old hosting: Once you have confirmed the new site is running correctly and have downloaded the last backup from the old host, cancel the old account.
Common Issues and How to Fix Them
White screen of death after migration: Usually a PHP version mismatch or a plugin conflict. Check your new host's error log (typically at wp-content/debug.log if you enable WP_DEBUG in wp-config.php). The error log will name the file causing the issue.
Images not loading: Usually a URL mismatch — the database still contains old URLs. Run a search-replace on the database using the Search Replace DB script to update URLs from the old domain or subdomain to the new one.
Login loop on WordPress admin: Usually a cookie domain mismatch or a caching issue. Clear your browser cookies for the domain and try again. If the problem persists, check the COOKIE_DOMAIN constant in wp-config.php and ensure it matches your new domain.
Mixed content warnings (padlock missing on HTTPS): Some hardcoded http:// URLs remain in the database or theme files. Install the SSL Insecure Content Fixer plugin as a quick fix, or run a database search-replace to update http://yourdomain.com to https://yourdomain.com.
We Migrate Sites for Free
If this process looks like more work than you want to take on, we handle WordPress migrations for free for all new Vortex Media hosting customers. We have migrated hundreds of WordPress sites across every host and configuration — if your site has anything non-standard (custom database prefixes, multisite, WooCommerce with thousands of orders), we have seen it before.
Book a free call and we will assess your current site and handle the migration end-to-end.
Related reading: WordPress Hosting Explained • Best WordPress Hosting for Small Business • Vortex Media Migration Service