Kinsta offers free WordPress migrations done by their team — it's one of the underrated parts of their service. But if you want to do it yourself (faster, more control), this is the complete process including the DNS cutover that keeps your current site live until the new one is ready.
Two Options: DIY or Kinsta's Team
Kinsta's free migration service:
- Submit a request through your MyKinsta dashboard
- Their team handles file transfer, database import, and staging verification
- Timeline: 24–48 hours depending on site size
- Limitation: you need to trust someone else has hands on your database
DIY migration:
- Takes 45–60 minutes for most sites
- You control every step
- Faster for small-to-medium sites
- Required if you want to do it during off-hours
This guide covers the DIY approach. If you prefer Kinsta's team, the process is: MyKinsta → Sites → Add new site → Migrate existing site → fill in form.
Before You Start
Check your site size:
# Run on your current server
du -sh /var/www/html/wp-content/
mysqldump --no-tablespaces -u DBUSER -p DBNAME | wc -c
For sites under 5GB, this process takes under an hour. For larger sites, plan for 2–3 hours.
Create a staging site on Kinsta first:
- MyKinsta → Add new site → Create new WordPress site
- Choose your data center (closest to your audience)
- Note the temporary domain:
yoursite.kinsta.cloud
Step 1: Export Your Current Site
Option A — Via WP plugin (easier): Install the All-in-One WP Migration plugin on your current site. Export to file. If your site is under 2GB, this is the simplest path.
Option B — Manual (recommended for larger sites):
Export the database:
mysqldump --no-tablespaces -u DBUSER -p DBNAME > site-backup.sql
Archive the WordPress files:
tar -czf wp-content-backup.tar.gz /var/www/html/wp-content/
Download both files to your local machine.
Step 2: Upload Files to Kinsta
Connect to your new Kinsta site via SFTP (credentials in MyKinsta → Sites → [your site] → SFTP/SSH):
sftp kinsta_username@sftp.kinsta.cloud
cd /www/sitename/public/wp-content/
put -r ./wp-content/uploads/
put -r ./wp-content/themes/
put -r ./wp-content/plugins/
Or use FileZilla for a GUI alternative if you prefer not to use SFTP commands.
Step 3: Import the Database
In MyKinsta, go to Sites → [your site] → Database → phpMyAdmin.
- Select your database in the left panel
- Import tab → Choose file → select your
.sqlfile - Click Import
For sites with databases over 500MB, use the SSH method instead:
# Connect via SSH (credentials in MyKinsta)
mysql -u kinsta_db_user -p kinsta_db_name < site-backup.sql
Step 4: Update wp-config.php
Kinsta auto-configures wp-config.php when you create the site. But if you imported an existing wp-config.php, you need to update the database credentials:
# In MyKinsta → Sites → Info, find your DB credentials
define('DB_NAME', 'your_kinsta_db_name');
define('DB_USER', 'your_kinsta_db_user');
define('DB_PASSWORD', 'your_kinsta_db_pass');
define('DB_HOST', 'localhost');
Also add if it's not there:
define('WP_CACHE', true);
Step 5: Update URLs in the Database
Your database still has your old domain. Run this from MyKinsta → Sites → [your site] → SSH:
wp search-replace 'https://oldsite.com' 'https://yoursite.kinsta.cloud' --all-tables
This updates all references including serialized PHP data — don't manually search-replace in SQL, it breaks serialization.
Step 6: Verify on the Temporary Domain
Visit https://yoursite.kinsta.cloud and check:
- Site loads correctly
- Images appear
- Navigation works
- If WooCommerce: test a product page and cart
- Admin login works at
yoursite.kinsta.cloud/wp-admin
Common issues at this stage:
- Mixed content warnings: SSL is already on Kinsta but your database has
http://links. Run the search-replace command again:wp search-replace 'http://yoursite.kinsta.cloud' 'https://yoursite.kinsta.cloud' - Plugin activation failures: Some plugins store full file paths. Deactivate and reactivate them.
Step 7: DNS Cutover (Zero Downtime)
This is the part most guides get wrong. The goal: your old site stays live until Kinsta is fully working.
Before changing DNS:
- In MyKinsta, add your real domain: Sites → Domains → Add domain
- Kinsta will provision a free SSL certificate automatically (takes 2–5 minutes)
- Run the search-replace again with your real domain:
wp search-replace 'https://yoursite.kinsta.cloud' 'https://yourrealsite.com' --all-tables
The DNS change:
- Lower your TTL to 300 seconds (5 minutes) at least 24 hours before the switch
- At the cutover moment: change your A record to Kinsta's IP (shown in MyKinsta → Domains)
- DNS propagates within 5–30 minutes with a low TTL
During propagation: some visitors still hit your old host. That's fine — both are running the same database state from before the cutover. There's no data divergence as long as you switch DNS and point your domain within 15 minutes.
Step 8: Post-Migration Checklist
Once DNS has propagated:
- Run Google PageSpeed Insights — verify LCP improvement
- Enable Kinsta's Nginx cache in MyKinsta → Cache
- Enable Redis object cache: install the Redis Object Cache plugin → connect to Kinsta's Redis endpoint
- Submit updated sitemap to Google Search Console
- Monitor 404 errors in Search Console for 7 days (some URLs may have changed)
- Cancel your old hosting (most billing cycles, you have a few weeks)
What to Expect After Migration
In our tests, moving a WooCommerce site from SiteGround to Kinsta reduced TTFB from 441ms to 312ms — a 29% improvement. LCP dropped from 1.6s to 0.8s with Kinsta's caching and Redis configured.
The migration itself is the easy part. The performance gains are immediate and measurable. The question is whether your site's revenue justifies the $35/mo vs whatever you were paying. For most WooCommerce stores doing $5k+/mo, it does.