WordPress Migration Mistakes

WordPress migration seems straightforward—export your site, upload to a new server, import, done. But in reality, migrations can go wrong in countless ways, from broken links to corrupted databases to complete data loss.

After helping thousands of users migrate their WordPress sites with Migratico Lite, we’ve identified the most common mistakes—and more importantly, how to avoid them.

Mistake 1: Not Creating a Backup Before Migration

The Mistake

You’re so focused on moving to the new server that you forget to create a proper backup of your current site. Then something goes wrong during migration, and you realize you have no way to restore your original site.

Real-World Example

Tom decided to migrate his e-commerce store to a new host. He exported the database using phpMyAdmin and downloaded his files via FTP. During the import on the new server, the database import failed halfway through, corrupting the data. When he tried to restore the original site, he realized his FTP client had deleted files during the download process. His store was offline for 3 days while he tried to recover data.

How to Avoid This

Before starting any migration:

1. Create a complete backup using Migratico Lite or your preferred backup plugin
2. Download the backup to your local computer
3. Verify the backup by checking file sizes and testing a restore on a local server
4. Keep the backup until you’ve confirmed the migration is 100% successful

Pro tip: Create two backups—one immediately before migration, and one from a few days earlier. This gives you multiple restore points if something goes wrong.

How Migratico Lite Helps

Migratico Lite creates a complete, verified backup that includes:
– Entire database (compressed)
– All files (split into manageable chunks)
– Installation wizard for easy restoration
– Automatic verification of all exported files

Mistake 2: Forgetting to Update DNS Too Early

The Mistake

You update your DNS records to point to the new server before the site is fully set up and tested. Visitors start hitting the new server while you’re still configuring things, seeing errors or a broken site.

Real-World Example

Sarah migrated her blog to a new host and immediately updated her DNS. She didn’t realize the new server’s PHP version was incompatible with one of her plugins. For the next 6 hours (while DNS propagated), some visitors saw her working site (old server) while others saw a white screen of death (new server). She lost traffic and received complaints from readers.

How to Avoid This

The correct DNS update sequence:

1. Complete the migration on the new server
2. Test thoroughly using the server’s temporary URL or by editing your hosts file
3. Fix all issues before updating DNS
4. Only then update DNS to point to the new server
5. Monitor the site during DNS propagation (24-48 hours)

Testing without DNS:

Option A: Hosts File Method
1. Edit your hosts file (C:\Windows\System32\drivers\etc\hosts on Windows, /etc/hosts on Mac/Linux)
2. Add: `123.45.67.89 yoursite.com` (use your new server’s IP)
3. Save and test your site
4. Remove the entry after testing

Option B: Temporary URL
Most hosts provide a temporary URL like:
– `http://123.45.67.89/~username/`
– `http://temp.yourhost.com/`

Use this to test before updating DNS.

How Migratico Lite Helps

Migratico Lite’s installation wizard works with any URL, so you can:
1. Install using the temporary URL
2. Test everything thoroughly
3. Update DNS only when ready
4. The site automatically works with the new domain (no reinstallation needed)

Mistake 3: Not Checking PHP and MySQL Versions

The Mistake

You migrate to a new server without verifying it has compatible PHP and MySQL versions. Your site breaks because the new server is running PHP 7.4 but your site requires PHP 8.0+, or vice versa.

Real-World Example

Mike’s WooCommerce store ran perfectly on his old host (PHP 8.1). He migrated to a budget host that only offered PHP 7.4. After migration, his store displayed fatal errors. He had to either upgrade his hosting plan (more expensive) or downgrade his plugins (losing features). The store was offline for 12 hours during the fix.

How to Avoid This

Before migrating:

1. Check your current PHP version:
– WordPress Admin > Site Health > Info > Server
– Or install a plugin like “Display PHP Version”

2. Check your current MySQL version:
– Same location in Site Health

3. Verify the new host supports these versions:
– Contact new host’s support
– Check their documentation
– Look for version selector in cPanel

4. Check plugin requirements:
– Some plugins require specific PHP versions
– WooCommerce, for example, requires PHP 7.4+

