Traffic & Conversion Mapping
Context
A migration that ignores value treats a checkout page and an archived press release as equals — and that is how revenue paths end up as 404s while nobody-reads-it URLs get perfect 1:1 redirects. Traffic and conversion mapping fixes the priority order: it attaches measured sessions, conversions, and revenue to every URL in the inventory so redirect effort, QA depth, and rollback sensitivity all follow business value. Webmasters, SEO engineers, site architects, and technical PMs run it inside the Pre-Migration Auditing & Risk Assessment window, after the crawl baseline exists and before the redirect map is frozen.
The output is a value-tiered URL list plus a continuity plan for attribution itself — because a migration that preserves rankings but breaks GA4 cross-domain tracking has still blinded the business during its most fragile week.
The instinct this page corrects is treating a URL inventory as a flat list. Inventories are visually dominated by whatever section has the most rows — usually an archive, a paginated series, or a faceted catalogue — and effort naturally flows toward the big block on the screen. Value is distributed almost inversely: on most estates a small minority of URLs carries the overwhelming majority of revenue, and those URLs are frequently unremarkable-looking pages sitting in a section with only a few dozen rows. Joining money to the inventory is what makes that visible before the redirect work is planned rather than after it is done.
There is a second, less obvious output. The same join tells you which URLs carry essentially no measured value at all, and that list is just as useful — it is the set you can legitimately consolidate or retire with a 410 rather than mapping one by one. Migrations routinely spend disproportionate effort producing perfect 1:1 redirects for pages nobody has visited in two years, which adds rules, adds chain risk, and adds QA surface for no return.
Pre-flight Checks
Capture indexation, traffic, and conversion states quantitatively before touching architecture.
- Run a full crawl via Crawl Baseline Generation to document status codes, link equity, and render-blocking resources.
- Map GA4 conversion events to current URL paths using BigQuery exports and custom-dimension tagging.
- Record DNS TTLs, CDN cache headers, and WAF rules to prevent stale delivery during propagation.
- Complete readiness scoring in the Pre-Migration Auditing & Risk Assessment repo before freezing CMS content.
- Verify database snapshot integrity and enforce a strict content freeze across environments.
- Confirm the analytics property, measurement ID, and consent configuration on the new environment match the legacy ones, since a placeholder ID shipped with the new build produces a site that works perfectly and reports nothing.
Execution Steps
1. Join Inventory to Revenue and Tier It
Make priority objective by attaching money to each URL. Export GA4 sessions, conversions, and assisted revenue plus Search Console clicks, join them to the crawl inventory on path, and split into high/medium/low tiers. Feed the tiers forward as the redirect priority matrix so high-value paths get 1:1 mappings and full QA.
Join on a normalised path, and expect the join to be the fiddly part. Analytics platforms record page paths with their own conventions — some strip the query string, some retain a subset of parameters, some record the rendered virtual path of a single-page application rather than the requested URL — while the crawl inventory holds absolute URLs and the logs hold raw request lines. A naive join on unmodified strings will match a fraction of rows and quietly report that most of the site has no traffic, which is a conclusion teams have acted on more than once. Normalise both sides to the same canonical form, then check the match rate before trusting any tier.
Pull a long enough analytics window to survive seasonality, and prefer BigQuery or the raw export over the reporting interface where sampling applies. Interface reports on large properties are frequently sampled, and sampling is worst exactly where you care most — among the low-traffic pages, where a page with genuine but modest traffic can round to zero and be tiered as worthless. Where sampled data is the only option, treat low-traffic conclusions as provisional and confirm against server logs, which are never sampled.
2. Preserve Attribution Across the Domain Boundary
Stop the migration from blinding analytics. Implement Mapping Legacy Traffic to New URL Structures to carry UTM parameters, referral paths, and session IDs across the transition, and configure GA4 cross-domain linker plus server-side GTM to avoid attribution fragmentation.
Preserve the query string on every redirect rule, not just the ones that obviously carry campaigns. This is a one-token change in most rule syntaxes — $is_args$args in Nginx, QSA in Apache — and omitting it silently strips utm_ parameters, affiliate identifiers, and session tokens from every redirected request. The damage is invisible in status-code testing, because the redirect works perfectly; it shows up later as paid traffic appearing as direct, affiliate partners disputing attribution, and a marketing team unable to reconcile spend with results during the one week they most need to.
3. Validate Tracking in Staging
Catch tracking breaks before they cost a launch week. Verify conversion pixels and data streams in staging with browser network inspectors and Tag Assistant, confirming events fire with correct parameters before DNS cutover.
Test with the consent banner in its real configuration, not with tracking force-enabled. Analytics on modern sites is gated by a consent layer, and that layer frequently holds the domain name in its own configuration — so a migration can produce a site where consent is never granted on the new hostname, tags never fire, and every dashboard reads zero while the site itself is perfectly healthy. The check takes a minute: load the new environment fresh, accept consent as a user would, and confirm the tag fires afterwards.
4. Run Dual-Stream During Propagation
Keep continuity while the world resolves to two answers. Maintain dual-domain GA4 data streams until global propagation completes and _ga cookies stabilise, and hand the value tiers to Stakeholder Communication Plans so monitoring focus follows revenue post-launch.
Tiering is the step that converts the join into a plan, and each tier should carry a different obligation for redirects, for QA, and for how sensitively you watch it after launch.
Configs / Commands
Two of the four fragments below exist purely to protect attribution rather than availability, which is why they are easy to omit: nothing fails visibly without them. Treat the query-string preservation and the linker configuration as part of the redirect deliverable, reviewed in the same change as the rules themselves, rather than as an analytics task scheduled separately and therefore later.
# Nginx: preserve query strings on 301 — use $is_args$args to append the original
location ~ ^/legacy-category/(.*)$ {
return 301 /new-structure/$1$is_args$args; # keeps UTM + tracking params intact
}
# dig: verify SOA TTL and reduce 48 h before cutover via the registrar API
dig @ns1.example.com example.com SOA +short # confirm current minimum TTL
// GA4 cross-domain linker (GTM container init) — preserves attribution across domains
gtag('set', 'linker', { domains: ['old-domain.com', 'new-domain.com'] });
# Identify 4xx/5xx in access logs for post-launch triage, ranked by frequency
awk '$9 ~ /^[45]/ {print $9, $7}' access.log \
| sort | uniq -c | sort -rn > migration_errors.csv # top offenders first
Hand the tiers forward rather than keeping them in the audit. Their value is greatest downstream: the redirect work uses them to sequence, QA uses them to sample, monitoring uses them to weight alerts, and the rollback thresholds use them to decide which conversion paths count as critical. A tiering exercise whose output stays in a spreadsheet owned by one analyst has done the hard part and skipped the useful part.
Validation
Every item below is a pass or fail rather than a judgement, and each maps to a command you can re-run after remediation rather than a review somebody has to repeat by hand.
Systematic checks before production traffic routing.
Avoid these deployment failures — each of these has cost a real migration its first week of data:
- Regex over-matching that silently creates redirect chains — test representative samples first.
- GA4 session fragmentation from missing
_gacookie preservation across subdomains. - CDN cache invalidation failures serving a legacy
robots.txtto Googlebot. - Headless CMS hydration delays stalling server-side rendering and indexation.
rel="canonical"left pointing at the legacy domain, causing duplicate-content dilution.- A consent banner configured against the old hostname, so tags never fire and every dashboard reads zero on a perfectly healthy site.
The attribution side of this page is the part teams most often discover too late, because nothing about it is visible in a status-code check. A migration can produce flawless redirects and still leave the business unable to answer whether the migration worked, which during the soak window is the only question anyone is asking.
The error-ranking command deserves to be run continuously rather than once. Sorted by frequency, the post-launch 4xx and 5xx list is the fastest route to the handful of rules that matter — a single mis-scoped pattern typically produces thousands of identical failures and sits unmissably at the top, while genuinely isolated problems trail off below. Diff the top of that list against the intentional-retirement list from the audit, and whatever remains unexplained is the real work queue for the first hours after cutover.
Rollback Triggers
Pre-author scripts and assign ownership; fire automatically on threshold breach.
- 5xx error rate exceeds 2% across monitored endpoints.
- Organic traffic drops >30% within 2 h of cutover.
- Any critical conversion endpoint returns a non-200 status.
- Crawl-budget exhaustion or conversion-rate drop flagged by Datadog/New Relic synthetic monitors.
FAQ
How do I decide the cut-off between tiers? Draw the lines at natural breaks in the cumulative value curve rather than at round percentages. Sort the inventory by value and plot the running total: on most estates there is a visible knee where a small group of URLs accounts for the bulk of it, and a long flat stretch further down where thousands of pages contribute almost nothing between them. Those inflection points are your tier boundaries, and they are defensible in a way that “top 100” is not — they describe the estate rather than a convention. Re-derive them per migration, since the shape differs considerably between an e-commerce catalogue and a publisher’s archive.
Who should own the tiering, engineering or marketing? Jointly, with marketing owning the value definition and engineering owning the join. Handing the whole exercise to engineering tends to produce technically clean tiers built on last-click revenue nobody in marketing would endorse; handing it to marketing tends to produce a defensible value model that cannot be joined to the URL inventory because the path formats do not match. The split that works is that one side decides what counts as valuable and the other makes the data line up, with both signing off on the resulting tiers before they drive any redirect work.
How do I preserve conversion attribution during DNS propagation?
Configure cross-domain linker tracking in GTM, run dual-domain GA4 streams until propagation completes, and verify _ga cookie persistence in browser dev tools during synthetic testing.
What is the optimal TTL reduction timeline?
Lower TTL to 300 s 48 h before cutover, verify propagation with dig @8.8.8.8 domain.com +short, run the record swap in a low-traffic window, and watch resolver latency for the first 2 h.
How can I validate redirect mapping without crawling the live site?
Use staging curl -sIL batch scripts and Screaming Frog list mode against the pre-exported inventory to confirm 301 accuracy, single-hop chains, and destination parity before touching production DNS.
What triggers an immediate rollback? A 5xx rate above 2%, organic traffic down >30% within 2 h, or any critical conversion endpoint returning non-200 — with rollback scripts pre-tested in staging before the cutover window opens.
Should attribution use last-click or something richer for tiering? Something richer wherever the data supports it. Last-click systematically undervalues the pages that do the persuading and overvalues the last step before checkout, which on most sites means category and comparison pages score far below their real contribution. Since the whole purpose of tiering is deciding what deserves protection, an attribution model that hides the assisting pages will happily let you deprioritise exactly the content that drives the funnel. Where a data-driven or path-based model is unavailable, entrance counts and assisted-conversion counts are serviceable proxies.
How long should the dual data streams run?
Until global resolver adoption is complete and the _ga cookie population has turned over, which in practice means the full soak window rather than the propagation window — commonly a week. Running them longer is harmless; stopping them early produces a gap in the data at exactly the point where you most want continuity. Set an explicit end date with an owner, though, because dual streams left running indefinitely become a quiet source of double-counting that somebody discovers during a quarterly review.
What is the single most valuable check to run on staging? Fire a real conversion on the new environment and confirm it appears in the analytics property with the correct campaign attribution. It is a slow check compared with automated tag validation and it exercises the entire chain — tag present, parameters preserved, cookie carried, event mapped, property correct — in a way no individual assertion does. Most attribution failures found after launch would have been caught by one person completing one purchase in staging and looking at where it landed.
What if the site has no meaningful conversion events to tier against? Fall back to a value proxy rather than abandoning the exercise. Entrances, engaged sessions, Search Console clicks, and internal search-to-page transitions all approximate importance well enough to produce a usable ordering, and for publishers or reference sites the ordering they produce is frequently better than a revenue model would be. The property that matters is not that the metric is money, but that it is measured and applied consistently — any consistent measure beats an alphabetical list or an editor’s sense of which pages are important.
Should tiering be redone after launch? Re-run the join once the new estate has a few weeks of its own data, and compare tiers rather than replacing them. Pages that dropped a tier after migration are your highest-value diagnostic signal — far more actionable than an aggregate traffic figure, because each one points at a specific URL whose treatment can be inspected. This comparison is also the clearest evidence for whether the migration met its goals, which is why the pre-migration tiering needs to be preserved rather than overwritten.
Related
- Pre-Migration Auditing & Risk Assessment
- Crawl Baseline Generation
- Stakeholder Communication Plans
- Mapping Legacy Traffic to New URL Structures
← Back to Pre-Migration Auditing & Risk Assessment