Website Migration SEO for SaaS: How to Switch Platforms Without Losing Rankings
Every SaaS company eventually outgrows its website platform. The redesign looks incredible. The new tech stack is faster. Then you launch — and organic traffic drops 40%. We've audited 70+ funded SaaS sites and seen the aftermath of botched migrations. Here's how to do it right.
What's in this guide
- Types of Website Migrations (And Their Risk Levels)
- Before Migration: The SEO Baseline
- The 301 Redirect Map — Your Most Important Document
- Content Migration: What to Keep, Cut, and Consolidate
- Technical SEO Parity Checklist
- Launch Day: The Migration Sequence
- Post-Migration: The 90-Day Monitoring Plan
- 8 Migration Mistakes That Kill SaaS Rankings
- Platform-Specific Migration Guides
- Complete Migration SEO Checklist
Why Website Migrations Go Wrong
Here's the uncomfortable truth: most SaaS website migrations are led by design or engineering teams who don't think about SEO until it's too late. The conversation goes like this:
- Week 1: "We're redesigning the site! New platform, new look, new everything."
- Week 8: "It looks amazing. Ship it."
- Week 10: "Why did our organic traffic drop 50%?"
- Week 14: "Can someone call an SEO person?"
By week 14, the damage is done. Google has crawled the new site, found hundreds of broken URLs, and dropped your rankings. The backlinks pointing to your old URLs? They're hitting 404 pages. Your carefully optimized meta tags, schema markup, and internal links? Gone — replaced by whatever the new platform generated by default.
Types of Website Migrations (And Their Risk Levels)
Not all migrations are equal. Here's how they stack up by SEO risk:
| Migration Type | What Changes | SEO Risk | Recovery Time |
|---|---|---|---|
| HTTP → HTTPS | Protocol only | 🟢 Low | 1-2 weeks |
| Redesign (same URLs) | Design, content layout | 🟢 Low | 1-2 weeks |
| Platform change (same URLs) | CMS/framework | 🟡 Medium | 2-4 weeks |
| Platform + URL change | CMS + URL structure | 🟠 High | 4-8 weeks |
| Domain migration | Domain name | 🔴 Very High | 2-6 months |
| Domain + platform + URL | Everything | 🔴 Critical | 3-6+ months |
The rule: change as few things as possible at once. If you're switching from WordPress to Next.js, keep the same URLs. If you're also rebranding, do the platform migration first, stabilize rankings, then do the domain migration separately. Stacking changes multiplies risk.
Before Migration: The SEO Baseline
Before you change anything, document exactly what you have. This baseline is your insurance policy — if something goes wrong, you need to know what "normal" looked like.
1. Crawl the entire current site
Use Screaming Frog, Sitebulb, or even a simple script to get every URL on your current site:
# Get all URLs from sitemap
curl -s https://yoursite.com/sitemap.xml | grep -oP '<loc>\K[^<]+'
# Or crawl with wget
wget --spider -r -nd -nv https://yoursite.com 2>>&1 | grep '^--' | awk '{print $3}'
For each URL, record:
- Full URL path
- HTTP status code (200, 301, etc.)
- Title tag
- Meta description
- H1 tag
- Canonical tag
- Word count
- Internal links (count and destinations)
- Organic traffic (from Google Analytics or Search Console)
2. Export Google Search Console data
Download the last 16 months of data from Search Console:
- Performance: Queries, pages, clicks, impressions, CTR, position
- Coverage: Indexed pages, excluded pages, errors
- Links: External links, internal links, top linking sites
- Core Web Vitals: LCP, FID/INP, CLS scores
3. Map your backlink profile
Use Ahrefs, Moz, or Google Search Console to export every external link pointing to your site. Group by:
- Landing page (which URLs have the most backlinks)
- Referring domain authority
- Anchor text
4. Screenshot key SERP positions
For your top 20 ranking keywords, screenshot the search results showing your current position. This gives you visual proof of where you stood before the migration — useful for diagnosing problems later.
The 301 Redirect Map — Your Most Important Document
If you do nothing else from this guide, do this: create a complete 1-to-1 redirect map from every old URL to its new equivalent.
A redirect map is a spreadsheet with two columns:
| Old URL | New URL |
|---|---|
| /blog/why-seo-matters | /blog/why-seo-matters |
| /features/analytics | /product/analytics |
| /about-us | /about |
| /pricing-page | /pricing |
| /resources/ebook-download | /resources/seo-ebook |
Rules for redirect maps
- Every old URL gets a redirect. No exceptions. Even pages you're removing should redirect to the most relevant remaining page (not the homepage).
- Match intent, not just topic. If
/features/analyticstalked about your analytics dashboard, redirect it to the new page that covers your analytics dashboard — not to a generic features overview. - Use 301s, not 302s. A 301 is permanent and passes ranking signals. A 302 is temporary and doesn't. This is the most common mistake.
- No redirect chains. Old URL → New URL. One hop. If old URL → intermediate URL → final URL, collapse it to old URL → final URL.
- Keep redirects forever. "We'll remove the redirects after 6 months" is a myth. Backlinks from 2019 still point to old URLs. Keep the redirects as long as the domain exists.
How to implement redirects
Next.js (in next.config.js):
module.exports = {
async redirects() {
return [
{
source: '/old-page',
destination: '/new-page',
permanent: true, // 301
},
{
source: '/blog/:slug',
destination: '/articles/:slug',
permanent: true,
},
]
},
}
Vercel (in vercel.json):
{
"redirects": [
{ "source": "/old-page", "destination": "/new-page", "permanent": true },
{ "source": "/blog/:path*", "destination": "/articles/:path*", "permanent": true }
]
}
Nginx:
# Single redirect
rewrite ^/old-page$ /new-page permanent;
# Pattern redirect
rewrite ^/blog/(.*)$ /articles/$1 permanent;
WordPress (.htaccess):
Redirect 301 /old-page /new-page
RedirectMatch 301 ^/blog/(.*)$ /articles/$1
Content Migration: What to Keep, Cut, and Consolidate
A migration is the perfect time to audit your content — but resist the urge to delete everything that isn't performing. Here's the decision framework:
Keep (migrate 1:1)
- Pages with organic traffic (any amount)
- Pages with backlinks from external sites
- Pages that rank for target keywords (even if not #1)
- Core pages: homepage, pricing, product, about, contact
Consolidate (merge into stronger page)
- Multiple thin pages covering the same topic → one comprehensive page
- Old blog posts that overlap with newer, better versions
- Feature pages for deprecated features → redirect to current feature page
Cut (redirect to relevant page, then remove)
- Pages with zero traffic AND zero backlinks for 12+ months
- Duplicate content (printer-friendly versions, AMP copies)
- Temporary campaign landing pages that expired
Technical SEO Parity Checklist
Your new site must match or exceed the old site on every technical SEO element. Here's what to verify before launch:
| Element | Old Site | New Site | Status |
|---|---|---|---|
| Title tags | Unique per page | Must match or improve | ☐ |
| Meta descriptions | Unique per page | Must match or improve | ☐ |
| H1 tags | One per page | One per page | ☐ |
| Canonical tags | Self-referencing | Self-referencing (new URLs) | ☐ |
| Schema markup | Whatever existed | Must match + add missing | ☐ |
| Open Graph tags | Title, desc, image | Must match or improve | ☐ |
| Robots.txt | Allows crawling | Must allow crawling | ☐ |
| XML Sitemap | All indexed pages | All new URLs | ☐ |
| Internal links | Cross-linking structure | Equivalent or better | ☐ |
| Page speed | Current scores | Must match or improve | ☐ |
| Mobile responsiveness | Mobile-friendly | Mobile-friendly | ☐ |
| Image alt text | Descriptive | Must carry over | ☐ |
| hreflang (if international) | Language targeting | Must carry over | ☐ |
curl -s https://yoursite.com | grep "your page title". If the title isn't in the HTML source, Google can't see it without JavaScript execution. Read our Next.js SEO guide for details.
Launch Day: The Migration Sequence
Don't just flip a DNS switch and hope. Follow this sequence:
T-24 hours
- Final crawl of old site — confirm baseline is current
- Test all redirects on staging environment
- Verify new sitemap is ready (not yet submitted)
- Confirm Google Search Console access for new site
- Notify team: "Migration happens tomorrow at [time]. Expect [X] hours of transition."
Launch (T-0)
- Deploy new site
- Activate 301 redirects (verify with
curl -sI old-url— should return 301 + Location header) - Submit new XML sitemap to Google Search Console
- Use Google Search Console's "Request Indexing" on your top 10 pages
- If domain change: submit Change of Address in Search Console
- Test 20 random old URLs — verify they redirect correctly
T+1 hour
- Check robots.txt is serving correctly (not blocking Googlebot)
- Verify no
noindextags on the new site - Test mobile rendering
- Check page speed on key pages
- Verify analytics is tracking
T+24 hours
- Check Google Search Console for crawl errors
- Review server logs for 404s from Googlebot
- Spot-check rankings for top 10 keywords
- Verify all internal links point to new URLs (no internal redirect chains)
Post-Migration: The 90-Day Monitoring Plan
The migration isn't done when the new site is live. The real work is the 90 days after.
Week 1: Daily monitoring
- Google Search Console: crawl errors, indexing status, coverage report
- Organic traffic vs. baseline (expect a 10-20% dip — this is normal)
- Ranking positions for top 20 keywords
- Server logs: 404 errors from Googlebot (= missed redirects)
Weeks 2-4: Weekly check-ins
- Index coverage: are new URLs being indexed? Are old URLs being removed?
- Ranking recovery: are positions returning to baseline?
- Backlink check: are referring domains resolving correctly through redirects?
- Fix any new 404s that appear (Googlebot finds URLs you missed)
Months 2-3: Bi-weekly assessment
- Compare organic traffic to pre-migration baseline
- Identify pages that haven't recovered — investigate and fix
- Check redirect performance (are redirects adding latency?)
- Look for cannibalization: old indexed URLs competing with new ones
8 Migration Mistakes That Kill SaaS Rankings
1. No redirect map
"We'll figure out redirects after launch." By then, Google has already crawled your 404 pages. Every day without redirects is a day your rankings bleed. Build the redirect map before you write a single line of new code.
2. Using 302 redirects instead of 301
302 means "temporary" — Google keeps the old URL in its index, waiting for it to come back. 301 means "permanent" — Google transfers the ranking signals to the new URL. Check with: curl -sI old-url | grep "HTTP/". You want to see 301.
3. Redirecting everything to the homepage
Lazy redirect: all old URLs → homepage. Google treats this as a soft 404. You lose all page-specific ranking signals. Every old URL must redirect to its most relevant new equivalent. Yes, even if you have 500 URLs to map.
4. Changing URLs unnecessarily
New platform, new URL structure — right? Wrong. If /blog/seo-guide was working fine, keep it as /blog/seo-guide on the new platform. Every URL change is a risk, even with perfect redirects. Change URLs only when the current structure is genuinely harmful.
5. Forgetting internal links
You set up redirects for external traffic, but your own site still links to old URLs internally. Every internal link through a redirect is a wasted crawl and a speed hit. Update all internal links to point directly to new URLs — no redirect chains within your own site.
6. Launching on Friday
If something goes wrong on a Friday migration, you don't discover it until Monday — and by then, Google has spent 72 hours crawling a broken site. Migrate Tuesday through Thursday, morning, when your team is available to fix issues immediately.
7. Not preserving meta tags
The new site uses the new platform's default title tags and meta descriptions. All your carefully optimized SEO metadata is gone — replaced by auto-generated defaults. Export old meta tags in your baseline and manually apply them to the new site.
8. Skipping the staging test
You can't test redirects after they're live. Set up a staging environment that mirrors the production redirect configuration. Test every redirect. Test rendering. Test page speed. Test schema. The 2 hours you spend testing saves 2 months of recovery.
Platform-Specific Migration Guides
We've written detailed guides for the most common SaaS platform migrations:
| Migration Path | Key Concern | Guide |
|---|---|---|
| WordPress → Next.js | Server vs. client rendering | WordPress SEO + Next.js SEO |
| WordPress → Webflow | Schema markup + CMS SEO | WordPress SEO + Webflow SEO |
| Webflow → Next.js | URL structure + rendering | Webflow SEO + Next.js SEO |
| Any → Any | Full technical audit | Technical SEO Checklist |
Regardless of which platforms you're moving between, the principles in this guide apply. Baseline → Redirect map → Technical parity → Monitor.
Complete Migration SEO Checklist
✅ Pre-Migration (2-4 weeks before)
- Crawl entire current site — document every URL
- Export Google Search Console data (16 months)
- Export backlink profile (top linking pages)
- Screenshot SERP positions for top 20 keywords
- Build complete 1:1 redirect map
- Export all title tags, meta descriptions, H1s, canonical tags
- Document schema markup on every page
- Export internal linking structure
- Benchmark page speed scores
- Identify content to keep, consolidate, or cut
✅ During Migration (launch day)
- Deploy new site
- Activate all 301 redirects
- Test 20+ redirects manually (
curl -sI) - Submit new XML sitemap to Search Console
- Request indexing on top 10 pages
- Verify robots.txt allows crawling
- Verify no noindex tags on live pages
- Test mobile rendering
- Verify analytics tracking is active
- Check all internal links point to new URLs (no chains)
✅ Post-Migration (90 days)
- Daily: Check Search Console for crawl errors (week 1)
- Daily: Monitor organic traffic vs. baseline (week 1)
- Weekly: Check ranking positions for top 20 keywords
- Weekly: Fix new 404s as Google discovers them
- Bi-weekly: Compare index coverage (old vs. new URLs)
- Monthly: Full traffic comparison to baseline
- Month 3: Final assessment — are we at or above baseline?
Planning a Website Migration?
Get a free pre-migration SEO audit. We'll crawl your current site, identify your highest-risk pages, and give you a redirect map to start with — before you write a line of new code.
Get Your Free Migration Audit →Frequently Asked Questions
How long does it take to recover SEO rankings after a website migration?
With proper 301 redirects, updated sitemaps, and no content changes, most SaaS sites recover within 2-4 weeks. If you changed URLs without redirects, removed content, or switched domains, recovery can take 3-6 months — and some traffic may never come back. The key factor is whether Google can follow the redirect chain from every old URL to its new equivalent.
Should I change URLs during a website redesign?
Only if your current URLs are genuinely bad (non-descriptive, parameter-heavy, or duplicated). Every URL change is a risk — even with perfect 301 redirects, you lose some link equity. If your current URLs are clean and keyword-relevant, keep them. Change the platform, change the design, change the code — but keep the URL structure if it works.
Do 301 redirects pass full SEO value?
301 redirects pass most ranking signals, but not 100%. Google has confirmed that 301s pass PageRank, but in practice you'll see a small ranking dip during the transition period as Google recrawls and reindexes. The longer the redirect chain, the more value leaks. Keep redirects to single hops — one old URL to one new URL, no chains.
What's the difference between a site migration and a domain migration?
A site migration changes the platform, design, or URL structure while staying on the same domain. A domain migration changes the actual domain name. Domain migrations are higher risk because you lose domain authority signals, branded search equity, and all existing backlinks point to the old domain. Both need 301 redirects, but domain migrations also require Google Search Console's Change of Address tool.
When is the best time to migrate a SaaS website?
Migrate during your lowest-traffic period — usually weekends or off-season. Never migrate during a product launch, funding announcement, or marketing campaign. Allow 2-4 weeks of monitoring buffer before any major event. Also avoid migrating during Google algorithm updates.
Can I migrate from HTTP to HTTPS without losing rankings?
Yes — HTTP to HTTPS is one of the safest migrations because Google actively prefers HTTPS. Set up 301 redirects from every HTTP URL to its HTTPS equivalent, update your canonical tags, update internal links, submit the HTTPS version in Google Search Console, and update your sitemap. Most sites see no traffic loss and sometimes a small ranking boost.
Related Guides
- Technical SEO Checklist for SaaS Companies
- Next.js SEO: Why Your SaaS Website Isn't Getting Indexed
- Webflow SEO: 9 Issues We Find in Every Audit
- WordPress SEO: 10 Issues Hiding Behind Your Plugins
- Core Web Vitals for SaaS: Speed Optimization Guide
- How to Fix Noindex and Canonical Issues
- SEO Audit Results: 70+ Funded SaaS Sites
- International SEO for SaaS: How to Rank in Multiple Countries