Every retiring URL gets a decision with page-level evidence behind it, and every critical rule resolves in one hop to a real 200 before and after launch.

A redirect spreadsheet can technically contain every old row and still send visitors to the wrong place, because a nearest-title match isn't the same as the closest continuation of the task they came to finish. We decide what should happen to every retiring URL individually, match each one to the page that actually continues its visitor's task, and test every rule in one hop before launch and again once it's live. Every retiring URL gets an explicit decision, every redirect has page-level evidence, and every released rule is tested in one hop before and after launch.

Two Zeo specialists route old URL cards across a tested bridge toward matching new pages while no-match cards stop at a review gate.

Some of the 500+ brands we've worked with

See all references
  • Lexus
  • Defacto
  • Yemek.com
  • Marble Systems
  • Teyit.org
  • Odamax
  • Amazon
  • BMW
  • Shell
  • Hyundai
  • PepsiCo
  • Red Bull
  • Decathlon
  • MediaMarkt
  • Bayer
  • Sanofi
  • EY
  • KPMG
  • GE
  • 3M
  • Domino’s
  • Trendyol
  • Hepsiburada
  • Yandex

We separate the business decision about an old page from the technical rule that implements it. An available destination is not automatically an equivalent one.

  1. Freeze both URL universes

    We combine crawls, sitemaps, CMS records, analytics, logs, and release manifests, preserving original rows while normalizing host, path, case, parameters, locale, and canonical identity. The migration lead sets the canonical identity rule for ambiguous duplicates and signs off the late-arrival process before any row gets a disposition.

    A lossless source and destination inventory with provenance, stable row IDs, and a process for late arrivals.

  2. Decide what should happen to each old page

    We classify every retiring URL as redirect, retain, remove with a true terminal status, or investigate (before choosing a destination). A person decides which URLs get removed with no redirect at all, since that decision permanently forecloses whatever equity the page still carries.

    A disposition register with page purpose, value evidence, reason, and accountable owner.

  3. Match the user's actual task

    We compare visible content, product state, locale, funnel stage, queries, links, and next action to find the closest valid continuation. A reviewer confirms task equivalence page by page for anything that isn't a mechanical exact match, especially high-value pages where a wrong guess is expensive.

    A candidate map with equivalence evidence, confidence, reviewer, and an honest no-match queue.

  4. Turn approved rows into safe rules

    We convert page decisions into exact or pattern rules with precedence, exclusions, query behavior, locale handling, collision tests, and rollback ownership. Precedence order and exclusions are signed off before the rule set ships. A wrongly scoped pattern rule will silently redirect URLs nobody approved.

    An executable rule set without broad catch-alls quietly swallowing exceptions.

  5. Test before launch and again in public

    We run the full map and representative browser journeys against the release candidate, then recrawl and inspect logs after launch. Our migration lead calls each live exception a genuine miss needing a new rule or an acceptable edge case, and owns closing it either way.

    One-hop, final-200 evidence plus an exception log for wrong targets, chains, loops, soft 404s, and new legacy URLs.

AI normalizes, ranks, and stress-tests the rules; people decide equivalence and precedence.

AI normalizes host, path, casing, and parameter variants across the crawl, sitemap, CMS, analytics, and log exports so one URL does not appear as five rows, ranks each retiring URL's value evidence so the disposition queue is triaged by stakes, ranks candidate destinations by content, locale, and funnel-stage similarity and routes anything below the confidence threshold straight to the no-match queue, tests the drafted rule set against the full inventory for collisions, chains, loops, and over-wide pattern rules, and watches the post-launch recrawl and server logs for chains, loops, soft 404s, and unmapped legacy URLs. Equivalence is a human judgment. We do not use blanket homepage or top-category redirects to make unmatched rows disappear, we do not build hidden, conditional, crawler-only, or wrong-locale redirects, and we will not promise that rankings, traffic, or link value transfer completely or on a fixed schedule.

Engineering gets rules it can run. Content and product owners keep the page decisions that made those rules legitimate.

  • Decision matrix

    URL disposition register

  • Redirect map

    Destination equivalence map

  • Playbook

    Redirect implementation rules

  • Audit report

    Prelaunch & live validation report

We call it done when: The disposition register, equivalence map, implementation rules, and validation report are done when every source row retains provenance, canonical identity, locale, purpose, value evidence, disposition, reason, and owner with no evidence lost to normalization, every redirect row has one valid target with task-equivalence evidence, reviewer, timestamp, and individual approval for high-value assets, the rules define precedence, exclusions, query and locale behavior, expected status and target, test ID, deployment owner, and rollback version, and every loop, chain, wrong target, soft 404, and unmatched arrival has a severity, owner, and action.

Redirect mapping is page-level migration work. A nearest-title lookup exported to engineering the night before is something else entirely.

A good fit when

  • You are changing domains, paths, taxonomy, products, locales, or platforms and need a decision for every retiring URL.
  • Some legacy pages still carry search demand, backlinks, campaigns, conversions, or contractual visibility and need individual review.
  • Exact and pattern rules must be tested in the actual delivery layer with clear ownership and rollback.

Better handled as other work when

  • The instruction is to send every old URL to the homepage or nearest category without checking user intent and content equivalence.
  • Old and new URL populations are incomplete, or the redirect layer cannot be tested against a release candidate and owned in production.

If one of these is closer to your situation, start here instead: SEO Migration

We call it done when: Every old URL has an approved redirect, retain, remove, or investigate decision, critical rules resolve once to the right 200 page, and every late arrival has an owner.

  • Ahrefs

    flags linked legacy URLs that need individual destination review

  • Screaming Frog

    freezes legacy and destination inventories before mapping decisions begin

  • Sitebulb

    finds rule collisions and broad patterns swallowing approved exceptions

  • LinkChecker.pro

    retests approved redirect targets before launch and after release

  • Google Search Console

    adds query and landing-page evidence to each legacy URL decision

  • Google Analytics

    shows the visitor actions each old URL must continue supporting

We'll start with the old and new inventories, separate page decisions from rules, and build the first testable mapping set.
Map the migration with Zeo

Should every old URL redirect somewhere?

No. Redirect only when a valid destination preserves the old user's task. That decision follows the same value evidence as everything else (search demand, backlinks, campaign use, and conversions), weighed page by page. Retaining the page, returning 404 or 410, or keeping an exception open can be more honest than a weak catch-all.

When is a pattern rule safe?

Only when the URL grammar and target relationship are deterministic, boundaries and collisions are tested, broad concentration is reviewed, and the implementation team owns rollback.

How does AI help with thousands of URLs?

It normalizes approved inventories, ranks candidates, detects chains, loops, collisions, and broad patterns, and shows the evidence behind each suggestion. People approve every page decision and release.

Who owns the redirect rules after launch?

The implementation team that deployed them, with the rollback version documented. New legacy URLs that show up in logs after launch, old campaign links, syndicated content, forgotten subdomains, get the same disposition treatment as anything found during the freeze. They don't get a silent catch-all redirect.