What goes in a redirect map
| Column | What you put there | Why |
|---|---|---|
| Old URL (source) | Every old URL: crawl, sitemaps, Search Console pages, pages with backlinks | Each one needs a home |
| New URL (target) | The closest new page, same topic and intent | One-to-one keeps rankings |
| Type | 301, 308, or 404/410 for pages retired on purpose | Google treats 301 and 308 as permanent (Google) |
| Final status of target | The status code your crawler saw after launch or on staging | A redirect to a broken page passes nothing |
| Clicks (12 months) | From Search Console > Performance > Pages | Sort by value, check the top rows by hand |
| Referring domains | From Search Console > Links or a backlink tool | Pages with links matter even with no clicks |
The 8 checks the template runs for you
Each check is a formula. You do not need to know how it works. It shows a flag next to the row and a plain verdict.
- Unmapped: an old URL with no target and not marked 404/410.
- Self-redirect: source and target are the same URL.
- Chain: the target is itself listed as a source, so users hop twice or more.
- Loop: two rows point at each other. Nobody ever reaches a page.
- Duplicate source: the same old URL appears twice with different targets.
- Target not 200: the target returns 404, 5xx or another redirect.
- Temporary: the row uses 302 or 307. Google treats those as weak signals.
- To homepage: the target is the homepage. Google may treat mass homepage redirects as soft 404s, so the template asks you to check.
A row passes only when none of those flags is set. A counter at the top shows how many rows are left to fix.
Example rows (fictional store: northwind-outdoors.com)
| Old URL | New URL | Type | Target status | Verdict |
|---|---|---|---|---|
| /tents/2-person-tents.html | /tents/2-person/ | 301 | 200 | OK |
| /guides/pitch-a-tent-old | /blog/how-to-pitch-a-tent | 301 | 200 | Fix: point straight at the final URL |
| /sale | /offers | 301 | 301 | Fix: loop, both rows point at each other |
| /lanterns/solar.html | /lighting/solar-lantern/ | 301 | 404 | Fix: target does not return 200 |
| /catalog-2019.pdf | (none) | 410 | OK: retired on purpose |
How to fill it in 5 steps
- Collect old URLs. Crawl the live site, add every URL from your XML sitemaps, every page with clicks in Search Console (16 months) and every page with backlinks. The Search Console web export stops at 1,000 rows, so large sites need the API.
- Match by pattern first. If /blog/2021/05/post-name/ becomes /blog/post-name/, write one server rule and list 3 test URLs in the map instead of 3,000 rows.
- Match the rest by hand, highest value first. Sort by clicks and referring domains. Same topic, same intent. A discontinued product goes to its category or its replacement, not the homepage.
- Retire what has no match. Mark it 404 or 410. Google treats both the same: it stops crawling them and drops them from results (Google: HTTP status codes).
- Test before and after launch. Run the old URL list through a crawler in list mode. Paste the final status codes into the "Final status" column. Fix every row that is not OK.
Common mistakes
- Mixing formats. If column A has full URLs and column B has paths, chains and loops cannot be matched. Use the same format in both.
- Forgetting old redirects. Redirects from a past migration still point at URLs that are now redirected again. Update them to the new final URL so every old URL lands in one hop.
- Trailing slash and case rules. Many platforms add or remove a slash or force lower case. Test one URL with each before you import 2,000 rows.
- Deleting the map after launch. Keep it. Google says to keep redirects for as long as possible, generally at least 1 year (Google), and you will need the map to debug drops later.
Importing the map into your platform
Most platforms accept a CSV of from and to paths. Shopify has URL redirects with a CSV import, Wix has a URL Redirect Manager, Squarespace uses URL Mappings written as /old-path -> /new-path 301, Webflow has 301 redirects in site settings, and WordPress uses a redirect plugin or server rules. Check your platform's limits and format before you import, and test 5 rows first.
How to use this with an AI assistant
Connect SEOmatic at https://seomatic.ai/mcp and ask: "Connect my Search Console with connect_seomatic and run gsc_performance with action top_pages for the last 12 months. Give me every page with clicks as a two-column list, old URL and a blank new URL, sorted by clicks, so I can paste it into my redirect map." Reading your Search Console data is free once you connect it.
More from the migration checklist
- The checklistSite Migration SEO Checklist
- GuideWebsite Redesign SEO Checklist: Keep Your Rankings Through a New Design
- GuideChanging Your Domain Name Without Losing SEO
- GuideGoogle Search Console Change of Address Tool: Step by Step
- GuideHTTP to HTTPS Migration: The SEO Checklist
- GuideCMS Migration SEO: Switch Platforms Without Losing Rankings


