Domain Migration with SEO Positions Preservation
Imagine your site losing 80% traffic in a week – that's how unprepared domain changes often end. We, engineers with experience in over 50 successful migrations, know how to avoid this. Proper preparation and redirect configuration reduce position loss from 50–80% to 10–20%, and recovery time from 6–12 months to 2–4. Our approach preserves domain authority and minimizes risks for your business.
Why Domain Migration Is a Risk
Search engines perceive a new domain as a new site. Without correct 301 redirects, all accumulated link equity is lost. Typical problems: indexing drops, content duplication, domain history reset. Even with proper redirects, the first two weeks usually see a traffic dip – this is normal if it doesn't exceed 30%.
How We Minimize Losses: Plan and Stages
We use a proven algorithm refined across dozens of projects of various scales. Here is what our migration plan includes:
- Full audit of current URLs and site structure
- Generation of redirect map using Screaming Frog
- Server-level 301 redirects (Nginx/Apache)
- Update internal links and canonical URLs
- Register new domain in Google Search Console and Yandex.Webmaster
- Submit Change of Address in GSC
- Daily position monitoring for the first month
| Stage |
Actions |
Timeline |
| Audit |
Full analysis of current URLs, backlinks, structure |
1–2 days |
| Preparation |
Deploy copy on new domain, fix links |
3–5 days |
| Redirect setup |
Create 301 redirect table, configure server |
1–2 days |
| DNS switch |
Change DNS, verify accessibility |
1 day |
| Monitoring |
Daily check of positions, indexing |
30 days |
Compare: the standard approach leads to up to 80% traffic loss, ours – no more than 20%. That's 4 times more efficient and saves up to 40% of recovery budget.
How Fast Can Rankings Recover After a Domain Change?
Recovery takes 2–4 months with proper setup. First 2 weeks – a 20–40% drop, then stabilization, and by months 3–4 positions reach 80–95% of the original. Key factors: correct 301 redirects, fast indexing of the new domain, and no technical errors.
301 Redirects: Nginx and Apache Configuration
# Old domain: redirect everything to new
server {
server_name old-domain.com www.old-domain.com;
return 301 https://new-domain.com$request_uri;
}
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.com$ [NC]
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]
Setting Up Google and Yandex Tools
Change of Address in Google Search Console
GSC → Old Property → Settings → Change of Address → Select new property.
Requirements:
- Both domains verified in GSC
- 301 redirects active for at least 180 days
- Site accessible on new domain
Update in Yandex.Webmaster
Yandex does not have an automatic Change of Address. You need to:
- Add the new site to Webmaster
- Add the new domain's sitemap
- Yandex will pick up the 301 redirects on its own within 2–8 weeks
What to Do If Traffic Drops?
If positions drop more than expected, verify redirect integrity. Every old URL must lead to a corresponding new one without chains. Ensure the new domain is being indexed, and update internal linking. Also increase crawl frequency via Sitemap. For significant losses, contact us for a free audit.
Updating Backlinks
Send emails to owners of sites with the most links to your domain. Tools: Ahrefs, Majestic, Semrush for finding backlinks. A 301 redirect passes up to 90% of link equity, but manual updates speed up the process.
Monitoring After the Switch
# Script to check positions via Semrush API
import requests
def check_keyword_positions(domain, keywords):
positions = {}
for kw in keywords:
resp = requests.get(
'https://api.semrush.com/',
params={
'action': 'report',
'type': 'domain_organic',
'key': SEMRUSH_KEY,
'domain': domain,
'phrase': kw,
'database': 'ru',
}
)
positions[kw] = parse_position(resp.text)
return positions
We track positions weekly for the first 3 months. Typical behavior:
- Weeks 1–2: 20–40% drop
- Weeks 3–6: stabilization
- Months 2–4: recovery to 80–95% of original
Results and Guarantees
After migration, we deliver:
- Full redirect report
- Instructions for ongoing monitoring
- Access to server and control panels
- One month of support: daily position checks and rapid issue fixes
We guarantee that 4 months after migration your traffic recovers to at least 80% of the original level. If not, we perform an additional audit free of charge.
Migration timelines depend on site size: from 1 week for small projects to 4 weeks for large portals with millions of pages. Cost is calculated individually after an audit. Contact us for a consultation or order an audit before migration – we will prepare an accurate estimate.
Website Redesign and Migration: CMS Change, SEO Preservation
A client came to us 6 weeks after a self-attempted redesign: 'We moved from WordPress to Tilda, traffic dropped by 70%.' I opened Google Search Console — 847 pages returned 404, the URL structure had completely changed, not a single 301 redirect was in place. Yandex hadn't reindexed the new site yet, positions collapsed. Recovery took 4 months and resulted in significant revenue loss for the quarter. Our experience — over 7 years and 80+ successful migrations, we guarantee position retention with the right approach.
Why Do Migrations Break SEO?
Search engines have indexed specific URLs. If /catalog/shoes/nike-air-max-270 turned into /products/nike-air-max-270 without a 301 redirect — all the link equity, traffic, and rankings go nowhere. Google says 301 passes ~99% of PageRank, but in practice positions recover over 2–8 weeks, not instantly.
Commonly, SEO gets broken not out of malice, but because a developer doesn't view the URL structure as a public API. Here are typical breakages:
| Problem |
Cause |
Solution |
| Duplicate content |
New site opened parallel to old |
Disable indexing of dev version, set canonical |
| Loss of metadata |
Title and description left in old CMS |
Export via API, mass import with verification |
| Canonical changes |
Pagination and filters reset |
Lock before development, implement in template |
| Speed drop |
Heavy sections, unoptimized images |
Optimize LCP, CLS, TTFB before launch |
How to Recover Traffic After a Failed Migration?
If traffic dropped, act immediately:
- Crawl the new site for 404s and compare with the pre-migration URL list.
- Create redirects for all lost pages with traffic >0.
- Check structured data and meta tags on a test sample.
- Daily monitor Coverage in Search Console and positions for top 50 queries.
- If after 2 weeks traffic does not recover — deep audit of redirects (transitivity, chains, loops).
In our practice, a large e-commerce site lost 50% of traffic when moving from Bitrix to React + Strapi. We restored 95% of redirects in three days, and within 3 weeks traffic returned to 90% of original.
What Does a Pre-Migration Audit Include?
Before starting development on the new site:
- Full crawl of current site via Screaming Frog or Sitebulb. Get list of all indexable URLs with traffic from Google Search Console.
- Export all pages with organic traffic >0 over the last 6 months — these are priority for redirects.
- Record all external backlinks to specific pages — Ahrefs, Semrush.
- Snapshot current positions for key queries — baseline for post-migration comparison.
- Save Core Web Vitals from Search Console for the previous 90 days.
Table for recording:
| Audit Stage |
Tool |
Criticality |
| URL collection |
Screaming Frog + GSC |
High |
| Page traffic |
Google Analytics / Search Console |
High |
| External links |
Ahrefs / Majestic |
Medium |
| Positions |
Yandex Wordstat / Serpstat |
Medium |
| Core Web Vitals |
GSC CrUX |
High |
Contact us for a detailed pre-migration audit — we will help identify all risks and create an action plan.
URL Mapping and Redirects
For projects with 200+ pages, we create a mapping table: old URL → new URL → status (301, merged with another page, deleted). Each row is verified: does the content actually migrate here?
In Laravel, redirects are handled via configuration file and middleware, not .htaccess — faster and more manageable. For WordPress → Next.js: redirects are set in next.config.js (static) and at the Nginx/CDN level for dynamic ones. Old .htaccess on shared hosting with 500+ lines of redirects is a special hell. Each redirect is checked sequentially, performance suffers. We move to Nginx map directive or Redis cache for dynamic lookup. More at Wikipedia: HTTP 301.
How to Migrate Content from Different CMSs?
WordPress → Headless CMS (Contentful, Strapi, Sanity):
WordPress REST API or WP All Export to export posts, meta fields, media files. Migration script in Node.js: parse export, transform structure, upload via CMS API. Media files are reuploaded to new storage, links updated in content. Typical problem — shortcodes in WordPress content ([gallery id="123"]): need parser and transformation to new format.
1C-Bitrix → modern stack:
Bitrix stores content in non-standard tables with IBLOCK_ELEMENT_PROPERTY. Direct SQL export via phpMyAdmin or Bitrix API. Transformation is the longest part due to specific Bitrix data structure.
Heavy WYSIWYG → structured content:
Years of editing in FCKEditor/TinyMCE leave inline styles, non-standard tags, broken attributes. HTML sanitize + transformation to Markdown or Portable Text (Sanity) with manual check of problematic pages.
| CMS |
Migration Tools |
Complexity |
Risks |
| WordPress |
WP All Export, WP-CLI, REST API |
Medium |
Shortcodes, meta fields |
| 1C-Bitrix |
Bitrix API, SQL export |
High |
Complex structure, infoblock properties |
| Joomla |
J2XML, direct DB export |
High |
Outdated extensions |
| Tilda/Readymag |
API export (limited) |
Medium |
No full content access |
How to Preserve Technical SEO Elements During Migration?
Structured data (Schema.org) — if the old site had Product, Article, BreadcrumbList markup, they must be on the new site too. Google Search Console → Enhancement reports will show loss of rich snippets.
Sitemap XML: generated automatically, submitted to GSC a day after launch. Old sitemap remains until full reindexing.
hreflang for multilingual sites: if tags are lost during migration, conflicts between language versions in search results will start within weeks.
Open Graph and Twitter Card meta tags — often forgotten when changing template, pages stop displaying correctly when shared on social networks.
Launch and First Weeks Monitoring
DNS propagation: DNS switching takes up to 48 hours, plan launch with buffer. Cloudflare as DNS provider — propagation takes minutes, not hours.
After launch, monitor daily: Search Console → Coverage (indexing errors), Analytics → organic traffic, year-over-year comparison, crawl site for 404 errors.
First 2 weeks are critical. If traffic drops more than 30% — immediate audit of redirects and comparison with pre-migration crawl.
Launch checklist (spoiler)
- [ ] All 301 redirects work and do not form chains
- [ ] Sitemap submitted to GSC and Yandex.Webmaster
- [ ] Canonical tags set on all pages
- [ ] Open Graph / Twitter Card display checked
- [ ] robots.txt and noindex meta tags adjusted
- [ ] Core Web Vitals in green zone (LCP <2.5s, CLS <0.1, INP <200ms)
What the Service Includes
Results you receive:
- Migration plan with URL mapping and redirects in Excel/Google Sheets format.
- Configured 301 redirects at server level (Nginx/Cloudflare/Vercel).
- Migrated content with integrity check: images, meta fields, links.
- Structured data (Schema.org) on the new site, identical to old or improved.
- SEO report: position trend at 1, 3, and 6 weeks after launch.
- Coverage monitoring in Search Console with error notifications.
- Guaranteed position retention: if traffic drops more than 15% within the first month — free audit and correction.
Timelines and Estimates
- Redesign with migration for a small site (up to 100 pages): 4–8 weeks.
- E-commerce migration with 500+ product pages: 8–16 weeks.
- Only technical migration part (redirects, metadata) without redesign: 1–3 weeks.
Cost is calculated individually based on scope.
Get a consultation for your project — we will respond within a day. Order a pre-migration audit of your site and receive a detailed proposal with a redirect plan. Contact us to discuss details.