Your new site is live, the redirects appear to work, and organic traffic is still falling. The dangerous response is to assume you have a content or ranking problem. A migration can leave valuable pages outside Google’s index while crawlers keep revisiting the old host, empty pages, duplicate URLs, or automatically generated dead ends.
Traffic recovery starts by locating the exact break in the search pipeline. Once you know whether the failure sits in the redirect, crawl, render, indexing, or ranking stage, you can fix the dependency that is holding everything else back.
Find the broken stage before changing your content
A page has to pass through four practical stages before it can earn search traffic: crawl, render, index, and rank. These stages are connected, but they are not interchangeable. A page can be crawled without being indexed, indexed without ranking, or ranked while your analytics implementation fails to record the resulting visit.
That distinction matters because the remedies are different. Rewriting an article will not repair a redirect chain. Building links will not correct a canonical that still names the old domain. Improving Core Web Vitals will not make an empty page with a 200 success response useful.
Start with a migration worksheet built from Google Search Console, analytics, your redirect map, and server logs if you have them:
- Preserve the before-and-after baseline. Export page-level clicks and impressions for both the old and new properties. Keep the old property in your reporting instead of looking only at the destination domain.
- Build a priority URL set. Take the old landing pages that produced the most organic traffic and map each one to its intended destination. Group them by template, content type, country, language, and directory.
- Test the complete URL pair. Record the old URL’s response, every redirect hop, the destination response, the destination canonical, and its current index status. A successful browser load is not enough.
- Inspect exclusions by pattern. Export the Page indexing reasons from Search Console. Group soft 404, duplicate, discovered-not-indexed, and crawled-not-indexed URLs by template rather than reviewing them individually.
- Check where crawling is going. Compare crawl activity on the old and new hosts. Continued crawling of a large obsolete URL inventory is evidence that consolidation is incomplete or that old URLs remain discoverable.
- Separate search loss from measurement loss. If Search Console clicks remain stable while recorded organic sessions collapse, audit analytics, consent, and tagging. If clicks and impressions fall together, continue through the search pipeline.
Read the pattern, not just the total
Old URLs still receive crawl activity while new URLs remain excluded: suspect an incomplete handoff. Check redirect coverage, internal links, XML sitemaps, canonicals, and regional annotations.
New URLs are crawled but not indexed: the move may be technically reachable, but Google is not accepting the pages into the index. Look for duplicates, thin templates, conflicting canonicals, soft 404s, and large collections of low-value URLs competing for crawl attention.
New URLs are indexed but have fewer impressions: the migration handoff may be working while relevance, internal authority, content changes, or search demand account for the remaining loss. That is when ranking analysis becomes useful.
Do not let a nearby algorithm update end the diagnosis. Updates can complicate the timeline, but they do not explain a wrong canonical, a missing redirect, or a new URL that remains excluded. In one domain move, daily clicks fell from roughly 15,000-25,000 to 2,000-4,000, and the lower level persisted for more than a year while the old domain continued to consume crawl activity. That was not ordinary post-launch turbulence.
Repair the migration as a URL-level contract

