SEO Migration.

technical seo migration services

Technical SEO migration services

The engineering half of a migration, in detail: what gets crawled, what gets diffed, what gets logged, and what has to be true in production before anyone calls the launch successful.

By Arsal Riaz, Technical SEO Consultant Published
Definition
Technical SEO migration services — Technical SEO migration services cover the machine-facing half of a website move: redirect architecture, crawl parity between the old and new builds, log-file analysis of crawler behavior, JavaScript rendering checks, indexation control, and verification that the production release matches what was signed off on staging.

What this covers that a general SEO audit does not

A standard technical audit answers “is this site healthy?”. Technical SEO migration services answer a different and much narrower question: “will this specific set of URLs, signals and behaviors survive being replaced?”

That difference changes the method. An audit samples. Migration work does not — it works from the complete indexable URL inventory, because the URL that breaks is never the one you sampled. It also works in pairs: nothing is assessed on its own merits, only against its counterpart on the other side of the move.

The four things that get verified

1. Redirects resolve in one hop to a relevant destination

Not “redirect rules exist”. Not “the pattern covers that directory”. Each priority URL is tested individually against the target environment, and the result recorded as a final status code plus a hop count.

Chains are the most common finding, and they are almost always accidental — a rule that normalizes trailing slashes runs after a rule that maps old paths, so every legacy URL takes two hops instead of one. Nobody wrote that on purpose. It shows up in five minutes of testing and is invisible otherwise.

2. The new site presents the same signals as the old one

The parity diff compares titles, H1s, canonicals, meta robots, word counts, internal link counts, structured data types and hreflang annotations across every matched URL pair.

Most of the differences it finds are intended. The value is in the ones that are not: a template that lost its canonical tag, a section where internal link counts dropped by 80% because a sidebar module was cut, a set of pages whose word count halved because a tab component now loads its content on click.

3. Content exists in the HTML, not just in the DOM

When a site moves to a JavaScript framework, body copy, internal links and canonical tags can move out of the initial HTML response. Google will usually render the page eventually, but rendering is queued and not guaranteed, and links that only appear after hydration are discovered slowly.

The test is unglamorous: fetch the raw HTML and look for the content. If the copy and the internal links are not there, treat discovery as a risk and decide deliberately whether to accept it. Server-side rendering the templates that carry organic traffic is usually cheaper than the alternative.

4. Production matches what was approved

The last check is the one most often skipped, and it catches the most expensive class of failure. Staging environments carry noindex directives. Release pipelines sometimes carry them to production.

A site-wide noindex on launch day can start removing pages within days. It is trivial to check and catastrophic to miss, so it is checked in production immediately after cutover, not inferred from the staging sign-off.

Where this sits in the wider engagement

This page describes the technical scope. It is one part of the full migration engagement, which also covers benchmarking, priority tiering, content decisions and post-launch measurement.

If you are still deciding whether the migration plan is sound at all, the pre-launch audit is the smaller, fixed-scope way to find out. If you want to see the sequencing without talking to anyone, the checklist is published in full, and unfamiliar terms are defined in the glossary.

A note on tooling

The tools matter less than people expect. A crawler, a spreadsheet, Search Console and access to logs cover most of this work. What changes the outcome is method: crawling both environments under the same configuration so the diff is meaningful, testing individual URLs rather than trusting patterns, and having a written gate that someone has to sign before the next phase starts.

Any provider can name the same tools. Ask instead what their parity diff compares, field by field, and what their hop-count budget is. Those answers separate a process from a toolbox.

Comparison of HTTP redirect status codes, their signal-passing behavior and the migration situations each one suits.
Status Meaning Use during a migration Caution
301 Moved permanentlyThe default for every permanent URL change in a migrationCached aggressively by browsers — a wrong 301 is expensive to unwind
302 Found, temporaryGenuinely temporary moves only, such as a maintenance windowGoogle may eventually treat a long-lived 302 as permanent, but do not rely on it
307 Temporary, method preservedHSTS-driven HTTPS upgrades, issued by the browser rather than your serverNot something you author for content moves
308 Permanent, method preservedAPI endpoints and POST routes that must keep their methodOlder clients handle it less predictably than 301
410 GonePages deliberately removed with no equivalent destinationRemoves the URL faster than 404 — only use it when the removal is intentional
Meta refresh Client-side redirectNone. There is no migration situation where this is the right toolSlow, unreliable, and passes signals poorly
Redirect status codes and when each one is correct

