Back to Blog

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.

Karan Bhakuni
Karan Bhakuni
Founder, Flyn
MigrationMay 30, 202612 min readUpdated May 30, 2026
Website Migration Redirects: 301 Checklist

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.

Comparison showing an old URL keeping 90-99% of its ranking equity when 301-redirected, versus losing all rankings and traffic when left to 404
A redirect map is just a spreadsheet of old URL → new URL. Skip it and Google de-indexes the 404s, taking your rankings with them.

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.

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.

Pro tip

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.

CodeMeaningUse it forSEO effect
301Moved PermanentlyMigrated content, renamed URLs, replatformingPasses 90-99% of link equity to the new URL
302Found (Temporary)A/B tests, short-lived promos, maintenanceKeeps indexing the OLD URL, equity does not transfer
307Temporary (strict)Same as 302 but preserves the HTTP methodSame 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.

Watch out

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.

Four cards showing the distinct redirect formats for WordPress (plugin JSON or PHP), Shopify (CSV), Webflow (Old Path arrow New Path), and Squarespace (URL Mappings syntax)
The same redirect, four formats. A generator turns one plain list of old→new URLs into whichever syntax your platform expects.

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.

Three-phase migration timeline: Before (build the map, export URLs, pull Search Console), Launch Day (generate format, import, switch DNS, keep old sitemap), and After (verify hops, scan 404s, submit sitemap, watch GSC 30 days)
The three phases of a clean migration. Most failures come from skipping the "before" phase and discovering the missing redirects only after traffic drops.

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.

Note

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.

Diagram contrasting a clean single-hop 301 redirect from /old to /new against a slow four-hop redirect chain through /temp and /v2 that leaks equity
Always collapse chains to a single hop. If an old URL once pointed to an interim URL, update the rule to jump straight to the final destination.

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.

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.

Pro tip

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?
Not every one, but every URL that has traffic OR backlinks is non-negotiable. Pull both lists from Search Console (Performance → Pages for traffic, Links → Top linked pages for backlinks), de-duplicate, and map those first. For the long tail of zero-traffic, zero-backlink URLs, a single sensible category-level redirect is fine. The 80/20 rule applies hard here: your top 20% of URLs carry the vast majority of the SEO value.
Should I use 301 or 302 redirects for a migration?
Almost always 301 (Moved Permanently). A 301 passes 90-99% of the old URL's link equity to the new one and tells Google to update its index. A 302 (or 307) is for temporary moves; it keeps the OLD URL indexed and does not transfer ranking signals. The most common migration SEO bug is accidentally using 302s, which many CMS UIs default to. Audit your top pages' status codes after launch.
Can I just redirect all my old pages to the homepage?
No, this is one of the most damaging mistakes. Google treats a redirect to an irrelevant page (like the homepage) as a "soft 404" and drops the ranking entirely, as if you had no redirect at all. Always redirect each old URL to its closest topical match: a product to the equivalent product or its category, a blog post to the equivalent post or the blog index. Relevance is what lets the equity transfer.
How do I move redirects between platforms with different formats?
Build your old→new map once as a plain two-column list, then use a format generator for your target platform. WordPress wants plugin JSON or PHP, Shopify wants a two-column CSV, Webflow wants "Old Path → New Path", and Squarespace wants "/old -> /new 301" lines. Flyn offers a free generator for each, so the same source list exports to whichever syntax your new CMS expects without manual reformatting.
How long should I keep the redirects in place?
Permanently, or at least until the old URLs have zero crawl activity, which for a well-linked site can be years. Google keeps re-crawling old URLs long after a migration, and external sites rarely update their links. Removing a 301 later resurrects the original 404 problem. Treat migration redirects as permanent infrastructure, not a temporary launch task.
What is a redirect chain and why does it hurt?
A chain is when one redirect points to another redirect: /old → /temp → /new. Each hop adds page-load latency and historically Google discounted equity across long chains. They accumulate when you layer new migration redirects on top of old ones. The fix is to flatten every chain to a single hop, rewrite /old to point directly at the final destination. Use a redirect checker to trace the full hop sequence on your important URLs.
How do I verify my redirects actually work after launch?
Three checks. First, spot-test high-value URLs with a redirect checker to confirm each resolves in a single 301 hop to the right destination. Second, crawl the new site with a broken link checker to catch internal links still pointing at old URLs. Third, watch the Search Console Pages report for 30 days, a week-one 404 spike is normal and should trend to zero as Google discovers your redirects. Any high-traffic URL that stays 404 means a gap in your map.
Will a migration always cause a temporary traffic dip?
A small, short dip is common even with a perfect migration, because Google needs time to re-crawl and re-index the new structure. With a complete redirect map, that dip is shallow and recovers within a few weeks. Without one, the "dip" becomes a permanent cliff. The difference is entirely down to whether every valuable old URL has a relevant 301 in place before launch.

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
Karan Bhakuni· Founder, Flyn

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.