{"id":5177,"date":"2026-03-25T04:02:57","date_gmt":"2026-03-24T20:02:57","guid":{"rendered":"http:\/\/longzhuplatform.com\/?p=5177"},"modified":"2026-03-25T04:02:57","modified_gmt":"2026-03-24T20:02:57","slug":"the-checks-that-make-or-break-your-next-website-migration","status":"publish","type":"post","link":"http:\/\/longzhuplatform.com\/?p=5177","title":{"rendered":"The checks that make or break your next website migration"},"content":{"rendered":"<p><\/p> <div> <p>Website migrations have a well-earned reputation for going wrong, with even well-planned migrations leading to rankings slipping, traffic dropping, or tracking breaking. But most migration problems come from small oversights rather than complex technical failures.<\/p> <p>You can reduce your risk with a staged approach. The checks you complete during staging, on launch day, and in the first few weeks after go-live often determine whether a migration stabilizes quickly or becomes a long recovery project.<\/p> <h2 id=\"before-launch-catch-issues-on-staging\" class=\"wp-block-heading\">Before launch: Catch issues on staging\u00a0<\/h2> <p>Most migration problems should be found and fixed on the staging site. If issues reach the live site, recovery is slower and more uncertain. Set yourself up for success with the following tips:<\/p> <h3 class=\"wp-block-heading\" id=\"h-keep-the-staging-site-private-even-from-crawlers-nbsp\">Keep the staging site private (even from crawlers)\u00a0<\/h3> <p>One common mistake is leaving the staging site publicly indexable. When Google crawls a staging environment, duplicate content can sometimes end up in search results. Rankings can fluctuate, and unfinished pages may end up indexed. <\/p> <p>Make sure you have blocked crawlers from staging site or protected it with a password so it remains invisible to search engines until the live launch.\u00a0<\/p> <p>It\u2019s not just crawlers, either. I\u2019ve seen this happen with ecommerce sites. <\/p> <p>Customers found the staging site, tried to place orders, and the process didn\u2019t work. This confused customer service teams, frustrated buyers, and created avoidable pressure internally.\u00a0<\/p> <div style=\"background: radial-gradient(circle at 30% 40%, rgba(184, 111, 255, 0.15), rgba(0, 169, 255, 0.15) 40%, #CDE8FD 70%); padding: 30px; width: 100%; max-width: 802px; color: #000000 !important; font-family: Arial, sans-serif; margin: 25px 0 30px 0; border-radius: 8px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); position: relative; box-sizing: border-box;\"> <div style=\"width: 100%; max-width: 100%; margin-bottom: 20px; text-align: left; padding-right: 20px; box-sizing: border-box;\"> <p> Your customers search everywhere. Make sure your brand <span style=\"background: linear-gradient(90deg, #D56EFE 0%, #068EF8 51%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\">shows up<\/span>. <\/p> <p id=\"semrush-one-subhead\" style=\"font-family: Roboto, sans-serif; font-size: 18px; font-weight: 300; line-height: 25px; margin: 12px 0 0 0; color: #000000 !important;\"> The SEO toolkit you know, plus the AI visibility data you need. <\/p> <\/p><\/div> <p> <span id=\"semrush-one-cta\" style=\"display: inline-block; background-color: #FF642D; color: white; height: 44px; border: none; border-radius: 5px; cursor: pointer; font-size: 16px; padding: 0 24px; font-weight: bold; white-space: nowrap; box-sizing: border-box; text-decoration: none; line-height: 44px;\">Start Free Trial<\/span> <\/p> <div style=\"font-size: 12px;\"> <p>Get started with<\/p> <p> <img loading=\"lazy\" width=\"400\" height=\"52\" decoding=\"async\" alt=\"Semrush One Logo\" style=\"height: 16px; width: auto; display: block;\" src=\"https:\/\/searchengineland.com\/wp-content\/seloads\/2025\/11\/semrush-one.webp\" title=\"The checks that make or break your next website migration\u63d2\u56fe\" \/><img loading=\"lazy\" width=\"400\" height=\"52\" decoding=\"async\" src=\"https:\/\/searchengineland.com\/wp-content\/seloads\/2025\/11\/semrush-one.webp\" alt=\"Semrush One Logo\" style=\"height: 16px; width: auto; display: block;\" title=\"The checks that make or break your next website migration\u63d2\u56fe1\" \/> <\/div> <\/p><\/div> <\/p> <h3 class=\"wp-block-heading\" id=\"h-take-benchmarks-nbsp\">Take benchmarks\u00a0<\/h3> <p>You want a baseline to help you identify real problems rather than reacting to normal short-term movement. <\/p> <p>Record organic sessions, rankings, top landing pages, indexed pages, conversions, and site speed before transitioning to the new site to define the \u201cnormal\u201d you will compare the new site to.\u00a0<\/p> <h3 class=\"wp-block-heading\" id=\"h-identify-priority-pages-nbsp\">Identify priority pages\u00a0<\/h3> <p>Focus on pages that drive traffic, revenue, or attract links. These pages need extra care during redirect mapping, content review, and testing. <\/p> <p>Pay extra attention to internal links, redirects, and URL rules for these pages.<\/p> <p><strong><em>Dig deeper: Website migrations: a plan to keep your traffic and SEO safe<\/em><\/strong><\/p> <h3 class=\"wp-block-heading\" id=\"h-review-templates-and-content-continuity-nbsp\">Review templates and content continuity\u00a0<\/h3> <p>Templates control titles, headings, metadata, canonical tags, structured data, copy, and media. If templates break, problems repeat across hundreds of pages.\u00a0<\/p> <p>Check that:<\/p> <ul class=\"wp-block-list\"> <li>Titles and headings are present and accurate.\u00a0<\/li> <li>Canonical tags use full URLs and point to live pages.\u00a0<\/li> <li>Structured data has transferred correctly.\u00a0<\/li> <li>Copy, images, and internal links are intact.<\/li> <\/ul> <p>This step protects more than rankings. It ensures the site still meets user needs and supports conversions. <\/p> <p>Make sure canonical tags use full URLs and point to live pages, as explained in Google\u2019s guide on canonical URLs. This simple step can prevent bigger headaches later.\u00a0<\/p> <h3 class=\"wp-block-heading\" id=\"h-be-intentional-about-url-changes\">Be intentional about URL changes<\/h3> <p>Unnecessary URL changes are a common source of hidden damage. Changes made for design or CMS convenience often introduce risk without a clear benefit.\u00a0<\/p> <p>Typical issues include:\u00a0<\/p> <ul class=\"wp-block-list\"> <li>Adding or removing trailing slashes without a clear rule.\u00a0<\/li> <li>Changing folder structures without reason.<\/li> <li>Inconsistent use of uppercase and lowercase URLs.<\/li> <\/ul> <p>One of the most common causes of duplicate URLs during migrations is inconsistent handling of trailing slashes. URLs with and without a trailing slash are treated as different URLs. Allowing both to resolve can create duplicate content, dilute signals, and complicate crawling.\u00a0<\/p> <p>It doesn\u2019t usually matter which version you choose, as long as the rule is consistent across the site. During a migration, avoid unintentionally switching between formats without a clear plan and proper redirects in place.\u00a0<\/p> <p>The same goes for folder structures and capitalization. Don\u2019t change what you don\u2019t need to, and be consistent wherever possible.<\/p> <p>In one migration where we were brought in to rescue a site after go-live, every URL gained a trailing slash. Canonical tags only contained paths rather than full URLs, and internal links relied on redirects instead of pointing directly to final URLs. None of the changes were necessary, yet together they slowed crawling, caused confusion, and delayed recovery.\u00a0<\/p> <h3 class=\"wp-block-heading\" id=\"h-map-redirects-and-compile-existing-ones-nbsp\">Map redirects and compile existing ones\u00a0<\/h3> <p>Redirect mapping is one of the highest-risk areas of any migration. Existing redirects should be pulled from the CMS, CDN, Google Search Console, analytics platforms, and backlink tools so nothing is missed. Every legacy URL needs a clear, intentional destination.\u00a0<\/p> <p>If pages are removed, redirect to the closest relevant alternative. If no equivalent exists, return a 404 or 410. Avoid sending everything to the homepage or top-level categories.\u00a0<\/p> <p>Aleyda Solis\u2019 guide to SEO for web migrations provides a strong framework for this stage.<\/p> <h3 class=\"wp-block-heading\" id=\"h-decide-what-to-remove-and-what-to-create\">Decide what to remove and what to create<\/h3> <p>Migrations are often seen as a good time to refresh all the content on a site. This can be done if all the stakeholders align, but it should be done methodically. <\/p> <p>Remove outdated content carefully. Where gaps exist in the new structure, plan new pages in advance and make sure they are ready to go live when the new site is. This planning avoids lost coverage or weak redirect decisions later.\u00a0<\/p> <h3 class=\"wp-block-heading\" id=\"h-verify-search-console-access-and-settings-nbsp\">Verify Search Console access and settings\u00a0<\/h3> <p>Ensure the site can be verified after launch and that any international or country settings are correct.\u00a0<\/p> <h3 class=\"wp-block-heading\" id=\"h-align-stakeholders-early-nbsp\">Align stakeholders early\u00a0<\/h3> <p>Pre-launch is also about people. Developers, designers, SEO, and analytics teams need clarity on responsibilities and deadlines. Many migration issues happen through missed handovers rather than a lack of skill.\u00a0<\/p> <p>In my experience, most migration failures are preventable before launch, when fixes are safer and faster.\u00a0<\/p> <p>I worked on one migration where SEO was brought after launch. The site launched with broken internal links, missing redirects for high-traffic pages, and inconsistent URL rules. Organic traffic dropped by almost 40% within two weeks, and several priority pages disappeared from search results. All of these issues were visible on the staging site but weren\u2019t reviewed before launch.\u00a0<\/p> <p>Make the case for SEO to be part of the planning process. It saves time, money, and headaches.<\/p> <p><strong><em>Dig deeper: Website migration checklist: 11 steps for success<\/em><\/strong><\/p> <p><!-- START INLINE FORM --><\/p> <div class=\"nl-inline-form border py-2 px-1 my-2\"> <div class=\"row align-items-center nl-inline-container\"> <div class=\"col-12 col-lg-3 col-xl-4 pe-md-0 pb-2 pb-lg-0\"> <p class=\"inline-form-text text-center mb-0\">Get the newsletter search marketers rely on.<\/p> <\/p><\/div> <\/p><\/div> <\/div> <p><!-- END INLINE FORM --><\/p> <hr class=\"wp-block-separator has-text-color has-cyan-bluish-gray-color has-css-opacity has-cyan-bluish-gray-background-color has-background\"\/> <h2 id=\"launch-day-verify-everything-works-on-the-live-site\" class=\"wp-block-heading\">Launch day: Verify everything works on the live site<\/h2> <p>Launch day is where preparation meets reality, and all teams, including SEO, developers, designers, and analytics, see the results of their planning. What worked on staging must now work on the live site. Even small oversights can immediately affect rankings, traffic, conversions, user experience, and reporting.\u00a0<\/p> <p>Calm, thorough verification ensures the migration pays off and prevents small errors from becoming lasting issues. Use this list as a starting point:<\/p> <h3 class=\"wp-block-heading\" id=\"h-test-redirects-at-scale\">Test redirects at scale<\/h3> <p>Spot-checking isn\u2019t enough. Every mapped URL should redirect once and resolve cleanly. Avoid redirect chains and loops. They slow down crawling and delay signal consolidation.\u00a0<\/p> <p>In another migration we were called in to fix, only the top 50 pages had correct redirects. Thousands of other URLs redirected to the homepage. Rankings dipped, and recovery took months longer than expected.\u00a0<\/p> <h3 class=\"wp-block-heading\" id=\"h-crawl-the-live-site-nbsp\">Crawl the live site\u00a0<\/h3> <p>Run a full crawl as soon as the site is live. Compare results with the staging crawl to identify differences.\u00a0<\/p> <p>Look for:<\/p> <ul class=\"wp-block-list\"> <li>Broken links.<\/li> <li>Redirected internal links.<\/li> <li>Missing pages.\u00a0<\/li> <li>Server errors.<\/li> <\/ul> <h3 class=\"wp-block-heading\" id=\"h-check-internal-links-and-navigation-nbsp\">Check internal links and navigation\u00a0<\/h3> <p>Menus, breadcrumbs, and in-content links should point directly to live URLs. Leaving internal links to rely on redirects increases load and risk.\u00a0<\/p> <h3 class=\"wp-block-heading\" id=\"h-verify-on-page-seo-and-content-nbsp\">Verify on-page SEO and content\u00a0<\/h3> <p>Canonicals or hreflang pointing to staging URLs are a common launch issue. Confirm titles, headings, canonical tags, hreflang, copy, and media all reference the live site.\u00a0<\/p> <p><strong><em>Dig deeper: How to run a successful site migration from start to finish<\/em><\/strong><\/p> <h3 class=\"wp-block-heading\" id=\"h-confirm-tracking-continuity-nbsp\">Confirm tracking continuity\u00a0<\/h3> <p>GA4, paid media tags, and social pixels should already be in place before launch. This ensures tracking fires correctly, conversions are measured accurately, and historical data remains intact when the live site goes public. Remember, the staging site should be blocked from crawling or be protected behind a password to prevent test traffic from polluting reporting.\u00a0<\/p> <p>In one migration, we were asked to review after launch. The domain stayed the same, but a new GA4 property was created during the redesign. Historical data remained in the original property, while new data was collected in the new one, making post-launch comparisons difficult.\u00a0<\/p> <p>Keeping the same GA4 property preserves reporting continuity, supports confident decision-making, and avoids unnecessary uncertainty at a critical point in the migration.\u00a0<\/p> <h3 class=\"wp-block-heading\" id=\"h-check-robots-txt-and-index-controls-nbsp\">Check robots.txt and index controls\u00a0<\/h3> <p>Ensure pages meant to be indexed are accessible and that noindex tags are only used where intended. If you use services like Cloudflare, it\u2019s also important to check that your robots.txt and content signals are configured correctly.\u00a0<\/p> <p>For example, Cloudflare\u2019s default setting may block AI training access while allowing search indexing. If this isn\u2019t adjusted intentionally, AI models might pull content from third-party sources rather than your site, affecting how your brand is represented in generative AI outputs.\u00a0<\/p> <h3 class=\"wp-block-heading\" id=\"h-submit-the-xml-sitemap-nbsp\">Submit the XML sitemap\u00a0<\/h3> <p>Submit the live sitemap to Google Search Console to support the discovery of new URLs.\u00a0<\/p> <h3 class=\"wp-block-heading\" id=\"h-review-site-speed-nbsp\">Review site speed\u00a0<\/h3> <p>Check Core Web Vitals and page performance. A redesigned site can still load heavier assets than expected.\u00a0Launch day is about verification, not assumption.\u00a0<\/p> <h2 id=\"after-launch-monitor-and-stabilize-performance\" class=\"wp-block-heading\">After launch: Monitor and stabilize performance<\/h2> <p>Even the best-planned migrations can reveal surprises once search engines and real users interact with the site. Small errors that didn\u2019t appear on staging can impact rankings, traffic, and conversions. <\/p> <p>Calm, structured monitoring in the days and weeks after launch ensures problems are caught quickly before they affect performance or user experience.\u00a0Here\u2019s what to keep an eye on.<\/p> <ul class=\"wp-block-list\"> <li><strong>Monitor Search Console closely:<\/strong>\u00a0Watch for crawl errors, indexing issues, and unexpected exclusions. Patterns matter more than isolated URLs.\u00a0<\/li> <li><strong>Check indexed pages:<\/strong>\u00a0Expect some movement, but sustained drops can point to redirect or crawl problems.\u00a0<\/li> <li><strong>Track rankings and traffic against benchmarks:<\/strong> Compare performance against your baseline rather than reacting to day-to-day changes.\u00a0<\/li> <li><strong>Confirm redirects still receive traffic:<\/strong>\u00a0Old URLs can attract users and bots for months. Ensure they continue to resolve correctly.\u00a0<\/li> <li><strong>Recheck site speed under real traffic:<\/strong>\u00a0Performance can shift once the site is under load.\u00a0<\/li> <li><strong>Audit for follow-up improvements:<\/strong>\u00a0Once stability returns, review internal linking gaps, missing metadata, and content that did not migrate cleanly.\u00a0Calm monitoring and clear data prevent small issues from becoming lasting damage.<\/li> <\/ul> <p><strong><em>Dig deeper: Technical SEO post-migration: How to find and fix hidden errors<\/em><\/strong><\/p> <div style=\"background: radial-gradient(circle at 30% 40%, rgba(184, 111, 255, 0.15), rgba(0, 169, 255, 0.15) 40%, #CDE8FD 70%); padding: 30px; width: 100%; max-width: 802px; color: #000000 !important; font-family: Arial, sans-serif; margin: 25px 0 30px 0; border-radius: 8px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); position: relative; box-sizing: border-box;\"> <div style=\"width: 100%; max-width: 100%; margin-bottom: 20px; text-align: left; padding-right: 20px; box-sizing: border-box;\"> <p> See the <span style=\"background: linear-gradient(90deg, #D56EFE 0%, #068EF8 51%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\">complete picture<\/span> of your search visibility. <\/p> <p id=\"semrush-one-subhead-bottom\" style=\"font-family: Roboto, sans-serif; font-size: 18px; font-weight: 300; line-height: 25px; margin: 12px 0 0 0; color: #000000 !important;\"> Track, optimize, and win in Google and AI search from one platform. <\/p> <\/p><\/div> <p> <span id=\"semrush-one-cta-bottom\" style=\"display: inline-block; background-color: #FF642D; color: white; height: 44px; border: none; border-radius: 5px; cursor: pointer; font-size: 16px; padding: 0 24px; font-weight: bold; white-space: nowrap; box-sizing: border-box; text-decoration: none; line-height: 44px;\">Start Free Trial<\/span> <\/p> <div style=\"font-size: 12px;\"> <p>Get started with<\/p> <p> <img loading=\"lazy\" width=\"400\" height=\"52\" decoding=\"async\" alt=\"Semrush One Logo\" style=\"height: 16px; width: auto; display: block;\" src=\"https:\/\/searchengineland.com\/wp-content\/seloads\/2025\/11\/semrush-one.webp\" title=\"The checks that make or break your next website migration\u63d2\u56fe\" \/><img loading=\"lazy\" width=\"400\" height=\"52\" decoding=\"async\" src=\"https:\/\/searchengineland.com\/wp-content\/seloads\/2025\/11\/semrush-one.webp\" alt=\"Semrush One Logo\" style=\"height: 16px; width: auto; display: block;\" title=\"The checks that make or break your next website migration\u63d2\u56fe1\" \/> <\/div> <\/p><\/div> <\/p> <h2 id=\"what-normal-recovery-looks-like-after-a-migration\" class=\"wp-block-heading\">What normal recovery looks like after a migration<\/h2> <p>Even well-managed migrations can see short-term movement. Rankings may fluctuate, and traffic may dip before stabilizing.\u00a0<\/p> <p>If redirects are clean, content is intact, and crawl access is clear, recovery usually follows within weeks rather than months. Ongoing losses usually point to structural issues rather than algorithm changes.\u00a0<\/p> <p>Knowing when to wait and when to act comes from experience. You don\u2019t want to react too quickly or too late. Keep a careful eye on your analytics, and you\u2019ll develop the expertise over time.<\/p> <p>Website migrations succeed when they are planned, tested, and monitored at every stage. A clear focus on pre-launch, launch day, and post-launch checks protects visibility, performance, and confidence across teams.\u00a0<\/p> <p>When SEO is involved early, and checks are clearly owned, migrations stop feeling like crisis events and become managed change.\u00a0<\/p> <\/div> <p> <em>Contributing authors are invited to create content for Search Engine Land and are chosen for their expertise and contribution to the search community. Our contributors work under the oversight of the editorial staff and contributions are checked for quality and relevance to our readers. Search Engine Land is owned by Semrush. Contributor was not asked to make any direct or indirect mentions of Semrush. The opinions they express are their own.<\/em> <\/p> <p>Opinion#checks #break #website #migration1774382577<\/p> ","protected":false},"excerpt":{"rendered":"<p>Website migrations have a well-earned reputation for going wrong, with even well-planned migrations leading to rankings slipping, traffic dropping, or tracking breaking. But most migration problems come from small oversights rather than complex technical failures. You can reduce your risk with a staged approach. The checks you complete during staging, on launch day, and in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5178,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[7650,19170,18117,155,354],"class_list":["post-5177","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-careers","tag-break","tag-checks","tag-migration","tag-opinion","tag-website"],"acf":[],"_links":{"self":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/posts\/5177","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5177"}],"version-history":[{"count":0,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/posts\/5177\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/media\/5178"}],"wp:attachment":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5177"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}