When you need this depth

  • The site has more than a few thousand indexable URLs.
  • The new build changes rendering approach, such as a move to a JavaScript framework.
  • There is a CDN, reverse proxy or edge worker between the user and the application.
  • Faceted navigation, pagination or URL parameters exist on either side of the move.

When it is more than you need

  • A small site where the entire URL inventory fits on one screen.
  • A design refresh with no URL, template or rendering changes at all.
  • A migration where your engineering team already runs crawl diffs as part of QA.
  • Sites with no server log access and no ability to crawl a staging environment.

The technical verification sequence

Run in this order. Each step assumes the previous one passed, because finding a rendering problem after you have finished redirect QA means redoing the redirect QA.

  1. 01

    Baseline crawl of production

    Full crawl with JavaScript rendering enabled and disabled, so the difference between the two is recorded rather than discovered later.

    Output Two crawl exports, rendered and unrendered

  2. 02

    Staging crawl behind authentication

    Crawl staging using HTTP auth credentials rather than removing the protection. Removing auth to allow a crawl is how staging sites get indexed.

    Output Staging crawl export

  3. 03

    Field-level parity diff

    Compare title, H1, canonical, meta robots, word count, internal link count, structured data type and hreflang for every matched URL pair.

    Output Parity diff with per-field variance counts

  4. 04

    Redirect hop and loop testing

    Every URL in the priority tiers tested for final status code, hop count and cross-protocol or cross-host hops. Loops and chains fail the gate outright.

    Output Redirect test results with exception list

  5. 05

    Rendering verification

    Confirm body content, internal links and canonical tags exist in the initial HTML response, not only after hydration.

    Output Rendering findings by template

  6. 06

    Indexation directive audit

    robots.txt, meta robots, X-Robots-Tag headers and canonical tags checked in production immediately after cutover.

    Output Production directive report

  7. 07

    Log-file confirmation

    Track the shift in crawler requests from old URLs to new ones over the weeks after launch. This is the only direct evidence of how discovery is actually going.

    Output Crawler request distribution over time

Deliverables

What this engagement hands over

  • Staging QA

    Crawl parity diff

    Every indexable URL compared field by field between staging and production, with variance counts per field so you can see whether a difference is a one-off or a template-wide problem.

  • Pre-launch

    Redirect architecture specification

    Where rules live (edge, application or both), how they are ordered, how conflicts resolve, and the hop-count budget the implementation has to stay inside.

  • Discovery

    Log-file analysis

    Crawler request distribution by section, status code and user agent, showing where budget is currently spent and which sections are effectively invisible.

  • Staging QA

    Rendering report

    Per-template comparison of raw HTML against rendered DOM, flagging content and links that only exist after JavaScript execution.

  • Launch day

    Production directive audit

    Post-cutover verification that robots.txt, meta robots, X-Robots-Tag and canonicals in production match what was approved on staging.

Questions people ask before starting

What is crawl parity and why does it matter?

Crawl parity means the new site presents the same set of indexable URLs, with the same signals, as the old one — allowing for intended changes. Verifying it means crawling both and diffing field by field. It matters because unintended differences are invisible in a browser and obvious to a crawler.

Do we need log-file analysis for a migration?

It is the only data source that shows what crawlers actually do rather than what you hope they do. Before a migration it reveals where crawl budget goes; after one it shows how quickly discovery shifts to the new URLs. Valuable, but not a blocker if logs are inaccessible.

How many redirect hops are acceptable?

One. Googlebot follows up to ten hops before giving up, so a chain will usually still resolve, but every hop costs crawl budget and adds latency for users. Two is tolerable as a temporary state. Anything longer should be collapsed before launch.

Should redirects live at the CDN or in the application?

At the edge where possible. Edge redirects respond faster, survive application deploys, and keep the rule set in one auditable place. Application-level rules make sense for logic that needs database lookups, such as mapping legacy IDs to new slugs.

What is index bloat and how does a migration cause it?

Index bloat is a large number of low-value URLs competing for crawl budget. New platforms often generate faceted, paginated or parameterized URLs the old site never had. Compare indexable URL counts before and after — a large unexplained increase is bloat, not growth.

Can you check a staging site that is password protected?

Yes, and that is the preferred setup. Crawlers can be configured with HTTP authentication credentials. Removing protection so a tool can crawl is how staging environments end up indexed as duplicates of production, which is a harder problem than the one it solves.

Start with the launch date

Tell us what is changing and when. We will tell you what is realistic in the time available before anyone discusses scope.

Reply
Typically within one business day.
Hours
Monday to Friday, 9am–6pm US Eastern.
First call
Scoping, not a pitch. No deck.