Last month I moved 100 WordPress sites from WP Engine to Kinsta. The following are some things I learned and recommendations for doing bulk migrations from WP Engine to Kinsta.
Warning: Transfer no more then 10 sites per hour per datacenter due to Let’s Encrypt rate limits.
Ok this might seem silly, but it’s not. Let’s say you queue up to move a batch of 20 sites during a single night – all moving to the same datacenter. In the morning when you go to update DNS and apply new Let’s Encrypt certs, you’ll discover their rate limits.
- 10 domains per hour
- 10 failures every 3 hrs
A temp fix would be to copy over the existing SSL cert from WP Engine, however it’s very hit or miss in terms of WP Engine supplying that. Generally speaking, WP Engine doesn’t grant you access to those SSL certs, which means you have to work within the rate limitations for new SSL certs.
Step 1: Export your list of WP Engine shared users.
This is important to do first as you won’t be able to see this info after a WP Engine site has been removed. Simply go to https://my.wpengine.com/accounts/{account-name}/users and save the page locally. At the end of the migration we can use this offline list to send out invites to Kinsta’s portal.
Step 2: Plan out the migration with a Google Spreadsheet.
There are two improvements you can take advantage of that are specific for moving a site from WP Engine to Kinsta. Kinsta allows for longer site names, and allows you to choose a specific datacenter per site.
Start a Google spreadsheet that includes the following: WP Engine Site Name, Kinsta Site Name, Kinsta Datacenter, HTTPS Status, Started, Completed, DNS Updated, SSL Installed and Test URL. Most of the columns can be used to track status during the migration. However before you start moving sites fill out at minimal: WP Engine Site Name, Kinsta Site Name and Kinsta Datacenter.
Step 3: After all sites are planned, begin individual site migrations.
There are two ways you can handle moving the sites over. You can pay to have Kinsta do the bulk migrations for you or do them yourself. If you have Kinsta do the migration simply share the Google Doc with them and grant them access to your WP Engine account. It couldn’t be any easier.
Step 4: Switch DNS, apply SSL and move other WP Engine specifics over.
If your using a decent DNS provider then you can safely apply a new Let’s Encrypt SSL a few minutes after DNS updates are applied. However, if you’re using something like Network Solutions it typically takes a full hour before SSL will install successfully. Keep in mind you can only generate ten failures before you’ll have to wait three hours before you try again.
There are a few other WP Engine specifics which need manually moved over.
- Move redirections rules from https://my.wpengine.com/installs/{install-name}/redirect_rules over to Kinsta’s redirection rules section.
- Move caching exclusion rules from https://my.wpengine.com/installs/{install-name}/advanced over to Kinsta’s caching plugin.
Step 5: Cleanup on WP Engine
I’d recommend doing the following cleanup on WP Engine a few days after all activity has stopped.
- Create and download fresh snapshots for all WP Engine environments: https://my.wpengine.com/installs/{install-name}/backup_points
- Verify all domain mappings are inactive: https://my.wpengine.com/installs/{install-name}/domains. Correct any that are still active.
- Delete the WP Engine site: https://my.wpengine.com/installs/{install-name}.
Tip: Use https://skipdns.link to preview sites before updating DNS.
I only heard about this amazing little tool from the Kinsta migration team. With SkipDNS.link you can preview both the live site and the new site copy over at Kinsta before you switchover DNS. This is way better then using the local HOSTS file. The preview is fully functionally which means you can interact with the WordPress backend by simply adding /wp-admin
to the preview URL. This is also way easier than using a proxy, and it’s shareable.