Migration·8 min read·

How do I avoid SEO losses during migration?

Set up 301 redirects, time your sitemap resubmission correctly, keep canonical URLs consistent, and complete the Google Search Console post-migration checklist.

Migrating a blog is the single most dangerous thing you can do to your search rankings if you don't know what you're doing. Done wrong, you can lose 40–80% of organic traffic in the first month. Done right, you barely see a blip. This guide tells you exactly what to do, in what order, to protect the SEO equity you've built.

Why rankings drop during migration

Google's ranking signal is tied to URLs. When a post moves from olddomain.com/my-post to newdomain.com/my-post, Google sees a brand-new page with no backlinks, no engagement history, and no authority — at least until it crawls the 301 redirect and transfers the signal. If you skip 301 redirects, the old ranking disappears and the new one starts from zero. Even with 301 redirects, there's usually a temporary dip of 2–8 weeks while Google re-crawls and reattributes everything.

Step 1 — Audit your current top URLs before migration

In Google Search Console, go to Performance → Pages and export the top 50–100 pages sorted by clicks. These are your highest-value URLs — the ones that absolutely need 301 redirects. Also check Google Analytics (or Plausible) for the top landing pages by session count. Keep a spreadsheet: old URL → new URL → redirect set (yes/no) → verified (yes/no).

Step 2 — Set up 301 redirects

VeloCMS has a built-in redirect manager at Admin → Settings → Redirects. Add each old URL as a source and the new VeloCMS URL as the destination. For large redirect lists (100+), use the CSV bulk import: click 'Import CSV' and upload a two-column CSV (source, destination). Every redirect in this tool is a proper 301 (permanent) — not 302 (temporary). 302s don't pass link equity.

# redirects.csv — upload via Admin → Settings → Redirects → Import CSV
/old-post-slug,/new-post-slug
/category/old-category-name,/tag/new-tag-name
/about-us,/about
/contact-page,/contact

Step 3 — Verify 301 redirects before DNS cutover

Before you cut over DNS, test redirects on your VeloCMS staging subdomain. Use curl to verify each redirect returns a 301 with the correct Location header. For a big site, write a quick bash loop using your audit spreadsheet. Fix any gaps before you flip DNS.

# Test 301 for a single URL
curl -I https://yourname.velocms.org/old-post-slug
# Expected: HTTP/2 301, Location: https://yourdomain.com/new-post-slug

# Batch check from a list file (one old slug per line)
while IFS= read -r slug; do
  echo -n "$slug → "
  curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" "https://yourname.velocms.org/$slug"
done < old-slugs.txt

Step 4 — Update canonical URLs

VeloCMS adds a canonical URL tag to every post automatically, pointing to the post's URL on your domain. If you're cross-posting on Medium or Substack during the transition, update those posts' canonical URLs to your new VeloCMS domain. The canonical tag is the primary signal Google uses to determine the authoritative source — getting this right is as important as 301 redirects.

Step 5 — Submit your new sitemap to Google Search Console

VeloCMS auto-generates a sitemap at yourdomain.com/sitemap.xml. After DNS cutover, log in to Google Search Console for your new domain property and submit the sitemap under Indexing → Sitemaps → Add a new sitemap. Also delete the old sitemap if it's still in GSC from your previous platform — mixed signals slow re-indexing.

Request indexing for your top 20 pages manually in GSC: URL Inspection → Enter URL → Request indexing. Google doesn't guarantee immediate crawling, but it prioritises manually requested URLs in its queue.

Step 6 — Monitor Search Console for coverage errors

After migration, watch GSC → Indexing → Pages daily for the first 2 weeks. Look for 'Page with redirect' errors (means the redirect chain is longer than one hop — simplify it), 'Not found (404)' errors (means a URL is being requested but has no redirect — add one), and 'Excluded by noindex' (check your VeloCMS robots settings — new blogs default to noindex: false but verify).

Step 7 — Don't forget Bing and other search engines

Bing Webmaster Tools (at bing.com/webmasters) has a sitemap submission equivalent to GSC. If you have meaningful traffic from Bing, submit there too. Duck DuckGo, Yahoo, and most other search engines pull from Bing's index — submitting to Bing covers them indirectly.

Frequently asked questions

  • How long will the ranking dip last? With 301 redirects in place, most sites recover to pre-migration levels in 4–8 weeks. Without 301 redirects, recovery can take 6–12 months or never fully happen.
  • Do I need redirects if my new URLs are identical to the old ones? No — if the slug, domain, and path are identical, Google sees the same URL and rankings transfer immediately with no action needed.
  • What if I'm moving from an HTTP site to HTTPS? Google treats HTTP and HTTPS as separate URLs. Set up a server-level redirect from HTTP to HTTPS and GSC will attribute the signal correctly.
  • Should I change all my slugs during migration? No — changing URLs creates unnecessary redirect hops. Migrate with existing slugs unless a specific URL is performing badly.
  • How do I know if my SEO recovery is on track? Post-migration, compare GSC clicks and impressions week-over-week. A decline of 10–30% in week 1 that recovers by week 6–8 is normal. A continued decline past week 10 suggests redirect gaps.