# Best Practices
Follow these best practices to ensure smooth and successful WordPress migrations with minimal issues.
# Common Migration Scenarios
# Scenario-to-method map
| Scenario | Recommended method | Why |
|---|---|---|
| Move from any host to PanelAlpha | Automatic (Plugin) | Fastest, least friction, supports stop/retry |
| WP admin blocked / 2FA enforced | Automatic (FTP/SFTP) | Bypasses WP admin access requirements |
| Client auto-migration failed | Manual (admin) | Admin controls uploads, can verify before run |
| Very large site (10GB+ / 500MB+ DB) | Manual (admin, off-hours) | More control, avoids timeouts, can resume/retry steps |
| Cross-server move inside PanelAlpha | Automatic (Plugin) or FTP | Minimal downtime; keeps audit trail |
| Security-sensitive client | Automatic (FTP) or Manual | Avoids sharing WP admin credentials |
Learn more:
- Plugin vs FTP: Migration Types
- Large sites: For Large Sites
- Failed client imports: Manual Migrations
# For Automatic Migrations
# Client Education
Provide clear instructions on both import methods (plugin vs FTP)
- Create documentation or video tutorials
- Explain when to use each method
- Show step-by-step process
Set expectations:
- Migration time depends on site size
- Large sites may take several hours
- Some downtime may be required
Prepare checklist for clients:
- Backup source site before migration
- Disable security plugins temporarily
- Note any custom configurations
- Document any .htaccess rules
# Method Selection
Recommend plugin method as default:
- More reliable and user-friendly
- Better error handling
- Automatic cleanup
- Works for most cases
Use FTP method when:
- WordPress admin access not available
- Security plugins block auto-login
- Two-factor authentication cannot be disabled
- Client prefers not to share admin credentials
# Monitoring
Check In Progress tab daily:
- Identify stuck migrations
- Take action on alerts
- Contact clients if needed
Review failures regularly:
- Identify common issues
- Address systemic problems
- Update documentation based on patterns
Track success rates:
- Monitor which hosting providers have issues
- Document problematic configurations
- Share findings with team
# For Manual Migrations
# Preparation
Prepare files beforehand:
- Have clients create files before starting migration
- Test file integrity locally
- Verify ZIP can be extracted
- Check SQL file for syntax errors
Check file naming:
- Exactly
wordpress-files.zip - Exactly
database.sql(or.sql.gz,.sql.zip,.sql.tar.gz) - Case-sensitive on Linux servers
- Exactly
Verify file contents:
- ZIP must contain WordPress root files
- No nested WordPress folder in ZIP
- SQL must include all WordPress tables
- Check for correct database prefix
# File Optimization
Use compression for large files:
- Gzip database dumps:
database.sql.gz - Can reduce size by 80-90%
- Faster upload times
- Supported formats:
.gz,.zip,.tar.gz
- Gzip database dumps:
Optimize before packing:
- Remove unused themes/plugins from source
- Clean up media library
- Delete cache files
- Remove old backups from wp-content
Test extraction locally:
- Verify ZIP extracts correctly
- Check file permissions are preserved
- Ensure no corruption
# Upload Process
Use reliable FTP client:
- FileZilla, Cyberduck, or similar
- Enable resume support
- Use binary transfer mode
- Monitor upload progress
Verify immediately:
- Don't wait to verify uploads
- Do it right after upload completes
- Check error messages carefully
- Retry if verification fails
Monitor logs during import:
- Keep Migration Details modal open
- Watch for warnings
- Take note of any issues
- Be ready to assist if needed
# For Large Sites
# Definition of Large Sites
Consider a site "large" if:
- Total size over 5GB
- Database over 500MB
- More than 10,000 files
- Many large media files
# Planning
Schedule during off-hours:
- Migrate during low-traffic periods
- Reduces impact on source server
- Better network performance
- Less chance of timeouts
Consider manual migration:
- More control over process
- Can pause and resume
- Better for sites over 10GB
- Easier to troubleshoot
Communicate with client:
- Set realistic time expectations
- Explain potential downtime
- Provide progress updates
- Have backup plan ready
# Technical Preparation
Check server resources:
- Verify adequate disk space (3x site size)
- Ensure sufficient RAM for import
- Check PHP memory_limit (512MB+)
- Verify MySQL max_allowed_packet (256MB+)
Optimize source site:
- Clean up database before export:
- Delete spam comments
- Remove post revisions:
wp post delete $(wp post list --post_type='revision' --format=ids) - Clean transients:
wp transient delete --all
- Compress images
- Remove unused plugins/themes
- Clean up database before export:
Split if necessary:
- Consider migrating files and database separately
- Use staging approach for critical sites
- Test on subdomain first
# Monitoring
Watch progress closely:
- Keep Migration Details modal open
- Monitor logs in real-time
- Check server load on destination
- Watch for timeout warnings
Have support ready:
- System admin on standby
- Client contact available
- Rollback plan prepared
# Security Considerations
# Credential Management
Temporary FTP accounts:
- Always removed automatically after migration
- Limited access to temporary directory only
- Secure password generation
- Short-lived credentials
Source credentials:
- Not stored after migration completes
- Transmitted over secure connections
- Access logs maintained
- Client can change after migration
Database passwords:
- Visible only to admins with appropriate privileges
- Stored encrypted in PanelAlpha
- Never logged in plain text
- Rotated after migration if desired
# Access Control
Role-based access:
- Limit who can initiate manual migrations
- Restrict access to migration logs
- Audit trail for all actions
- Review permissions regularly
Plugin cleanup:
- Migration plugin removed from source if auto-installed
- Temporary files deleted
- Staging directories cleaned
- No artifacts left behind
# Compliance
Audit trail:
- All migrations logged with timestamps
- User actions recorded
- Error details captured
- Retention policy followed
Data protection:
- Files transferred over secure protocols
- Temporary storage encrypted
- Backups before migration
- GDPR compliance maintained
# Testing and Validation
# Pre-Migration Checklist
- ✅ Backup source site
- ✅ Verify source WordPress version
- ✅ Check PHP version compatibility
- ✅ Note custom configurations
- ✅ Document current DNS settings
- ✅ Record current SSL setup
- ✅ List active plugins
- ✅ Note theme customizations
# DNS Cutover
Before switching DNS:
- Test site on destination server (hosts file or temp domain)
- Verify all functionality works
- Ensure SSL is active
- Check email delivery
During cutover:
- Lower DNS TTL 24 hours in advance
- Update DNS records
- Monitor propagation
- Keep source site running until confirmed
After cutover:
- Verify site loads on new server
- Check from multiple locations
- Monitor for any issues
- Keep backup of source site for 1-2 weeks
# Documentation and Knowledge Sharing
# Internal Documentation
Document patterns:
- Which hosting providers work well
- Common issues by provider
- Workarounds for known problems
- Server-specific configurations
Create runbooks:
- Step-by-step procedures
- Troubleshooting flowcharts
- Emergency contacts
- Escalation procedures
Share learnings:
- Team meetings to discuss issues
- Knowledge base articles
- Update documentation regularly
- Train new team members
# Client Communication
Pre-migration:
- Send preparation guide
- Set expectations for timeline
- Explain potential downtime
- Provide support contacts
During migration:
- Send progress updates
- Notify of any delays
- Be available for questions
- Provide ETA for completion
Post-migration:
- Send completion notification
- Provide new credentials
- Explain next steps (DNS change, etc.)
- Offer testing checklist
# Performance Optimization
# Before Migration
Clean source database:
wp db optimize wp transient delete --all wp cache flushRemove unnecessary files:
- Old backups in wp-content
- Cache directories
- Error logs
- Temp files
# After Migration
Set up caching:
- Enable object caching if available
- Configure page caching
- Set appropriate cache TTLs
- Test cache functionality
Optimize database:
wp db optimize wp rewrite flushConfigure PHP settings:
- Set appropriate memory_limit
- Enable OPcache
- Configure max_execution_time
- Set upload_max_filesize
# Related Documentation
- Migration Types - Choose the right method
- Import Process - Understand the steps
- Troubleshooting - Solve common issues
- Managing Migrations - Monitor migrations