A domain migration is not one redirect from an old homepage to a new homepage. It is a contract for every URL that previously carried content, links, traffic, or index history. Each old URL needs a deliberate outcome.
| Old URL condition | Correct outcome | Signals to align |
|---|---|---|
| A clear equivalent exists | Send a direct permanent redirect to that equivalent | Destination returns 200, uses the intended canonical, and receives updated internal links |
| The content was consolidated | Redirect to the closest page that preserves the old intent | Destination meaningfully covers the old topic; avoid a generic homepage redirect |
| No replacement exists | Return a real 404 or 410 response | Remove the URL from internal links and XML sitemaps |
| A duplicate new variant was created | Consolidate it onto one preferred URL | Canonical, internal links, redirects, and sitemap inclusion all name the same preferred version |
Use a permanent redirect such as 301 or 308 when the move is permanent, and make it one hop wherever possible. A chain from the old domain to an intermediate URL and then to the final URL creates more opportunities for conflicting signals and failed requests. Redirecting unrelated retired pages to the homepage does not preserve their relevance and can look like another form of soft 404.
Then align every signal on the destination site:
- Internal navigation, contextual links, pagination, breadcrumbs, and alternate-language links should point directly to final URLs.
- Each indexable destination should return 200 and declare the intended canonical. A self-referencing canonical is usually the clearest choice for a unique migrated page.
- XML sitemaps should contain canonical destination URLs, not redirecting, missing, or duplicate URLs.
- Protocol, hostname, trailing-slash, parameter, and case variants should resolve consistently.
- Country and language versions should be tested separately. A correct English migration does not prove that a Brazilian, German, Polish, Spanish, or French host inherited the same configuration.
- The old host must remain able to serve its redirect responses. Shutting it down removes the handoff search engines still need to crawl.
Validate representative URLs outside the CMS preview and outside an authenticated session. Test high-traffic pages, deep pages, paginated archives, media URLs, and every distinct template. If one category template emits an old canonical, checking the homepage will never reveal it.
Avoid launching a second migration simply because recovery is slow. Changing the domain or URL structure again replaces a diagnosable handoff with another layer of redirects and uncertainty. Stabilize the current destination, repair the mappings, and collect evidence before considering a reversal.
Clear soft 404s and low-value URL factories
A soft 404 occurs when a URL returns a successful 200 response but provides little or no meaningful content. The server says the request succeeded; the page itself behaves as though nothing useful exists. At scale, these URLs create an inventory that search engines must repeatedly discover, fetch, classify, and exclude.
The problem is often structural rather than editorial. Automatically generated combinations can create thousands of pages without a deliberate search purpose. One migration recovery uncovered currency-converter URLs such as thin combinations generated for currencies with little useful content. Those pages competed for crawl attention while time-sensitive news pages waited to be indexed.
Audit soft 404s by URL pattern. A list containing hundreds of thousands of exclusions is not hundreds of thousands of separate writing assignments. It is usually a smaller set of templates, rules, or generators producing the same failure repeatedly.
- Group URLs by their generating rule. Look for shared directories, parameters, slugs, taxonomies, conversion pairs, empty search results, and expired entities.
- Decide whether each group deserves to exist. A real page should answer a distinct user need and contain the information its title and URL promise. If the template cannot do that, stop generating the URLs.
- Return the truthful status. Use 404 or 410 for content that does not exist and has no replacement. Use a permanent redirect only when a genuinely equivalent destination exists.
- Remove discovery paths. Delete invalid URLs from sitemaps, navigation, related-content modules, pagination, and other internal link sources. Otherwise crawlers may continue finding them after their status is fixed.
- Consolidate duplicates. Make the canonical, internal links, sitemap, and redirect behavior agree on one preferred version.
- Recheck the rendered page. A server-rendered shell can return 200 while the useful content fails to appear. Confirm that a crawler receives the primary content, not only a placeholder or error message.
Do not interpret every crawled-not-indexed URL as a crawl-budget problem. Google may also exclude pages it considers low value or duplicative. Your job is to separate legitimate canonical pages from junk inventory. Improve the pages that should rank; retire or consolidate those that should not.
Likewise, do not use robots.txt as cleanup paint. Blocking a path may reduce future crawling, but it does not correct bad status codes, remove invalid internal links, or let a crawler see a page-level indexing directive. Fix URL creation and discovery at the source. Noindex can be appropriate for valid user-facing pages that do not belong in search, but it is not a substitute for stopping an unlimited invalid URL pattern.
The scale of this problem can be easy to underestimate. One Brazilian property accumulated 513,369 URLs in Crawled – currently not indexed. After the migration and indexing work, that count fell by 57%, soft 404s fell by 69%, and traffic began moving upward within weeks. Those percentages are not a universal recovery benchmark. They show why removing a template-level bottleneck can matter more than optimizing isolated pages.
Run recovery in dependency order and prove it by cohort