Compatibility checklist:
– ✓ PHP version compatible
– ✓ MySQL version compatible
– ✓ Required PHP extensions available (ZipArchive, PDO, etc.)
– ✓ Memory limit sufficient (128 MB minimum, 256 MB recommended)
– ✓ Max execution time adequate (30 seconds minimum)

How Migratico Lite Helps

The installation wizard includes an automatic environment check that verifies:
– PHP version meets requirements
– MySQL version is compatible
– Required extensions are available
– Disk space is sufficient
– Memory limit is adequate

If anything is wrong, you’ll know before the migration starts.

Mistake 4: Using Simple Find-Replace for URLs

The Mistake

You manually update URLs in the database using a simple SQL REPLACE command or a basic search-replace plugin. This breaks serialized data, corrupting widget settings, theme options, and plugin configurations.

Real-World Example

Emma migrated her site from `oldsite.com` to `newsite.com`. She used phpMyAdmin to run:

sql
UPDATE wp_posts SET post_content = REPLACE(post_content, ‘oldsite.com’, ‘newsite.com’);

Her posts looked fine, but all her widgets disappeared, her theme settings reset, and several plugins stopped working. The problem? WordPress stores some data in serialized format, where string lengths matter. Her simple replace changed the URLs but didn’t update the string lengths, corrupting the data.

How to Avoid This

Never use simple find-replace for WordPress URLs.

WordPress stores data in serialized format like this:

