How to Keep SEO Positions When Migrating a Site?
Imagine: you move to a new engine, and on launch day you see empty titles and 404 on every page. Losing positions for a single high-volume query can cost up to 200,000 rubles monthly. This scenario occurs on dozens of projects. Without proper SEO data transfer and redirects, search results reset in hours, and recovery takes months. Our approach is automated export, manual validation, and a detailed checklist. Automation cuts transfer time by 3–4 times compared to manual copying, and manual validation of key pages eliminates mapping errors. We have transferred SEO data for 50+ projects — from small blogs to e-commerce stores with 15,000 products.
How We Transfer Meta Tags Without Loss
The main reasons for loss are different storage formats for meta fields in old and new CMS, missing URL mapping, and forgotten plugin redirects. For example, in WordPress (Yoast) meta tags live in wp_postmeta with keys like _yoast_wpseo_title, while in a new headless CMS they reside in a seo.metaTitle JSON field. We automatically transform the structure, preserving all relationships. We write a Python script that reads the old database, maps fields to the new schema, and uploads via REST API. This eliminates human error and speeds up transfer.
| Data Type | Example Field | Source (WP) | Target (Strapi) |
|---|---|---|---|
| Meta title | _yoast_wpseo_title |
wp_postmeta |
seo.metaTitle |
| Meta description | _yoast_wpseo_metadesc |
wp_postmeta |
seo.metaDescription |
| Open Graph | og:title, og:description |
_yoast_wpseo_opengraph-title |
seo.openGraph |
| Canonical | canonical |
_yoast_wpseo_canonical |
seo.canonicalURL |
| Robots noindex | noindex |
_yoast_wpseo_meta-robots-noindex |
seo.metaRobots |
| Alt texts | alt |
wp_postmeta (attachments) |
Mapping via media ID |
| Schema.org | Article, Product, BreadcrumbList |
JSON-LD in content | Import via API |
The key point: we don't just copy fields; we validate them during import. For example, meta description length must not exceed 160 characters — the script automatically truncates and logs the change. According to Google Search Central, canonical URL is mandatory to avoid duplication.
List of Transferred Data
Besides basic meta tags, we transfer hreflang attributes, canonical URLs, Schema.org markup, and image alt texts. Each element is critical for preserving positions. For instance, missing canonical can cause page duplication, leading to content penalties. Manual verification of 100 pages takes about 5 hours; automated verification takes 10 minutes — 30 times faster.
Why Redirects Are Critical for SEO
Even one broken link can cost several positions. The principle: every old URL must return 301 to a relevant new one. According to the HTTP/1.1 specification, a 301 redirect passes page authority. We avoid redirect chains (301 → 302) deeper than one hop. Configuring via nginx map file gives zero delay and does not load the CMS.
map $request_uri $redirect_uri { default ""; "/old-page" "/new-page"; "/category/news" "/blog/news"; } server { if ($redirect_uri != "") { return 301 $redirect_uri; } } For comparison, the Redirection plugin in WordPress creates 301 redirects via PHP, which slows down server response. nginx map works at the kernel level, ensuring minimal TTFB.
| Method | Performance | Setup Complexity | Support |
|---|---|---|---|
| nginx map | High | Medium | Any nginx server |
| .htaccess | Medium | Low | Apache |
| Plugin (Redirection) | Low | Very low | WordPress |
How We Validate the Result
After import, we run a validation script that crawls all old URLs from sitemap.xml and checks:
- Response code (301 or 200) — not 404 or 500.
- Presence of
<title>and<meta name="description">on target pages. - Match of canonical URL to target.
- No redirect chains.
For the most important pages (landings, high-traffic categories), we perform manual verification: compare old and new meta tags, check indexing in Search Console. Typical migration errors:
- Using 302 instead of 301 (temporary redirects do not pass authority).
- Forgotten plugin redirects (e.g., Redirection does not export all rules).
- Missing mapping for custom fields (ACF, Pods).
All these errors are identified during audit and fixed before launch.
How We Transfer SEO Data: Step by Step
- Audit the old CMS — identify all SEO field sources: plugins, custom meta boxes, ACF.
- Export to universal JSON — Python script dumps data from WordPress (or other CMS) database.
- Transform for the new CMS — field mapping:
_yoast_wpseo_title→seo.metaTitle,_yoast_wpseo_robots→seo.metaRobots. - Import via REST API — batch upload with error handling (timeouts, duplicates).
- Generate redirects — create CSV file
old_url, new_url, 301and nginx map config. - Validate — check all URLs for 404, redirect chains, presence of meta tags and Schema.org.
Case study: Migrated an e-commerce store with 15,000 products from WordPress (WooCommerce) to Strapi + Next.js. Old category URLs changed structure — /category/electronics → /catalog/electronics. We wrote mapping via CSV, uploaded 12,000 redirects in 2 days. Result: positions for 90% of queries unchanged, traffic grew 3% due to site speed improvement. Automation alone saved the client 40 hours of manual work, which at a rate of 3,000 rubles/hour amounts to 120,000 rubles.
When transferring 10,000 pages, each URL is processed individually.
What's Included in the Work?
- Complete map of old and new URLs (all pages, including archives).
- Export of all SEO fields (title, description, OG, Schema.org, hreflang).
- Generation and setup of 301 redirects (nginx map or CSV).
- Data import into the new CMS via API.
- Validation with automated report (statuses, errors).
- Manual check of top 20 pages by traffic.
- Documentation of the process and access handover.
Timeline and Cost
Full SEO data transfer (export, import, redirects, validation) takes 2 to 5 business days depending on volume and complexity. Cost is calculated individually — depends on page count, number of CMS fields, and need for custom transformations. Contact us to get an estimate for your project within one day.
Why Choose Us?
- Over 5 years of experience in web development and migrations.
- 50+ successful SEO data transfer projects.
- Position retention guarantee — if positions drop due to our error, we fix it for free.
- Certified engineers in WordPress, Strapi, Next.js.
Want to avoid traffic loss during migration? Order an SEO transfer audit right now — get a consultation and preliminary work plan within a day.







