Migration Redirect Map QA - verify every old URL lands right
Pricing
$3.00 / 1,000 mapping checkeds
Migration Redirect Map QA - verify every old URL lands right
Pricing: $0.003 per mapping checked (up to 5 redirect hops plus a final-page check per mapping, summary included).
You mapped hundreds of old URLs to new ones for a site migration. Did every rule actually take? This Actor walks your redirect map row by row and gives you a pass/fail receipt for each mapping: follow the chain hop by hop, compare the final landing URL against the expected target, and catch the failures that quietly kill SEO after a migration - wrong destinations, redirect loops, dead ends, temporary 302s where you need permanent 301s, and multi-hop chains that leak link equity.
What you get per mapping
| Field | Meaning |
|---|---|
verdict | ok, wrong_target, no_redirect, ok_no_redirect, old_dead, final_dead, final_error, fetch_error, or invalid_row |
chain | Every hop with HTTP status, in order |
hops | Redirect count - more than 1 is flagged as multi_hop |
permanent / temporary | 301/308 vs 302/303/307 across the chain; temporary hops raise a temporary_redirect warning |
final_url / final_status | Where the chain actually lands and its HTTP status |
canonical | The final page's canonical link, plus whether it matches your expected target |
noindex | Whether the final page carries a robots noindex (warning final_page_noindex) |
warnings | temporary_redirect, multi_hop, final_page_noindex |
Plus a summary record: valid pairs, pass rate, per-verdict counts, multi-hop and temporary-redirect totals. Export everything to CSV/JSON/Excel.
Input
An array of old-to-new pairs. Common column names all work: from/to, oldUrl/newUrl, source/target, old/new.
{"mappings": [{"from": "https://old-site.com/blog/post-1", "to": "https://new-site.com/articles/post-1"},{"from": "https://old-site.com/pricing", "to": "https://new-site.com/plans"}],"concurrency": 10,"maxRedirects": 5}
Honest limits
- Timeouts, network blocks and anti-bot pages are reported as
fetch_error, never as a broken destination - retest those rows before acting on them. - Canonical and noindex evidence comes from the final landing page only.
- Query-string tracking parameters (utm_*, gclid, fbclid) are ignored when comparing targets; other query differences count as different URLs.
- Private and internal addresses are refused by design (SSRF guard).
- One run checks up to 20 hops per mapping (
maxRedirects); longer chains report an error, not a verdict.
Built for SEOs and agencies running site migrations, domain moves, CMS replatforms and URL-structure overhauls.