a:2:{s:4:”name”;s:4:”John”;s:3:”url”;s:18:”http://oldsite.com”;}

Notice the numbers? `s:18` means “string of length 18”. If you change `oldsite.com` (11 chars) to `newsite.com` (11 chars), it’s fine. But if you change to `mynewsite.com` (13 chars), the length is wrong and WordPress can’t unserialize the data.

The right way:

Use a tool that:
1. Detects serialized data
2. Unserializes it
3. Updates the values
4. Updates the string lengths
5. Reserializes it

Recommended tools:
– Migratico Lite (automatic during migration)
– Better Search Replace plugin
– WP-CLI’s search-replace command
– Interconnect/it’s Search Replace DB script

How Migratico Lite Helps

Migratico Lite uses a Duplicator-inspired search-replace algorithm that:
– Automatically detects serialized data
– Properly updates all string lengths
– Handles nested serialization
– Processes all URL variants (http://, https://, //)
– Updates JSON-escaped URLs
– Preserves data integrity

You don’t have to do anything—it’s all automatic.

Mistake 5: Not Testing After Migration

The Mistake

You migrate your site, see the homepage loads, and assume everything is fine. You don’t test other pages, forms, or functionality. Days later, you discover the contact form doesn’t work, checkout is broken, or images don’t load.

Real-World Example

David migrated his membership site. The homepage looked perfect, so he updated DNS and announced the migration. Three days later, members complained they couldn’t log in. Turns out the login URL had hardcoded references to the old domain that weren’t updated. He lost 50 members who thought the site was broken and canceled their subscriptions.

How to Avoid This

Complete post-migration testing checklist:

Basic Functionality:
– ✓ Homepage loads correctly
– ✓ All menu links work
– ✓ Blog posts display properly
– ✓ Pages load without errors
– ✓ Images display correctly
– ✓ Search functionality works

WordPress Admin:
– ✓ Can log in to admin
– ✓ Can create/edit posts
– ✓ Can upload media
– ✓ Plugins are active
– ✓ Theme settings preserved

Forms and Interactions:
– ✓ Contact form submits
– ✓ Comment form works
– ✓ Newsletter signup functions
– ✓ Search returns results

E-commerce (if applicable):
– ✓ Products display correctly
– ✓ Add to cart works
– ✓ Checkout process completes
– ✓ Payment gateway connects
– ✓ Order emails send

Membership (if applicable):
– ✓ Login/logout works
– ✓ Registration functions
– ✓ Password reset works
– ✓ Member-only content restricted
– ✓ Subscription status correct

Performance:
– ✓ Page load times acceptable
– ✓ No PHP errors in logs
– ✓ No JavaScript console errors
– ✓ SSL certificate working

SEO:
– ✓ Robots.txt accessible
– ✓ Sitemap.xml loads
– ✓ Meta titles/descriptions present
– ✓ Canonical URLs correct

Pro tip: Create a testing checklist specific to your site and save it. Use it for every migration.

How Migratico Lite Helps

After installation, Migratico Lite provides a verification report showing:
– Number of files extracted
– Number of database tables imported
– URLs updated count
– Any warnings or errors

This gives you confidence that the technical migration succeeded, but you still need to test functionality.

Mistake 6: Ignoring File Permissions

The Mistake

After migration, you don’t check or set proper file permissions. This causes issues like:
– Can’t upload media
– Can’t install plugins
– Can’t update WordPress
– Security vulnerabilities

Real-World Example

Lisa migrated her site successfully, but when she tried to upload a new blog post image, she got “Unable to create directory” errors. She spent hours troubleshooting before realizing the wp-content/uploads directory had incorrect permissions (777 instead of 755).

How to Avoid This

Correct WordPress file permissions:

– Directories: 755 (or 750)
– Files: 644 (or 640)
– wp-config.php: 440 or 400 (most secure)

How to set permissions:

Via FTP:
1. Right-click directory/file
2. Choose “File Permissions” or “CHMOD”
3. Set appropriate number
4. For directories, check “Recurse into subdirectories”

Via SSH:
bash
Set directory permissions
find /path/to/wordpress -type d -exec chmod 755 {} \;

Set file permissions
find /path/to/wordpress -type f -exec chmod 644 {} \;

Secure wp-config.php
chmod 440 wp-config.php

Via cPanel:
1. File Manager > Select files/folders
2. Permissions button
3. Set appropriate permissions

Never use 777 permissions – it’s a security risk.

How Migratico Lite Helps

Migratico Lite preserves file permissions during export and restore when possible. However, different servers may require different permissions, so always verify after migration.

Mistake 7: Not Updating Hardcoded URLs

The Mistake

Your theme or plugins have hardcoded URLs that don’t get updated during migration. Links break, images don’t load, or functionality stops working.

Real-World Example

Chris migrated his site and everything looked fine except the logo wouldn’t display. After investigation, he found the theme had a hardcoded logo URL in a custom CSS file:

css
.site-logo {
background-image: url(‘http://oldsite.com/logo.png’);
}

The migration tool updated database URLs but couldn’t update hardcoded URLs in files.

How to Avoid This

Common places for hardcoded URLs:

1. Theme files:
– header.php
– footer.php
– functions.php
– Custom CSS

2. Plugin files:
– Configuration files
– Custom code

3. wp-config.php:
– WP_HOME and WP_SITEURL constants

4. .htaccess:
– Redirect rules
– Rewrite rules

How to find hardcoded URLs:

Method 1: Grep (SSH)
bash
grep -r “oldsite.com” /path/to/wordpress

Method 2: Better Search Replace Plugin
1. Install “Better Search Replace”
2. Search for old URL
3. Check “Search in all files” option
4. Review results

Method 3: Manual Review
Check these files manually:
– wp-config.php
– .htaccess
– Theme’s functions.php
– Custom CSS in theme options

How Migratico Lite Helps

Migratico Lite updates all database URLs automatically. For file-based hardcoded URLs, you’ll need to update them manually after migration. The installation wizard warns you about this and provides guidance.

Mistake 8: Forgetting About Email Configuration

The Mistake

Your old server had email configured (SMTP, mail server, etc.), but the new server doesn’t. After migration, your site can’t send emails—password resets fail, contact forms don’t work, and order confirmations don’t send.

Real-World Example

Rachel migrated her WooCommerce store. Everything worked perfectly except customers weren’t receiving order confirmation emails. She lost several customers who thought their orders failed. The problem? Her old host had SMTP configured, but the new host required explicit SMTP plugin configuration.

How to Avoid This

Before migration:

1. Document your email setup:
– Are you using SMTP?
– What are the SMTP settings?
– Which email plugin are you using?

2. Export email plugin settings:
– Most email plugins have export functions
– Save the configuration

After migration:

1. Test email immediately:
– Send a test email from WordPress
– Try password reset
– Submit a contact form

2. If emails don’t work:
– Install WP Mail SMTP or similar
– Configure with your email provider
– Test again

Recommended email solutions:
– WP Mail SMTP – Works with Gmail, SendGrid, Mailgun, etc.
– SendGrid – Free tier for 100 emails/day
– Mailgun – Free tier for 5,000 emails/month
– Amazon SES – Very cheap, very reliable

How Migratico Lite Helps

Migratico Lite migrates your email plugin settings along with everything else. However, you may need to reconfigure SMTP credentials if they’re server-specific.

Mistake 9: Not Monitoring After Migration

The Mistake

You migrate, test briefly, and then forget about it. Days or weeks later, you discover issues that could have been caught immediately with proper monitoring.

Real-World Example

Paul migrated his blog and everything seemed fine. Two weeks later, he checked Google Search Console and saw 500+ 404 errors. Turns out his permalink structure changed during migration, breaking all his old URLs. He’d lost two weeks of SEO value and traffic.

How to Avoid This

Post-migration monitoring checklist:

First 24 Hours:
– Monitor server error logs
– Check Google Analytics for traffic drops
– Watch for user complaints
– Test all critical functionality multiple times

First Week:
– Check Google Search Console for errors
– Monitor page load times
– Review server resource usage
– Test backups on new server

First Month:
– Compare traffic to pre-migration levels
– Check search rankings
– Review conversion rates
– Analyze any unusual patterns

Tools for monitoring:
– Google Analytics – Traffic monitoring
– Google Search Console – SEO issues
– Uptime Robot – Downtime alerts
– Pingdom – Performance monitoring
– New Relic – Server performance

How Migratico Lite Helps

Migratico Lite ensures a clean migration, but monitoring is your responsibility. Set up monitoring tools before migration so you can catch issues immediately.

Mistake 10: Not Having a Rollback Plan

The Mistake

You migrate without a plan for what to do if something goes catastrophically wrong. When disaster strikes, you panic and make things worse.

Real-World Example

Kevin migrated his site and immediately updated DNS. An hour later, he discovered a critical plugin incompatibility that broke his entire site. He had no rollback plan. He tried to fix it on the fly, making things worse. His site was down for 18 hours while he frantically tried to recover.

How to Avoid This

Create a rollback plan before migrating:

Plan A: Keep Old Server Active
– Don’t cancel old hosting immediately
– Keep it active for 30 days after migration
– If new site fails, simply revert DNS

Plan B: Have Backup Ready
– Create backup before migration
– Test the backup
– Know exactly how to restore it
– Have restoration instructions written down

Plan C: Know How to Revert DNS
– Document current DNS settings
– Know how to change them back
– Understand DNS propagation time
– Have old server’s IP address handy

Rollback decision matrix:

Minor issues (broken plugin, styling problems):
– Fix on new server
– Don’t rollback

Major issues (site completely broken, data loss):
– Rollback immediately
– Fix issues offline
– Migrate again when ready

Critical issues (security breach, data corruption):
– Rollback immediately
– Restore from backup
– Investigate thoroughly before trying again

How Migratico Lite Helps

Migratico Lite makes rollback easy:
1. Keep your backup files
2. If migration fails, you can restore to old server in minutes
3. Or try migration again on new server
4. The backup is your safety net

The Bottom Line

WordPress migration doesn’t have to be risky. By avoiding these 10 common mistakes, you can ensure a smooth, successful migration:

1. ✓ Create proper backups
2. ✓ Update DNS at the right time
3. ✓ Verify server compatibility
4. ✓ Use proper URL replacement
5. ✓ Test thoroughly
6. ✓ Set correct file permissions
7. ✓ Update hardcoded URLs
8. ✓ Configure email
9. ✓ Monitor after migration
10. ✓ Have a rollback plan

Ready to migrate without mistakes? Download Migratico Lite and follow our proven migration process.