If you want to migrate off WordPress without losing SEO, the only thing that really matters is a meticulous 1:1 redirect map. We moved Satya Recs—a Lisbon multidisciplinary label with vinyl releases, watercolour galleries, and short films—off WordPress and into a static stack without a single organic ranking shift. The same discipline works for any site, as long as you treat URL continuity as non-negotiable.
The Only Way to Migrate Off WordPress Without Losing SEO
Takeaway: A migration’s SEO risk lives entirely in the redirect gap. If every old URL maps to an identical new URL, search engines see the same site with a faster backend. Miss one URL, and you’re bleeding equity.
Most “I lost all my traffic” stories come from migrations that bulk-redirect everything to the homepage, rename slugs for a cleaner look, or drop archives entirely. Zebuck’s cross-platform guide underlines the same principle: clean URL preservation is the backbone of traffic continuity. Our work on Satya Recs proved it. Every release page (/releases/vinyl/nebula), gallery, and editorial post stayed at its exact WordPress permalink on the new static site. Not a single redirect chain, not a single lost indexed path.
Build a 1:1 Redirect Map First
Takeaway: Before writing a line of new code, scrape every live URL and create a literal CSV that maps old_path -> new_path with a 301 status code. This map is your insurance policy.
We generated Satya Recs’ map by pulling all posts, pages, custom post types (releases, mixes), and taxonomy archives from the WordPress REST API and comparing them to the planned static routes. Here’s a stripped-down script that does the same from a standard XML sitemap:
import requests, xml.etree.ElementTree as ET, csv
resp = requests.get('https://oldsite.com/sitemap.xml')
root = ET.fromstring(resp.content)
urls = [url.text for url in root.findall('.//{http://www.sitemaps.org/schemas/sitemap/0.9}loc')]
with open('redirect_map.csv', 'w', newline='') as f:
writer = csv.writer(f)
for url in urls:
path = url.replace('https://oldsite.com', '')
writer.writerow([path, path, 301])
That CSV later turns into platform-specific rules. For Satya Recs, which landed on Netlify, we translated it into a _redirects file like this:
/releases/vinyl/nebula /releases/vinyl/nebula 301
/artwork/water /artwork/water 301
When you need to keep the exact same structure, every row is an identity mapping. If you do have to change a slug, the old path gets the redirect and the new path becomes the target—but we’ll get to why that should be a last resort. A ready-to-deploy redirect map is the core of our migration service.
Preserve the URL Structure Exactly
Takeaway: Do not change a single slug, trailing slash rule, or category base unless failure is acceptable. Alex Collier’s migration guide warns that even a domain change during a move dramatically raises the chance of ranking loss. The same logic applies to path changes: every alteration discards backlinks, devalues internal anchor text, and forces search engines to re-evaluate trust.
For Satya Recs, we kept /releases/..., /artwork/..., /film/... exactly as WordPress had them. WordPress’s default trailing-slash convention stayed intact on the static side because we configured the static router to return the same canonical URLs. That attention to detail prevents the silent duplicate-content sinkhole where the same page lives at /releases/vinyl and /releases/vinyl/ and neither ranks well.
Handle Special Cases: Bandcamp, External Links, and Archives
Takeaway: Not every old URL needs a redirect; some deliberately point off-site. Know the difference so you don’t accidentally 301 an external commerce link and break the UX.
Satya Recs sold vinyls and digital releases through Bandcamp. The purchase buttons on each release page linked directly to bandcamp.com—those URLs stayed as-is, no redirect needed. The same held for the embedded Mixcloud player. The redirect map only touched internal pages: editorial posts, release landing pages, artist bios, and archive lists. We made sure taxonomy-based archives (/category/paintings) continued to resolve, because WordPress generates them and users sometimes hit them from search. Pressable’s migration checklist echoes that even archive pagination and RSS feeds need attention; a manual spot-check of 20-30 critical URLs caught any oversights.
Verify SEO Metadata and Structured Data Post-Migration
Takeaway: A redirect map solves the URL layer, but on-page SEO elements—titles, meta descriptions, canonical tags, JSON-LD—still need verification. One missing <title> or a canonical pointing to the old domain can nullify the migration effort.
After Satya Recs went live, we ran a headless browser audit against a list of top-traffic pages:
# Quick sanity check with curl and grep
while read url; do
echo -n "$url: "
curl -s "$url" | grep -o '<title>[^<]*</title>'
done < top_pages.txt
This confirmed every release page still carried the artist name and title, every artwork gallery had its SEO description, and every JSON-LD Article block included the correct mainEntityOfPage URL. Pressable’s advice on manual redirect checking applies equally here: random spot-checks with Search Console’s URL Inspection tool give you immediate confidence that Google is seeing the right signals.
Monitor and Recover Within 48 Hours
Takeaway: The cutover window is a live experiment. Submit the new sitemap immediately, keep the old domain’s verified property in Search Console, and watch the Coverage report like a hawk.
For Satya Recs, zero errors appeared in the first two days. That’s the goal. If you do see unexpected 404s, it’s almost always a missing redirect map row. The fix is as fast as adding one line to _redirects and pushing—no database round-trip, no cache purge. The Digital Fshat 12‑month roadmap emphasizes that traffic bleeds happen when teams stop watching after launch; the first 48 hours are when you can head off a drop before it solidifies in rankings.
We Build Migration Redirect Maps That Actually Work
Takeaway: The tooling exists, but the discipline is rare. Our migration deliverable always includes a verified, 1:1 redirect map—the same kind that kept Satya Recs’ SEO intact. If you’d rather not spend a weekend grepping sitemaps, start a project with us.
FAQ
Will my existing SEO content rank the same after migrating off WordPress?
If you preserve exact URLs, metadata, and structured data, and implement 301 redirects for any changed paths, rankings typically stabilize within days. We maintained all of these for Satya Recs and saw zero organic traffic loss.
How long does it take to see rankings recover after a WordPress migration?
Google usually reprocesses the site within 48 hours if you submit updated sitemaps and have clean redirects. Minor fluctuations can last a week, but a major drop almost always signals a gap in the redirect map.
What if I can’t keep the same URL structure?
Map every old URL to its new equivalent with a precise 301 redirect. Still, changing URLs introduces risk—we strongly recommend preserving slugs to avoid short-term loss, and only resorting to path changes when absolutely unavoidable.
Top comments (0)