Why traffic drops after a migration

Google doesn’t know your site moved — it only sees URLs, their response codes and the signals on each page. If any of these signals change after the move, the search engine re-evaluates the page and rankings drop, temporarily or for good.

We moved the Zamin.uz and UZ.NEWS frontends from a legacy CMS to Next.js. The rules below come from mistakes made in those projects and fixed afterwards.

1. The sitemap must cover the whole archive

On a new platform the sitemap is often written with a limit like “latest 1,000 articles”. Google then gradually forgets older pages. Include every page: one file holds at most 50,000 URLs, so split into chunks of 40,000 and use a sitemap index.

2. Every old URL needs a new address

Before moving, collect every URL of the old site (sitemap, Search Console, server logs). Define a new address for each and add a 301 or 308 redirect. If a page no longer exists, 404 or 410 is the correct response — redirecting everything to the home page is a “soft 404” for Google.

3. Hreflang must match in HTML and the sitemap

If a page on a multilingual site has one tag in the HTML (say, uz) and another in the sitemap (uz-Latn), Google can’t tell which is right. Generate the tags from one place and check automatically that they match.

4. The right response for untranslated pages

  • The article exists in another language but not this one — a temporary redirect to that language’s home page.
  • An old tag or category no longer exists — a page with matching search results.
  • The content doesn’t exist at all — 404 or 410.

5. HTML caching is short or purged on change

A legacy CMS may have escaped caching because of a session cookie. On the new platform the cookie disappears, the CDN starts caching the whole site for hours and Googlebot sees stale pages — a big loss for a news site. The fix is purging specific URLs on change, serve-stale and a short TTL together.

6. Deploy with zero downtime

Even 30 seconds of 502 errors on every deploy is a signal to Googlebot. Start the new version on a separate port, check its health, then switch traffic (blue-green) and keep the old version around for a while.

7. Image URLs and sizes stay the same

If image URLs change, traffic from Google Images and Discover disappears. Use one resizing mechanism across the whole site and keep the old image paths.

8. Breadcrumbs and structured data stay complete

New templates often end up with trimmed JSON-LD blocks such as BreadcrumbList, Article and Organization. Before moving, list every structured data type on the old site and check that each exists on the new one.

9. Monitor after the move

For the first 2–4 weeks, check indexing, 404 errors and traffic in Search Console every day. Remove the old sitemap files from Search Console, add the new one and notify Yandex and Bing via IndexNow.

Frequently asked questions

How long does traffic take to recover after a migration?

If redirects are correct and signals didn’t change, usually 2–6 weeks. If the sitemap or redirects have errors, traffic won’t recover until they are fixed.

What is the difference between 301 and 308 redirects?

Both mean a permanent move and work the same for SEO. A 308 keeps the request method (for example POST), while a 301 may change it to GET.