WordPress Migrations for Redesigned Sites
Migrating a website to WordPress is a challenge only if you do not prepare.
When migrating a website, you need to take into account the preexisting URL structure as these page are indexed by the search engines. Also - you need to take a look at all of your preexisting content and decide whether or not it is relevant to keep on the new website. Take this URL for example - http://thea.li/article. If I were to migrate over to WordPress -- I'd have to setup the URL structure to match the current structure I have. Otherwise -- I'm going to need to setup permanent 301 redirects.
Now it gets trickier if the site migration involves a brand-new domain name. In order to retain value for currently ranking pages -- I'd need to do what I described above with ensuring URL structures are kept the same or taken into account. Once the new site is up and running -- you should immediately allow search engines to crawl it in order to retain SEO value. Otherwise -- there may be a noticeable dip in traffic -- which can be compensated for by running paid ads.
Following Google Webmaster Guidelines also greatly ensures a successful migration; with all the competition out there -- you need to make sure you do it right. I also like to use their search console, as well as their PageSpeed Insights tool.
A lesson learned from a recent migration (wordpress to wordpress)
A recent migration I did involved the works -- I set it up on a dedicated server which has a 1gbps uplink, SSD, PHP 7, HTTP/2, and I'm looking to further boost their SEO value by adding a secure certificate (SSL). The results so far: organic visitors are increasing, all the while we outranked a competitor (who uses SSL) for a key search term. I believe it was a combination of increase page load, proper migration -- with best practices followed -- as well as proper planning. Before I touched it, I mapped out all of the URLs and I used a plugin called 'Redirection' temporarily to setup the permanent 301 redirects. Later, we stopped using it because it caused too much load time -- it increased the time to first byte by hundreds of milliseconds (which I found out via a performance profiler tool).