Migration recovery becomes slower when several teams make unrelated changes at once. Freeze nonessential URL, template, navigation, and rendering changes long enough to establish a stable baseline. Then work through the dependencies in this order:
- Protect the evidence. Save the old redirect map, pre-migration analytics, Search Console exports, sitemap files, and any available server logs. Do not overwrite the history you need for diagnosis.
- Restore access and truthful responses. Make sure the old host serves redirects, destination pages return 200, and deleted pages return an actual missing-page status.
- Correct the highest-value mappings. Start with old pages that earned the most clicks, impressions, links, or business value. Fix repeated redirect and canonical errors at the rule or template level.
- Align internal consolidation signals. Update internal links, canonicals, XML sitemaps, alternate-language relationships, and hostname rules so they all support the destination URLs.
- Remove crawl traps. Stop thin generators, duplicate variants, empty templates, and obsolete URLs from creating a competing crawl inventory.
- Validate before asking for more crawling. Test representative URL groups in Search Console and with direct HTTP checks. Requesting another crawl before fixing the pattern only reproduces the failure.
- Improve valid but weak pages. Once technical signals are coherent, address genuine quality, duplication, and intent problems among URLs that are supposed to be indexed.
- Return to performance and enhancement work. Core Web Vitals, structured data, and AI-search optimization matter, but they cannot compensate for a page that is unavailable, noncanonical, or absent from the index.
Watch leading indicators before waiting for traffic
Total organic sessions are the final outcome, not the earliest proof of a fix. Monitor the migration by URL cohort and template so that one recovering section does not hide another section that remains broken.
- Priority old URLs resolve in one hop to their intended destinations.
- Destination pages return 200, render their primary content, and declare the expected canonical.
- Crawl activity shifts away from obsolete hosts and invalid URL patterns toward the canonical destination inventory.
- Soft 404 and crawled-not-indexed groups shrink for the templates you repaired.
- Fresh, important pages move from discovery to indexing more quickly. On the affected news site, new stories could be crawled in about two minutes but still take roughly 24 hours to reach the index, a damaging gap for time-sensitive coverage.
- Impressions return to migrated URL cohorts, followed by clicks and organic landing-page sessions.
No single Search Console count proves recovery. Exclusion totals can change as new URLs are discovered, and a few inspected pages can pass while an entire template remains wrong. Require several aligned signals: correct responses, correct canonicals, cleaner crawl allocation, improving index coverage, and returning impressions.
How long should migration recovery take?
A clean domain migration may need weeks or months while Google recrawls URLs and consolidates signals. That is not a guaranteed deadline. Site size, crawl demand, URL quality, redirect coverage, and the amount of obsolete inventory all affect the process.
The calendar is less useful than directional evidence. If important old URLs have been recrawled but still point incorrectly, or new canonical pages remain excluded for the same repeated reason, waiting is not a recovery plan. Return to the first failed stage and fix the pattern. When redirects, exclusions, crawl activity, and impressions all move in the right direction, give the corrected system time to propagate without introducing another migration.
Key takeaways
- Diagnose crawl, render, indexing, ranking, and analytics separately; a traffic graph alone cannot identify the failure.
- Give every old URL a deliberate outcome: a direct redirect to a true equivalent or an honest 404/410 when no replacement exists.
- Make redirects, canonicals, internal links, XML sitemaps, and regional signals agree on the same destination URLs.
- Group soft 404s and crawled-not-indexed URLs by template. Fix the generator instead of submitting individual URLs repeatedly.
- Prioritize indexing dependencies before Core Web Vitals, schema enhancements, link building, or broad content rewrites.
- Measure recovery by URL cohort and require aligned technical, indexing, impression, and traffic signals.
Open the old property’s landing-page report and take the 20 highest-value URLs that lost visibility. Trace each one from its old response through its destination, rendered content, canonical, and index status. A repeated failure will usually expose the rule or template to fix first. Repair that pattern, validate a fresh sample, and then watch the affected cohort instead of waiting for the site-wide total to rescue itself.

Leave a Reply