Search traffic fell after the replatform: working back through the map
In short
Stop reading the aggregate curve and bucket the lost URLs by class, using server logs and the old sitemap rather than a rankings tool. Traffic never falls evenly after a migration: it falls out of the classes nobody mapped — author pages, tag archives, paginated lists, feed endpoints and old AMP paths. Grouped by class, the cause is usually obvious within an hour.
Key takeaways
- Bucket lost URLs by class from server logs; a rankings tool shows the symptom and hides the structure.
- The classes that break are the ones with no obvious new equivalent: authors, tags, pagination, feeds, AMP paths.
- A redirect to a section index or the homepage is not a redirect to the equivalent item, and gets reported as a soft 404.
- Repair in order of inbound external links first, because rankings recover and links do not.
- Serve the redirect map from the edge as a key lookup, or a crawl of the old URL set will slow your origin.
- Image URLs are a URL class too, and re-derived renditions lose both the address and the embedded metadata.
Bucket the loss by URL class before you form any theory about it. Take 30 days of server logs from before the cutover, keep every URL that received at least one organic entry, and classify each into a class: article, section index, tag or topic archive, author page, paginated list, on-site search results, feed endpoints, image and media paths, legacy subdomains, and the sediment left by whatever migration happened before this one. Then run that URL list through a checker that records the final status code, the number of hops and the final URL. Join the two. The resulting table is the diagnosis, and it usually takes under an hour to build.
Work from logs, not from a rankings tool
The reason to work from logs rather than from a rankings tool is that rankings tools report the classes they were told to track, which are almost always articles and section pages. The classes that break in a migration are the ones nobody was tracking, because nobody thought of them as pages — an author archive with a decade of bylines on it, a tag page that a Wikipedia citation points at, page 7 of a paginated list that still holds a link.
The classes that break, and why each one is missed
| Class | Why it is missed | Failure signature | The correct destination |
|---|---|---|---|
| Author and contributor pages | Authors are modelled as a field on the story, not as a page with its own history | 404s clustered under one path segment, often with strong inbound links | The equivalent author page, including retired and freelance bylines |
| Tag and topic archives | The old taxonomy had thousands of tags and the new model has 40 sections | Mass 301s to a section index or the homepage | A tag page where one exists, a search result where it does not, a 410 where neither does |
| Pagination | Only page 1 of each list appears in a sitemap | Deep list URLs 404 while their parents resolve | The equivalent page number, or the parent if pagination is gone |
| Feed endpoints | Treated as plumbing rather than as addresses other systems hold | Aggregators and apps stop updating; no traffic signal at all at first | The new feed URL, permanently redirected, and kept forever |
| Old AMP and mobile-subdomain paths | The team stopped producing them years ago and assumed nothing points at them | A long tail of 404s with real referrals still attached | The canonical article, one hop |
| Image and media paths | The migration re-derives renditions, so every asset gets a new address | Image search traffic disappears and embeds break in syndicated copies | Stable asset URLs, with the provenance chain preserved through the resize |
That last row costs twice. Re-deriving renditions changes the address, and the transform step is also where embedded provenance and rights metadata is quietly stripped — the loss traced in keeping provenance metadata alive from camera to CDN. A migration is the single most likely moment for a publisher to lose both at once.
Five causes, and the fingerprint each one leaves
- A whole class was never in the map. The most common cause by a wide margin. The fingerprint is a step rather than a curve: traffic for URLs sharing one path segment goes to near zero on the cutover date while everything else holds. Group your 404 log by path segment and the answer is the first row.
- Redirects land somewhere that is not the equivalent. Everything technically resolves, so nobody flags it. Search engines treat a redirect to an unrelated page as a soft 404 rather than as a redirect, and Google Search Console labels them as such in its page indexing report — check that report before assuming a 301 did its job.
- Chains and loops. Old to interim to new, where the interim path came from a migration two platforms ago, and every hop crossing http to https or www to apex adds another. Any hop count above 1 is worth collapsing; the fingerprint is in the checker output, not in any traffic graph.
- Canonical relationships between duplicate copy were lost. Publishers run agency copy, and the old platform expressed which copy was canonical. After the move every duplicate is self-canonical, the versions compete, and which one ranks becomes arbitrary. The fingerprint is a large set of URLs indexed but receiving nothing, with identical opening paragraphs across mastheads.
- The origin is slow on redirect. If the map is evaluated by the application rather than at the edge, a crawler working through hundreds of thousands of old URLs hits your origin on every one of them. Response times rise, crawl rate falls, and recovery stalls for reasons that have nothing to do with the map's contents. The fingerprint is a high time to first byte specifically on 301 responses in the logs.
Repair order: inbound links first, volume second
- Export referring domains per URL from a backlink tool and rank the broken classes by external links, not by lost sessions. Rankings recover once the mapping is right; links, once someone gives up on a dead URL, do not come back.
- Fix whole classes with a rule, not URL by URL. A class that broke because a path pattern changed is repaired by one pattern; a class that broke because identifiers changed needs a lookup table generated from the migration's own mapping records.
- Collapse every chain to one hop, including the ones that were fine before the migration and gained a hop during it.
- Replace generic-destination redirects with item-level ones. This is the slowest step and the one that most needs the migration's field mapping, which is exactly the artefact produced by mapping legacy stories into a model that did not exist.
- Move the map to the edge before re-submitting anything, so the recrawl does not land on your origin.
- Re-submit sitemaps class by class, and watch the classes separately. An aggregate curve will not show you that authors recovered and tags did not.
Deriving item-level destinations for a large archive is a matching problem — old title, old date, old byline against the new record set — and it is one of the few places in a migration where automation genuinely pays for itself rather than adding a layer to debug. It is the sort of bounded, verifiable work we build as AI agents and automation: a candidate match with a confidence score, a human confirming the low-confidence tail, and a mapping table as the output.
A redirect map is not a launch task. It is a permanent index of every address the outside world still believes in.
How to know it worked
- Track entries and impressions per URL class weekly, on one chart with one line per class. The aggregate line is the one that will mislead you for a quarter.
- Track hop counts and non-200 finals on the full old URL set, not a sample. This is a cheap nightly job and it catches the redirect somebody removed in a cleanup six months from now.
- Watch crawl statistics for response time on redirect responses specifically, because that is the number that decides how fast the archive gets re-processed.
- Keep an eye on the classes that produce no traffic signal — feeds, image paths, embeds in third-party pages. They break silently and are usually discovered by a partner rather than by you.
- If stories are also appearing late or twice on the new platform, that is a separate defect in the publish path and is diagnosed in scheduled stories that go live late or twice.
The uncomfortable finding, most of the time, is that the redirect map was nobody's deliverable. It sat between the outgoing platform's knowledge and the incoming platform's schema, and both parties assumed the other owned it. That is a scoping failure rather than a technical one, and it is worth settling in writing before a migration starts — the kind of question covered in choosing an AI development partner and in the sequencing work of cutover week for a publishing replatform.
The rest of this silo sits under CMS and publishing platform engineering, and the platform work we do for newsrooms is described in our media and publishing practice.
Frequently asked questions
Short answers to the follow-ups this page tends to raise.
Why did traffic fall after a CMS migration when every article redirects correctly?
Because articles are usually the only class anyone maps. Author pages, tag and topic archives, paginated list URLs, feed endpoints and legacy AMP paths all carry organic entries and external links, and they have no obvious equivalent in a new content model, so they get redirected to a section index or left to 404. Bucket the lost URLs by class from server logs and the missing class is normally visible in the first grouping.
Is redirecting an old tag page to the homepage acceptable?
No — it is one of the more damaging shortcuts available. A redirect to a page that is not an equivalent tends to be treated as a soft 404 rather than as a redirect, which means the destination inherits nothing and the source stops being useful. Prefer the nearest genuine equivalent, then a search or listing result scoped to that term, and where neither exists return 410 so crawlers stop requesting it.
How long should the old-to-new redirect map be kept?
Indefinitely. External links, citations and bookmarks do not expire, and the map is the only thing converting them into traffic. Treat it as permanent infrastructure with a nightly test over the full old URL set, because the most common way a map degrades is a well-intentioned cleanup years later that removes rules nobody could attribute.
Should recovery be measured in rankings or in traffic?
In entries per URL class, weekly. Rankings for a sample of head terms will not show that author pages are still broken, and the aggregate traffic line hides one class recovering while another does not. One chart, one line per class, and a separate line for hop counts and non-200 finals across the full old URL set.
- migration
- redirects
- technical SEO
- publishing platform
The work behind this page
Builds from our portfolio that this page draws on.
Brief Forge
Contract review AI for solo lawyers and small firms — extract, score, and redline contracts in minutes.
Legal TechAskVault
An AI internal knowledge-search platform that answers employee questions from your own docs — grounded in citations, with knowledge gaps surfaced and deflection tracked.
Productivity AIRead next
- News sitemaps: the two-day window, and what the archive stays out ofA news sitemap is a rolling window, not an index. At publisher scale the failure is inclusion — archives, republished timestamps and paginated lists leaking into a file meant for two days of news.definition
- Scheduled stories that go live late, or twiceLate and duplicate publishing are the same defect: a scheduler nobody verifies and a publish command with no key. Four timestamps tell you which half you are looking at.diagnostic
- Some readers still see the old version of a corrected storyA correction that is right for you and wrong for a colleague is held by exactly one layer. Ten minutes of evidence tells you which, and stops the reflex to flush everything.diagnostic
- Surrogate keys: purging one story without flushing the front pageOne story lives on six surfaces. The keys attached to those responses at render time decide whether a correction reaches all six, or whether somebody asks for a full flush at the worst moment.definition
- Dunning as a state machine: retries, grace and when access stopsDunning is not a sequence of emails. It is a state machine, and every state must be written into the entitlement record so access, messaging and reporting cannot drift.definition
- Embargoes as a field the platform enforces, not a line in an emailAn embargo is a condition set by someone outside the newsroom, and a platform can only enforce it if it is a typed record with a source, a lift instant, a scope and a list of surfaces.definition
Working on something in this space?
Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.
Start the conversation