Discuss project

Website migration checklist: how not to lose traffic

Moving to a new CMS, domain or URL structure. I break down what actually breaks, how to build the redirect map and what to check in the first two weeks after the switch.

Vladislav KrivorutskoSeptember 5, 202610 min read
Contents

TL;DR - key points

  • Traffic is lost not because of the move itself but because of four things: uncovered redirects, titles and body text lost in transfer, a robots.txt block left on production, and broken hreflang
  • The mapping document “old URL → new URL” is built before development, not on launch day: it doubles as the acceptance document
  • The Change of Address tool in Search Console only applies to a domain change and does nothing for a URL structure change inside the same domain
  • A 2–6 week dip after a correct migration is normal; the warning sign is not falling rankings but growth in the “Not found (404)” and “Page with redirect” categories of the indexing report
  • Keep the old site reachable for at least another month: without it there is nothing to compare against when a page turns out to be missing content

The short answer

A migration loses traffic in four places: uncovered 301 redirects, titles, descriptions and body text lost during the transfer, a noindex or Disallow: / accidentally left on production, and broken hreflang markup on a multilingual site. Everything else is secondary.

So the whole checklist collapses into one document: the mapping “old URL → new URL” covering every address that produced impressions or clicks in the last 12 months. The map is built before development starts. If it appears on switch day, the migration has already failed; you will simply find out three weeks later.


Traffic drops from four things, not from the move

The move itself is neutral for Google: Search Central describes a site move as a routine procedure and states that with page-level 301s the signals transfer to the new addresses. The same holds for a server change, which I covered in the article on whether hosting affects rankings. The drop happens where the move loses something on the way.

What breaksWhat the symptom looks likeWhere you see it
Some old URLs lead nowhereThe “Not found (404)” category grows after 1–2 weeksSearch Console, “Page indexing” report
Redirect points to the homepage instead of an equivalentAddresses drop out of the index as soft 404Search Console plus a crawl of old URLs
New pages inherited template titlesImpressions hold, CTR fallsPerformance report, comparison by page
Disallow: / or noindex left on productionImpressions collapse on day 3–7, sharply and site-widePage indexing report, URL inspection
hreflang points at old addressesThe wrong language version shows in searchCrawl and Search Console reports

That last row is specific to Estonian projects. After a move, a site in three languages often ends up with hreflang pointing at the previous Estonian and Russian addresses, and Google stops linking the versions together. I covered the typical mistakes in that markup separately in the article on hreflang setup.


The URL mapping decides the outcome

The map is a two-column table with one rule: every old address has exactly one new address carrying the same meaning. Not “a similar section”, but the page the visitor actually followed the link for. Completeness is measured against 12 months of impressions in Search Console, not against the row count of the old sitemap.xml.

The map is assembled from four sources, and none of them covers everything: a crawl sees only what is linked, Search Console only what was shown in search, logs only the last month.

  1. A crawl of the old site (Screaming Frog, Sitebulb) gives the addresses reachable through internal links.
  2. A 12-month Performance export by page gives the addresses that actually bring traffic, including ones nothing on the site links to any more. Those are orphan pages, and a crawl will not show them.
  3. A month of server logs shows which addresses Googlebot still requests and which ones receive people from external links.
  4. The old sitemap.xml gives what was meant to be indexable.

Then each address gets one of three decisions: a 301 to its equivalent; a 404 or 410 if no equivalent exists and none is coming; or the page keeps its current address untouched. The third option is the most underrated one: if the URL structure is already sane, there is no reason to change it while moving to a new CMS. The difference between 301, 404 and 410 is covered in the article on what deleted pages should return.

The work around switch day−14 daysURL map,title snapshot−1 daycontentfreezeday 0301s, sitemap,robots.txt+14 days404s andredirect chains+30 daystraffic checkedpage by pageThe old site stays reachable on a backup address for this whole period:without it there is nothing to compare lost text and titles againstThe red dot is the only irreversible step. Everything to its left is done in advance,everything to its right verifies that the preparation was right.

What to capture from the old site before the switch

Before the release you take a snapshot of the old site: not a file backup, but 4 datasets you will use 30 days later to find what went missing. All 4 are captured on the same day, including the 12-month Search Console export, so the dates line up.

  • A crawl export with columns for URL, title, description, H1, word count and response code. The file goes into the project repository, not into an email thread.
  • A 12-month Performance export, separately by page and by the query-to-page pairing. Search Console keeps 16 months of data, but it will not restore the link between old and new URLs after the move.
  • A list of external links at the level of specific URLs, not domains: those are the addresses you cannot afford to lose under any circumstances.
  • A ranking snapshot for the core keyword set, so that a month later the discussion is about numbers rather than impressions.

On staging exactly four things get checked: whether it is closed to indexing (basic auth is safer than robots.txt), whether titles and body text match the map, whether new addresses return 200 without intermediate redirects, and whether the new sitemap.xml is generated. How it should work together with robots.txt is covered in the article on sitemap.xml and robots.txt.


Switch day: the order of operations

  1. Remove basic auth from staging and open the new site.
  2. Remove noindex and check production robots.txt by hand, opening /robots.txt in a browser. This is the single most failed step: Disallow: / travels from staging to production with depressing regularity.
  3. Turn on the 301 redirects from the map. Page by page, not with a blanket rule sending everything old to the homepage.
  4. Submit the new sitemap.xml in Search Console and leave the old one reachable: it helps the crawler find the redirects faster.
  5. For a domain change, file the request through the Change of Address tool.
  6. Check the tracking: GA4 and Tag Manager fall off during a template change more often than redirects do.
  7. Run the old URLs from the map through a crawler and confirm each one returns 301 in a single hop.

