Website Migration Redirects: 301 Checklist
A botched replatform can wipe out years of SEO in weeks. Here is the exact redirect map, status-code logic, and per-platform format you need to move WordPress, Shopify, Webflow, or Squarespace without losing a single ranking.

Why migrations quietly destroy SEO
You are moving from WordPress to Shopify, or Squarespace to Webflow, and the new site looks gorgeous. Then three weeks after launch, organic traffic falls off a cliff. The culprit is almost never the design, it is the hundreds of old URLs that now return 404 because nobody mapped them to their new homes.
Search engines spent months or years indexing your old URLs. Other sites linked to them. When those URLs suddenly break, two things happen at once: Google de-indexes the dead pages (taking their rankings with them) and every backlink pointing at them becomes worthless. A migration without a redirect plan is not a migration, it is a controlled demolition of your SEO.
The good news: this is entirely preventable, and the work is mechanical once you understand the four phases, map, choose, generate, verify. The rest of this guide walks each one with the exact tools and formats for the major platforms. If redirects are brand new to you, skim the URL redirect glossary entry first; everything below assumes the basics.
Build your redirect map before you touch anything
The redirect map is a two-column list: every old URL on the left, its closest new URL on the right. This is the deliverable that everything else depends on, and it must exist before you flip DNS. Pull your old URLs from three sources so nothing slips through:
1. Your old sitemap.xml
The fastest complete inventory. Visit oldsite.com/sitemap.xml (or /sitemap_index.xml) and export every <loc> entry. This catches every URL the old platform considered indexable. Validate it first with our XML Sitemap Validator so you are not building a map off a broken file.
2. Google Search Console, Pages report
Search Console → Performance → Pages shows every URL that actually earns clicks and impressions. These are non-negotiable: any URL with traffic must have a redirect, because losing it means losing real visitors. Export the full list and merge it with your sitemap export.
3. Backlink data (Ahrefs, Semrush, or GSC Links)
URLs with external backlinks are pure SEO gold, even a zero-traffic page with strong backlinks passes authority to wherever you point it. In Search Console, Links → Top linked pages is free and good enough for most sites. Extract those URLs and make sure each one maps somewhere relevant.
De-duplicate the three lists, then sort by traffic descending. Map the top 20% first, they carry 80% of the value. For the long tail of zero-traffic, zero-backlink URLs, a single sensible category redirect is fine. You do not need a bespoke destination for a product page nobody ever visited.
If you are auditing an existing page's outbound links during this process, our Link Extractor pulls every link off any URL so you can spot internal links that will break post-migration.
301 vs 302 vs 307: use the right status code
A redirect is not just "send them over there", the HTTP status code tells search engines how to treat the move. Get this wrong and even a perfectly mapped redirect leaks ranking signals. For the full breakdown of every status code, including 307, 308, and browser caching gotchas, see our dedicated guide to 301 vs 302 redirects.
| Code | Meaning | Use it for | SEO effect |
|---|---|---|---|
| 301 | Moved Permanently | Migrated content, renamed URLs, replatforming | Passes 90-99% of link equity to the new URL |
| 302 | Found (Temporary) | A/B tests, short-lived promos, maintenance | Keeps indexing the OLD URL, equity does not transfer |
| 307 | Temporary (strict) | Same as 302 but preserves the HTTP method | Same as 302 for SEO purposes |
For a website migration the answer is almost always 301. The single most common mistake is using a 302, many CMS UIs default to it, or developers reach for it out of habit, which silently tells Google "keep the old URL indexed, this is temporary." Months later you are wondering why the new pages never rank.
Shopify only issues 301s through its native URL Redirects (no 302 option), which is actually convenient here. But WordPress plugins, Webflow, and Squarespace all let you choose, and a stray 302 on a high-value page is the kind of bug that costs you months. Audit the status code on your top URLs after launch with our Redirect Checker.
The same rules cover domain and HTTPS migrations
This guide frames everything around replatforming, but the exact same redirect discipline applies to two other common migrations: moving to a new domain (old-domain.com → new-domain.com) and forcing HTTP → HTTPS. Both are URL changes at scale, and both lose rankings without a complete 301 map. For a domain move you redirect old-domain to new-domain one-to-one; for HTTPS you 301 every http:// URL to its https:// twin, usually a single server-level rule from our .htaccess or NGINX generators. Treat all three the same way: map, 301, verify.
Generate the right format for your platform
Here is the friction nobody warns you about: every platform wants the redirect list in a different shape. The same old→new mapping has to be re-expressed four different ways depending on where you are migrating to.
WordPress
Two routes. If you use the popular Redirection plugin, import a JSON file. If you would rather not add a plugin, generate PHP for your theme's functions.php (or an .htaccess block on Apache). Our WordPress Redirect Generator outputs both from one list. For server-level rules specifically, the .htaccess and NGINX redirect generators cover Apache and Nginx.
Shopify
Shopify takes a CSV import under Online Store → Navigation → URL Redirects, with exactly two columns: Redirect from and Redirect to. Our Shopify Redirect Generator produces the import-ready CSV (correctly escaped for commas in URLs) so you can bulk-load thousands of redirects in one upload.
Webflow
Webflow lives in Project Settings → Publishing → 301 Redirects, using an "Old Path → Redirect to Path" format that supports wildcard segments. Our Webflow Redirect Generator formats each rule and handles the wildcard syntax for bulk path moves.
Squarespace
Squarespace uses its URL Mappings panel with a one-rule-per-line syntax: /old -> /new 301. Our Squarespace Redirect Generator emits exactly that, including the trailing status code. Paste the whole block into Settings → Advanced → URL Mappings.
All four generators take the same input, your old→new list, so you build the map once and export it everywhere. Browse the full set on the free tools page. Migrating away from a legacy builder that offers no redirect panel at all? A zero-second meta refresh redirect in the old page's HTML is the fallback of last resort.
The launch-day sequence
Order matters on launch day. Do these out of sequence and you will serve broken pages to live visitors during the cutover.
Deploy redirects on the NEW site first
Import your redirect rules into the new platform before you point DNS at it. When the switch happens, the redirects are already live and waiting, no gap where old URLs 404.
Keep the old sitemap reachable temporarily
Counter-intuitively, leave your old sitemap.xml accessible for a few weeks. It gives Googlebot a tidy list of old URLs to re-crawl, discover the 301s, and follow them to the new pages, accelerating the transfer of ranking signals.
Submit the new sitemap immediately
The moment DNS propagates, submit the new sitemap in Search Console. This tells Google "here is the new structure" and speeds up re-indexing. Validate it first with the Sitemap Validator to catch malformed entries before Google does.
Also confirm your canonical tags point to the new URLs, not the old ones. A migrated page that still self-canonicalizes to its old address sends Google a contradictory signal. Run a quick pass with the Canonical URL Checker.
Avoid redirect chains and loops
A redirect chain is when /old redirects to /temp, which redirects to /v2, which finally redirects to /new. Each hop adds latency, and Google has historically discounted equity across long chains. A redirect loop, A → B → A, breaks the page entirely.
Chains creep in during migrations because you are often layering new redirects on top of old ones from previous site changes. The fix is to flatten every chain to a single hop: if /old historically went to /interim and /interim now goes to /final, rewrite the rule so /old goes directly to /final.
How to find chains and loops
Spot-check your highest-value URLs with our free Redirect Checker, it traces the full hop sequence and flags chains, loops, and the final status code. For a bulk pass across many short links or campaign URLs, the Short Link Bulk Health Checker checks dozens at once.
Verify and monitor for 30 days
Launch is the start of the verification window, not the end of the project. For the first month, treat 404s as live incidents.
Crawl the new site for broken links
Internal links inside your content often still point at old URL structures. Run the new site through our Broken Link Checker to catch any internal link that now 404s, then fix the source rather than relying on the redirect to paper over it.
Update internal links to point directly at the new URLs, do not let your own navigation, related-post modules, and in-body links route through 301s. Every internal link that fires a redirect wastes crawl budget and adds latency for no reason, when you control both ends and can just link straight to the final URL. Redirects are for external links you cannot edit; your own links should always be direct.
Watch Search Console Coverage
The Pages (formerly Coverage) report will start showing "Not found (404)" and "Redirect" statuses as Google re-crawls. A spike in 404s in week one is normal; it should trend to zero as your redirects get discovered. If a high-traffic URL stays 404, you missed it in the map, add the redirect immediately.
Re-check the top 50 URLs weekly
Your highest-traffic and most-linked URLs deserve a manual weekly check for the first month. One stray 302 or chain on a money page is worth more attention than a hundred long-tail 404s.
The teams that migrate cleanly are not the ones with the best developers, they are the ones who treated the redirect map as a deliverable with the same weight as the design. Map first, launch second.
Where Flyn fits: marketing URLs that outlive any migration
CMS redirects solve the structural problem, your indexed pages keep their rankings. But there is a second category of URL that a platform migration cannot protect: the marketing links you have already published in emails, printed materials, ad campaigns, QR codes, and social bios.
Those links point at specific destinations on your site. When you replatform and a URL structure changes, every email you ever sent and every flyer you ever printed now relies on your CMS redirect catching it. That works, until someone deletes a redirect, or the next migration forgets it.
Decouple your campaigns from your CMS
This is exactly what a link management platform like Flyn is for. Instead of pointing your email and ad campaigns at yoursite.com/spring-sale, you point them at a branded short link like go.yourbrand.com/spring and set the destination inside Flyn. When you migrate platforms, you update one destination in Flyn, every email, flyer, and QR code keeps working, no CMS redirect required.
You also get what CMS redirects never give you: click analytics. You see exactly how many people followed each campaign link, from where, on what device, the same way branded short links lift CTR and custom domains build trust. Pair that with smart internal linking on the new site and your migration becomes an upgrade, not a survival exercise.
Before your next migration, move your highest-traffic external campaign URLs behind Flyn short links. Then any future replatform only touches your CMS, your published marketing links are insulated from URL changes forever. Start free, or compare plans on pricing.
Run the structural redirects through the free generators, verify with the Redirect Checker, and put your campaign URLs behind Flyn. That combination is how you replatform without losing a ranking, or a click. To build the map itself, the free redirect map generator turns your old and new URL lists into a complete 301 map for Apache, nginx, Next.js, or Cloudflare.
Frequently Asked Questions
Do I really need a redirect for every single old URL?
Should I use 301 or 302 redirects for a migration?
Can I just redirect all my old pages to the homepage?
How do I move redirects between platforms with different formats?
How long should I keep the redirects in place?
What is a redirect chain and why does it hurt?
How do I verify my redirects actually work after launch?
Will a migration always cause a temporary traffic dip?
Free tools for this
Three Flyn tools that pair well with the strategy in this article, all free, no signup needed.
Redirect Checker
Trace 301/302 redirect chains.
Broken Link Checker
Scan any page for dead links and 404s.
URL Cleaner
Strip tracking params from any URL.
Keep reading
Three related deep-dives from the Flyn blog.

Firebase Dynamic Links Alternative: Migration Guide
13 min read

How to Track Which Posts Drive Sales, Not Just Clicks
19 min read
Postback URL Tracking: How S2S Conversion Tracking Works
17 min read
Ready to try Flyn?
Free plan includes 25 links/month, full analytics, and access to all 30+ free tools above. No credit card required.
Already a member? Log in

Karan Bhakuni is the founder of Flyn. He writes about branded links, click analytics, and the link-management tooling growth teams and creators actually need, drawn from building Flyn and reading a lot of user feedback.