Case studySite migrationTechnical SEO

When a site changes platform, the articles usually survive. The search signals attached to them frequently do not. Here is the three layer audit that finds the difference, and what it surfaced on a legal site that had just moved from a website builder to a custom framework.

VR
Veranika Rusakovich Content and SEO for regulated professional services. Audit performed 4 September 2026. Published 4 September 2026.
In short

A migration audit has three layers: what the site earned before the move, what its pages return now, and the URL by URL map between them. Run in that order on a recently migrated legal site, it showed that translated versions had been moved to the new URL structure while their English originals had not, that a quarter of the site’s clicks were landing on leftover default pages, and that one article had disappeared from the site entirely.

3layers in the audit
13articles found live
5still on legacy URLs
25%of clicks on leftover pages

The problem

A developer rebuilt a law firm’s site on a modern framework. The brief had been to keep the content. By every visible measure the brief was met: the articles were there, the design was better, and the new site had canonical tags, hreflang and structured data that the old one lacked.

The question the client could not answer was narrower. Did the search signals move with the content, or only the content? Those are different things. A page can be present, readable and beautifully marked up, and still have lost every ranking it held, because the address it earned those rankings at no longer resolves to it.

Nobody had the answer because nobody had compared the before and the after as data. The conversation was running on impressions, the developer’s and the client’s and mine, and impressions are exactly what a migration audit exists to replace.

The method

Three layers, run in this order. The order matters, because layer A is the only one that becomes unavailable over time: the Search Console reporting window is finite.

Diagram of a three layer migration audit. Layer A is a Search Console export of what the site earned before the move, layer B is a live check of what each URL returns now, layer C is a map from old to new sorted by impressions. Below, four outcomes for every old URL: retained, redirected, replaced with no redirect, and gone. The replaced state is highlighted as the one monitoring reports as healthy.
The three layers, and the four states every pre-migration URL falls into. Only one of the four looks healthy to monitoring tools while being broken.
  1. Layer A, export what the site earned before the move

    Full Search Console performance export for the longest available pre-migration period: pages, queries, clicks, impressions, average position. Export it first, before touching anything else. Data that has aged out of the window cannot be recovered later.

  2. Layer B, read the new site as a machine reads it

    Pull the current sitemap. Then open every URL that appeared in layer A and record what it returns now: status, final address after any redirect, canonical, H1, byline, dates. Not what the CMS says is published, but what the URL actually serves.

  3. Layer C, map old to new, ranked by impressions

    One row per pre-migration URL, sorted by impressions descending, never alphabetically. Classify each as retained, redirected, replaced or gone. The rows at the top are the only ones worth an argument.

Everything below came out of running those three layers on one site. Each finding is stated as what the audit observed, not as what anyone intended.

What the audit found

1. Only part of the content moved to the new URL structure

The new blog listed 13 articles. Eight sat on the new address pattern. Five were still on the old platform’s pattern, linked from the new blog index but never migrated. Those five carried the majority of the site’s article impressions, which is to say the articles that mattered most were the ones that had not been moved.

2. Translations migrated, their English originals did not

This is the finding a purely technical crawl would miss. The Russian and Lithuanian versions of four articles had been rebuilt on the new URL structure. Their English originals stayed on the legacy pattern. The result is that the language versions of a single article now live in two different structures, which makes a clean hreflang cluster between them difficult to express and easy to get wrong.

Why this is easy to miss

Automated migration checks compare URL lists. They flag a URL that stopped resolving. They do not flag a set of pages that all resolve correctly but no longer belong to the same group. Language cluster integrity has to be checked per topic, by hand.

3. One article was gone, and its address had been reused

An article on employer immigration compliance was absent from the blog index and from the sitemap. Its old address had not been redirected and did not return a 404. It now served an unrelated service page. On the firm’s other live domain, the same slug returned 404. The only surviving copy of the text was in a search engine’s cached version, which is signed, short lived and about to expire.

That combination, address alive, content replaced, no redirect, no archive, is the worst of the four outcomes, because monitoring tools report the URL as healthy. Nothing is broken. The article has simply stopped existing while its address carries on.

4. A quarter of the site’s clicks were landing on leftover default pages

Twenty URLs were indexed under the old builder’s default page names, the equivalent of /blank, /blank-1, /blank-2 and so on. Between them they drew 30 clicks against the site’s total of 122: a quarter of everything the site earned, arriving on pages nobody had named, let alone written a title for.

These are not junk to be deleted. They were real landing pages under meaningless addresses, and they need to be matched to their new equivalents by what they contained, not by what they were called.

A redirect map built from URL similarity will get the leftover pages wrong every time, because their names never described their contents.

The checklist this produces

  • Export Search Console before the migration, not after. This is the only irreversible step.
  • Check every pre-migration URL that earned impressions, not a sample, and sort the list by impressions.
  • Classify outcomes into four states, retained, redirected, replaced and gone, and treat “replaced with no redirect” as the most serious, because it looks healthy.
  • Verify language cluster integrity per topic: all language versions of one article should sit in one URL structure.
  • Match default named pages to new equivalents by content, never by slug similarity.
  • Confirm the sitemap contains only canonical, 200 returning URLs, and that legacy addresses are not sitting in it alongside their replacements.
  • Archive anything that has genuinely gone before the cached copy expires. A cache is not a backup and it has a deadline.

Method and limits

Source. Google Search Console performance export for the client property, search type Web, covering 5 May 2025 to 31 August 2026, combined with the site’s current sitemap and direct requests to individual live URLs.

Dated observations. Everything in the findings section describes the state of the site on 4 September 2026. Titles, bylines and addresses change with a single deployment, which is why an audit of this kind is dated and why the underlying export is kept.

Not established. Whether the legacy addresses return a redirect or a 200 was not confirmed for every URL, and no server level configuration was inspected. Those are the developer’s to check, and the audit is written to tell them exactly where to look.

Client identification. The client is described by practice type. No domains, URLs or regulatory registration numbers are reproduced.

Frequently asked questions

What should I export before a site migration?

A full Search Console performance export covering the longest available period: pages, queries, clicks, impressions and average position. The reporting window is finite, so data that ages out before you export it cannot be recovered afterwards.

How do I find pages that were replaced without a redirect?

Request every URL that earned impressions before the move and compare what it serves now against what it served before. A replaced page returns 200 and looks healthy to monitoring tools, so it will not appear in a broken link report. Only a content level comparison finds it.

Should old URLs redirect to the homepage?

No. A blanket redirect to the root discards the topical relevance each page earned. Redirect page by page to the closest equivalent, and where no equivalent exists, decide deliberately between recreating the content and letting the URL return 404.

How soon after a migration should the audit run?

As soon as the new site is live, and again four to six weeks later once the new URLs have been crawled and indexed. The first pass catches configuration errors, the second shows whether rankings actually transferred.

Scroll to Top