Step seven is the acceptance test: 100 % of the addresses in the map answer with a 301 in one hop, zero chains of two or more redirects. Until a crawler confirms that, the release is not closed, even if the site looks fine.


What to watch in the first two weeks

Check the “Page indexing” report in Search Console daily. Three categories matter: “Not found (404)”, “Page with redirect” and “Duplicate, Google chose different canonical than user”. The first shows holes in the map, the second shows redirect chains, the third shows that new addresses compete with each other, meaning the site now has duplicate content.

Speed gets its own check: a new theme usually drags in fonts, sliders and scripts that were not there before. Core Web Vitals field data in Search Console is calculated over a rolling 28-day window, so the first assessment has to come from lab measurements in PageSpeed Insights compared against the pre-release state.


How long the dip lasts and when to worry

From what I see on migrations of small service sites, things stabilise in two to three weeks. On catalogues with several thousand pages it runs into months: Google does not recrawl addresses simultaneously, and part of the old URLs sit in the index until the crawler gets to them. That is not a fault, that is crawl budget.

The warning sign is not the drop itself but its shape.

  • A gradual decline that recovers within 2 to 3 weeks is a normal transition.
  • A collapse across the whole site within the first three days means noindex or a blocked robots.txt.
  • A drop confined to one section means a missing chunk of the redirect map.
  • A flat plateau noticeably below the old level six weeks in means lost content: text was trimmed during the template transfer, and traffic will not return until the text does.

What breaks most often on Estonian projects

Three things repeat from project to project. First: the developer migrates the Estonian version and leaves Russian and English “for later”, so the site spends a month with broken language links. Second: Estonian addresses handle täpitähed differently, the old URL carried õ percent-encoded while the new one transliterates it to o, and addresses stop matching where nobody expected a mismatch. Third: on the old site the Russian version lived on a subdomain and on the new one it lives in a folder, so no redirect map is built for that subdomain at all, because the crawl ran on the main domain.

All three are caught by one habit: crawl the old site in Screaming Frog separately for each language section, and build a separate mapping for the Estonian, Russian and English version.

Frequently asked questions

How much traffic do you lose after a site migration?
With a correct migration the dip usually lasts 2–6 weeks while Google recrawls the old addresses and transfers signals to the new ones. The depth depends on size: on a 50-page site the drop is often invisible, on a catalogue with tens of thousands of URLs reindexing stretches into months. A drop that has not started recovering after two months almost always means a real loss: uncovered redirects, body text cut during the transfer, or a section blocked from indexing.
Do I need the Change of Address tool in Search Console?
Yes, but only when the domain changes. The tool tells Google the whole site moved from domain A to domain B and speeds up the transfer of signals. For a URL structure change inside one domain it does not apply at all: there only 301 redirects and an updated sitemap do the work. The prerequisite is that both domains are verified in the same Search Console account and page-level 301s are already live on the old one.
How long should 301 redirects stay in place after a migration?
At least a year, ideally permanently. Google states that roughly a year is enough for signals to transfer, but redirects also serve external links, bookmarks and old emails that live much longer. Removing them makes sense only when server logs show that neither people nor crawlers request the old addresses any more.
Can rankings survive a domain change?
Rankings move with the signals if three conditions hold: page-level 301s without chains, identical or better content on the new addresses, and the move confirmed through the Change of Address tool. There are no guarantees though: a domain change means Google re-evaluates a new address from scratch. I always build extra time into such a project and never combine a domain change with a redesign and rewritten copy in one release.
What do I do if traffic dropped after the move and is not coming back?
Compare two lists: the URLs that brought traffic in the three months before the move (Performance report in Search Console, export by pages) and the URLs bringing traffic now. The difference shows exactly which pages were lost. Then check the chain for each one: does the old address return 301, does it point to a genuine equivalent, does the new address return 200, does it carry the same text, and is it allowed in robots.txt.
Should a redesign happen at the same time as the migration?
Technically it can, diagnostically it is a bad idea. If addresses, layout and copy all change at once, a traffic drop gives you no way to isolate the cause: broken redirects, weaker content or worse speed. On projects where the cost of a mistake is high I split this into two releases about a month apart: first the move on the same texts, then the content changes.

Conclusion

A site move is a data operation, not a server operation: as long as a complete URL mapping and a pre-switch copy of the old titles, descriptions and body text exist, any loss can be located and restored. Once the mapping is gone, recovery turns into archaeology through Google cache and the Wayback Machine. That is why the most critical part of the project happens before the developer writes the first line of the new template. If a large catalogue or a multilingual site is about to move, I run migration support as part of [SEO services](/en/seo) and the build of the new site as part of [web development](/en/web-development).

About the author

Vladislav Krivorutsko — founder of ADLAB
Vladislav Krivorutsko

Founder of ADLAB OÜ · SEO and Google Ads

Over 20 years in search traffic and monetization, and on the Estonian market since 2017. I work solo: I run the audit, build the strategy and deliver the project myself — no subcontractors, no templates. I only write about what I have tested on my own and client sites.

  • 20+ years in search traffic
  • 50+ end-to-end projects
  • Own sites in competitive niches
  • SEO for ru/et/en in one market
More about me

Read next