CMS Migration and Replatforming SEO
Migrate to a new CMS without losing search signals: inventory, template parity, rendering, URL decisions, staging QA, launch, and rollback.
1 evidence signal on this page
- Related live toolCanonicalization Checker
A CMS migration replaces the system that generates and manages a website. Classify it first: preserving URLs avoids a URL move, while changing any paths requires a complete mapping and permanent redirect layer. Inventory the current site's content, templates, fields, signals, links, media, facets, rendering, integrations, and legacy redirects. Define parity as testable requirements, crawl and render staging, diff representative templates and the full URL inventory, rehearse cutover and rollback, then monitor by template and URL cohort after launch.
TL;DR — A CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. migration moves your website into a different system, such as changing a publishing platform, commerce platform, or front-end architecture. Preserve the things search engines and users already rely on: URLs, content, titles, canonicals, robots rules, structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding., internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them., images, and rendered pages. If URLs must change, map and redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. every old URL to its closest replacement. Test the new platform on staging, compare it with the current site, rehearse the launch, and keep a rollback that restores both the application and its data.
What is a CMS migration?
A CMS migration replaces the content management system or platform that creates and serves a website. WordPress to a headless system, Drupal to another enterprise CMS, or one ecommerce platform to another are common examples.
The visible design may stay similar while the technical output changes completely. The new platform can generate different URLs, HTML, metadata, navigation, filters, paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does., images, structured data, redirects, and robots directives.
Are all CMS migrations URL migrations?
No. A CMS migration can keep every public URL identical. That is usually the safer option when the existing URL structureURL structure is how the parts of a web address — scheme, domain, path, query string, and fragment — are organized and formatted. It mostly affects crawling, usability, and how engines understand a page, not rankings directly. works.
The moment a scheme, hostname, path, trailing-slash convention, filename, or meaningful parameter changes, the project also becomes a URL migration. Add the mapping, redirect, internal-link, canonical, and sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. work from the site migrations guideA site migration is any significant change to a website's URL structure, domain, platform, protocol, or hosting that can affect how search engines crawl, index, and rank it. The risk scales with how much you change at once..
What does “SEO parity” mean?
SEO parity means the new platform preserves the useful search-visible behavior of the old one. It is not pixel-perfect design parity.
For each important page type, compare:
- indexable URL and status code;
- title, description, headings, and main content;
- canonical, robots directives, and hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others.;
- structured data;
- crawlable internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them. and navigation;
- images, video, PDFs, and other media;
- mobile and rendered output;
- performance and server reliability.
Parity also includes intentional improvements. Document those separately so a useful change is not mistaken for a migration defect.
Why do CMS migrations lose traffic?
CMS migrations usually lose traffic because the new platform does not reproduce an important behavior. Common examples include old URLs returning 404, canonicals pointing at staging, category links disappearing, body content loading only after a click, product variants becoming indexable duplicates, or legacy redirects never being transferred.
The platform name is rarely the cause. The generated site is.
What is the basic process?
- Inventory the current site’s URLs, templates, content, signals, links, assets, redirects, and integrations.
- Decide whether URLs will stay the same.
- Write measurable parity requirements for every template and system behavior.
- Map content fields and migrate data into the new CMS.
- Crawl and render staging, then compare it with the saved baseline.
- Test redirects if any URLs change.
- Rehearse content freeze, final data sync, deployment, cache purge, and rollback.
- Launch, validate production immediately, and monitor by template and URL cohort.
The Website Migration Checklist provides the shared phase-based project sequence. This guide focuses on what a new CMS can change inside each phase.
Should you fix every old SEO problem during the migration?
Fix high-confidence defects when the new platform would otherwise reproduce them, but do not combine every redesign, content rewrite, architecture change, and URL cleanup into one release. Google recommends changing one major thing at a time when possible in its site-move guidance.
Separate must-fix defects from optional improvements. You need a stable baseline to diagnose what happened after launch.
TL;DR — A replatform is a contract migration between two page-generation systems. Inventory every current URL source, template, content field, internal-link rule, indexStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. control, canonical, hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others. annotation, schema object, media URL, facet, redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., and integration. Decide same-URL versus changed-URL scope before platform configuration hardens. Translate the inventory into parity tests, not a generic checklist. Migrate data, crawl raw HTML and rendered DOM on staging, diff by template and protected URL cohort, rehearse cutover and data rollback, then monitor cohorts separately so one broken template is not hidden inside site-wide totals.
Classify the replatform before selecting the plan
A CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. migration can contain several changes:
| Layer | Example change | SEO implication |
|---|---|---|
| CMS/data | New fields, taxonomies, publishing workflows | Content and metadata can be lost or transformed |
| Presentation | New templates or design system | Headings, links, schema, and main content can change |
| RenderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. | Server-rendered to client-rendered app | Discovery and rendered content need separate validation |
| Architecture | Categories, facets, paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does., search | Crawl paths and duplicate spaces can change |
| URL | Paths, parameters, host, protocol, slash rules | Requires mapping and permanent redirectsA 301 redirect is the HTTP status code for a permanent move: it tells browsers and search engines a URL has moved for good, and it's the strongest signal for consolidating a page's ranking signals onto the new URL. Google says permanent redirects don't cause a loss in PageRank. |
| Infrastructure | Host, CDN, DNS, cache | Requires capacity, response, routing, and log validation |
Write each layer into scope. A “CMS migration” that also changes URL structureURL structure is how the parts of a web address — scheme, domain, path, query string, and fragment — are organized and formatted. It mostly affects crawling, usability, and how engines understand a page, not rankings directly., hosting, renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM., and navigation is four migrations sharing one launch.
Decide same URLs versus changed URLs early
URL preservation is usually the default when existing URLs are useful and the new platform can support them. Do not accept “the platform cannot do that” without measuring the cost of redirects, recrawling, updated integrations, lost deep links, and operational complexity.
URL change can still be justified when the current structure is unstable, exposes obsolete technology, creates duplicates, or cannot represent the new information architecture. The decision should happen before themes, routes, imports, and feeds are built around a new pattern.
Changed URLs need the full URL structure migration workstream: master inventory, explicit disposition, one-to-one or justified many-to-one mapping, permanent redirects, direct internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them., updated annotations, new sitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing., and monitoring.
Build the current-state inventory from multiple systems
The current CMS database is not the website inventory. Combine:
- crawlable URLs from one or more crawls;
- XML sitemapsAn XML sitemap is a UTF-8 file listing the canonical URLs on your site (with optional lastmod) so search engines can discover and prioritize them. It's a discovery and diagnostic aid, not a guarantee of indexing — and Google ignores its priority and changefreq tags. and feed exports;
- analytics landing pages and Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. pages;
- server logs, including orphaned or legacy URLs crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. still request;
- backlink and campaign landing pages;
- media libraries, PDFs, images, video, and downloadable assets;
- internal search, faceted navigationFaceted navigation (faceted search, product filtering) lets visitors refine a list of products or content by attribute — price, color, size, brand, rating. The SEO problem: each filter combination can spawn a distinct crawlable URL, turning a small catalog into millions of near-duplicate pages that waste crawl budget and dilute ranking signals., paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does., and sort patterns;
- redirect rules from CMS, server, CDN, and application code;
- API, app, email, paid, affiliate, localizationLocalization is adapting content for a specific target market — not just translating the words, but adjusting currency, formats, idioms, cultural references, local search terms, and trust signals so the experience feels native., and feed consumers.
Assign every URL a content entity, template, indexability state, canonical target, traffic/link importance, and intended destination. The inventory is the reconciliation ledger after import.
Inventory the content model, not just page copy
Content-model mapping describes how fields and relationships move. Include:
- titles, summaries, body blocks, authors, dates, and update dates;
- taxonomies, parents, collections, categories, and tags;
- slugs, locale variants, canonical overrides, and robots controls;
- image source, alt textAlt text is the value of the `alt` attribute on an HTML `<img>` element — a short text substitute chosen for the image's purpose and context, not a literal description of what it shows. It makes images accessible to screen-reader users and helps search engines understand images, mainly for image search., captions, dimensions, crops, and focal points;
- related content, breadcrumbsBreadcrumbs are a secondary navigation trail (Home > Category > Page) that shows where a page sits in a site's hierarchy. They create internal links that pass PageRank, and when marked up with BreadcrumbList structured data they can drive the path Google shows in desktop search results., primary navigation, and contextual links;
- product identifiersProduct identifiers are the standardized values — GTIN (Global Trade Item Number), MPN (Manufacturer Part Number), and brand — that shopping feeds like Google Merchant Center and Microsoft Merchant Center use to match a product listing to the correct item in their catalog. A GTIN alone is usually enough; without one, brand + MPN is the fallback; products with none declare that with the identifier_exists attribute., prices, availability, reviews, variants, and offers;
- structured-data properties and entity relationships;
- redirects, aliases, unpublished states, scheduling, and permissions.
Field presence is not enough. Test transformation rules, null behavior, encoding, Markdown or rich-text conversion, embedded components, and references. A migrated field that renders empty is still lost content.
Turn parity into acceptance criteria
Parity requirements should be written per template. A product page and an article do not share the same content, schema, pagination, or internal-link contract.
For each template define:
- expected status and indexability;
- canonical generation rule;
- robots meta and X-Robots-TagThe X-Robots-Tag is an HTTP response header that carries the same indexing and serving directives as the robots meta tag (noindex, nofollow, nosnippet, and the rest). Because it lives in the header rather than the HTML, it's how you control indexing for non-HTML files like PDFs, images, and videos. behavior;
- title, description, H1, and main-content source fields;
- required structured-data types and visible-property alignment;
- breadcrumb, navigation, related-link, and pagination rules;
- hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others. and locale behavior;
- asset behavior and image metadata;
- raw HTML requirements and rendered DOM requirements;
- performance and availability gates;
- analytics and consent behavior.
Separate preserve, remove, and improve decisions. That prevents the QA team from restoring a known defect or accepting an accidental loss as an improvement.
Test raw HTML and rendered output
Rendering strategy is a replatforming decision, not a developer implementation detail. Google’s JavaScript SEO documentation explains that it crawls, renders, and then indexes JavaScript pages. It also says server-side or pre-rendering remains a good idea because it helps users and crawlers, and not all bots execute JavaScript.
For every protected template, compare raw HTML with the rendered DOM:
- Is the main content present without a user interaction?
- Are links real
<a href>elements with resolvable destinations? - Do status codes match error states, or does every route return a soft-404 shell?
- Are canonical and robots directives present and consistent?
- Can required JavaScript, CSS, APIs, and assets be crawled?
- Do hydrationActivating server-rendered HTML in the browser by attaching JavaScript handlers. or API failures remove content?
- Does mobile rendering contain equivalent primary content and metadata?
Google warns that when it encounters noindex, it may skip rendering, so using
JavaScript to remove an initial noindex can fail. Put the intended indexability in
the original response.
Preserve canonical and index-control logic
Canonical rules often regress from deliberate template logic to “self-canonical everything.” That can expose duplicates created by filters, tracking parameters, pagination, print views, or variants.
Document each rule as inputs and expected outputs. Test:
- absolute canonical host, scheme, path, slash, and encoding;
- self-canonicals on intended indexable pages;
- canonical targets for duplicate variants;
- robots meta and X-Robots-Tag interactions;
- canonical behavior on non-200 responses;
- sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. inclusion of intended canonical URLs only;
- consistency across desktop, mobile, and rendered output.
Use the Canonicalization Checker on representative pages, then validate templates in bulk with a crawler.
Rebuild structured data from the new source model
Structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. rarely transfers automatically because the new templates and fields change. Map each property to its new source, then confirm the markup describes visible page content.
Google recommends testing structured data with the Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test during development and monitoring rich-result reports after deployment because templating or serving issues can break it. See Google’s structured-data introduction.
Validate both syntax and eligibility. A passing validator does not guarantee a rich result, and a syntactically valid object can still describe the wrong product, article, breadcrumb, author, price, or availability.
Preserve internal-link function, not merely link count
Internal-link parity means important pages remain discoverable through equivalent or better crawl paths. Compare:
- primary and utility navigation;
- breadcrumbs and category ancestry;
- related products, related articles, and contextual links;
- pagination and load-more fallbacks;
- footer, locale, and market selectors;
- links in migrated body content;
- orphan counts, click depth, and inlink distribution.
A new design can keep the same total number of links while removing the links that actually supported deep pages. Analyze changes by destination and template.
Treat facets, parameters, and internal search as product requirements
Platforms commonly impose new filter and sort behavior. Document which combinations should be crawlable, indexable, canonicalized, linked, or blocked. Test parameter ordering, empty results, multiple selections, pagination, and mobile behavior.
Do not copy a blanket robots rule from the old platform if the new one generates different paths. Robots exclusion can reduce crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor., but it cannot consolidate signals or remove already indexed URLs by itself.
Use the Faceted Navigation Auditor to explore parameter patterns, then validate the site’s chosen crawl and index controls.
Migrate media as first-class URLs
Media migration covers more than copying files. Preserve or explicitly map:
- image, video, PDF, and download URLs;
- alt text, captions, titles, and surrounding context;
- image dimensions, formats, responsive variants, and stable source URLs;
- video players, thumbnails, transcripts, and structured data;
- PDF status, canonical headers, links, and access controls;
- CDN paths, signed URLs, hotlink rules, and cache behavior.
Google’s current mobile-first guidance recommends keeping important mobile and desktop content, metadata, structured data, and crawlable resources equivalent. It also warns that changing image URLs can cause temporary image-search loss while new URLs are processed. See mobile-first indexing best practices.
Transfer redirects and error behavior
Legacy redirects may live in the CMS, .htaccess, nginx, application middleware,
load balancers, and CDN rules. Export and flatten them before launch. A new platform
often starts with an empty redirect table and silently drops years of accumulated
URL history.
Test genuine missing content too. The platform should return a real 404 or 410, not
a 200 template with “not found” text. Preserve custom error experiences without
masking the HTTP result.
If URLs change, test every mapped old URL. Use the Redirect Map Builder for the review ledger and the Bulk HTTP Status Code Checker for deployed verification.
Keep staging private and testable
Staging access must balance protection and authorized crawling. Prefer authentication,
VPN, or network controls and give QA systems explicit access. If temporary robots or
noindex controls exist, record them in a launch-removal ledger and prove they are
absent from production.
Build a staging crawl from the complete destination inventory, not only navigation. Compare it with the baseline by template and importance cohort. The Staging vs. Production SEO Diff helps with paired samples; a full crawl handles systemic coverage.
Reconcile the migration before launch
Reconciliation answers four questions:
- Did every intended content entity import?
- Did every entity produce the expected public URL or deliberate no-URL state?
- Did every expected destination pass its template contract?
- Did every old URL receive the approved disposition?
Use counts by content type, locale, status, indexability, and template. Site-wide totals can match while an entire language, category, author archive, or media class is missing.
Rehearse the cutover and rollback
Rehearsal should include a production-like data volume and the actual sequence:
- content freeze or delta-sync start;
- final database and media import;
- redirect and edge-rule deployment;
- application, cache, queue, search-index, and feed activation;
- DNS or load-balancer switch if infrastructure changes;
- production smoke tests and crawl;
- rollback of code, configuration, database schema, and writes.
Database rollback is the hard part. Reverting application code after users create orders, accounts, comments, or content in the new schema may lose or corrupt data. Define roll-forward fixes and reconciliation alongside technical rollback.
Validate production in dependency order
Production validation should move from systemic failure to page detail:
- DNS, TLS, status, and host availability.
- Robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere., authentication, WAF, and global robots directives.
- Homepage plus one page from every protected template.
- Canonicals, hreflang, schema, links, assets, and rendering.
- Full redirect and destination inventories.
- Analytics, consent, forms, checkout, feeds, APIs, and search.
- Crawl, indexation, traffic, and conversion cohorts.
Fix template defects before individual URLs. One bad canonical partial can affect millions of pages.
Monitor by cohort after launch
Cohort monitoring groups URLs by what changed. Useful cohorts include same-URL pages, redirected pages, products, categories, articles, locales, rendered templates, media, facets, and top-linked pages.
Track successful responses, redirect failures, canonical mismatches, indexability, render completeness, internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them., sitemap state, Google-selected canonicals, clicks, impressions, conversions, and crawler activity. Compare equivalent periods and annotate unrelated campaigns, seasonality, algorithm changes, and measurement updates.
An aggregate traffic line cannot tell you whether one new template failed while another grew.
A CMS migration replaces the system that produces search-visible pages. Approve it against explicit template and URL contracts, not a design sign-off.
- URL preservation removes an avoidable migration layer when the existing structure still works.
- Template-specific parity tests catch systemic defects that manual page reviews miss.
- A rehearsed data and application rollback prevents the team from discovering after launch that code can revert but customer or editorial writes cannot.
A replatform can change URLs, content, rendering, links, metadata, structured data, media, analytics, and transactions in one release.
Risk if ignored: The new platform can launch successfully as software while deleting discoverability, serving different content, breaking transactions, or abandoning legacy URLs.
Ask your team: Which URLs and templates are protected, what intentional changes are approved, and can we reconcile every entity and write if the launch must be reversed?
AI summary
- A CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. migration changes the system that generates pages; it may also change URLs, renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM., design, architecture, hosting, and integrations.
- Decide same-URL versus changed-URL scope before the platform’s routing and imports are built.
- Build the inventory from crawls, sitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing., logs, analytics, Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results., backlinks, media, redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., and downstream consumers.
- Map content fields, relationships, taxonomy, metadata, media, schema, and workflow states, not only body copy.
- Define testable contracts per template for status, indexability, canonical, robots, content, links, schema, hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others., assets, renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM., and performance.
- Compare raw HTML and rendered output. Primary content and crawlable links should not depend on user interaction.
- Treat facets, paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does., internal search, legacy redirects, and genuine 404 behavior as platform requirements.
- Reconcile imported entities, generated destinations, template tests, and every old URL disposition before launch.
- Rehearse final sync, deployment, validation, and data-aware rollback.
- Monitor after launch by template and change cohort, not only site-wide traffic.
Official documentation
- Site moves with URL changes covers URL mapping, redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., annotations, links, sitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing., and monitoring.
- Changing your hosting applies when infrastructure also changes but public URLs do not.
- JavaScript SEO basics explains crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor., renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM., indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed., canonical, and robots behavior.
- Mobile-first indexing best practices covers content, metadata, schema, media, and resource parity.
- Structured-data introduction recommends development and post-launch validation.
- General structured-data guidelines explains technical and quality requirements.
Bing
- Website Migration with Bing covers CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. migrations, audits, redirects, logs, and monitoring. Its Site Move Tool reference is stale; use current Bing Webmaster ToolsMicrosoft's free portal for monitoring and improving how a site appears in Bing search — the peer to Google Search Console, plus IndexNow instant indexing, richer backlink data, and keyword volumes. Because Bing's index also feeds Microsoft Copilot, it doubles as a window into AI-search visibility. and IndexNowIndexNow is an open push protocol that lets you instantly tell participating search engines (Bing, Yandex, Naver, Seznam, and Yep) which URLs you've added, changed, or removed via a simple HTTP request — and one submission is shared across all of them. Google does not use it..
- IndexNow notifies Bing and participating engines about added, updated, or deleted URLs.
Quotes from the source
- “Plan your changes to your site one after the other, not everything at the same time.” Google Search Central. Jump to the guidance
- Paraphrase: For changed URLs, Google’s move documentation says each destination should identify itself as canonical. Canonical guidance
- “When Google encounters the noindex tagNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed., it may skip renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. and JavaScript execution” Google Search Central. Jump to the noindex guidance
- Paraphrase: Google still recommends server-side renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. or pre-rendering as a performance-friendly delivery option for users and crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index.. Rendering guidance
- “Be sure to check your structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. using the Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test during development”. Google Search Central. Jump to the validation guidance
CMS migration checklist
Scope and decisions
- Listed every change layer: CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms., data, templates, renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM., architecture, URL, infrastructure, analytics, and integrations.
- Approved same-URL or changed-URL scope before route implementation.
- Separated preserve, remove, and improve decisions.
- Assigned owners and pass/fail gates per template.
Inventory and migration
- Combined crawls, sitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing., logs, analytics, Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results., backlinks, and feeds.
- Inventoried media, facets, paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does., internal search, redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., APIs, and apps.
- Mapped every content field, relationship, taxonomy, locale, and workflow state.
- Reconciled entity counts and URLs by content type, locale, template, and state.
Staging QA
- Authorized crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. can access staging while public discovery is prevented.
- Raw HTML and rendered DOM tested on every protected template.
- Status, titles, headings, content, canonicals, robots, hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others., and schema diffed.
- Navigation, breadcrumbsBreadcrumbs are a secondary navigation trail (Home > Category > Page) that shows where a page sits in a site's hierarchy. They create internal links that pass PageRank, and when marked up with BreadcrumbList structured data they can drive the path Google shows in desktop search results., related links, paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does., and body links compared.
- Facets, parameters, search, empty results, variants, and genuine errors tested.
- Media URLs, metadata, formats, embeds, and structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. tested.
- Legacy redirects imported, flattened, and tested.
- Analytics, consent, forms, checkout, feeds, APIs, and search tested.
Launch and monitoring
- Final content/data sync and freeze sequence rehearsed.
- Application plus database rollback or roll-forward plan rehearsed.
- Temporary staging controls included in the removal ledger.
- Production validated in systemic-to-template-to-URL order.
- SitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. contain intended successful canonical URLsHow search engines pick one canonical URL among duplicates and consolidate signals onto it..
- Monitoring segmented by template, locale, importance, and change cohort.
The replatforming contract
Use four linked ledgers:
- Entity ledger: every content record and relationship that must migrate.
- URL ledger: every old URL and its same, moved, consolidated, retired, or excluded outcome.
- Template contract: every generated page behavior and its pass/fail tests.
- Dependency ledger: every feed, integration, asset, verification, redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., job, and business process the platform supports.
The migration is reconciled only when the ledgers agree. A content entity without an expected URL, or a public URL without an owning entity or deliberate system behavior, needs review.
The parity matrix
| Dimension | Preserve | Intentional change | Evidence |
|---|---|---|---|
| URL | Exact URL or approved mapped destination | Documented consolidation or retirement | Inventory and redirect crawl |
| Content | Required fields and visible meaning | Approved rewrite or removal | Field reconciliation and render diff |
| Signals | Canonical, robots, hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others., schema | Approved new rule | Raw/rendered crawl |
| Discovery | Important crawlable links and depth | Approved architecture improvement | Link graph comparison |
| Experience | Functional mobile page and assets | Approved redesign | Browser and transaction tests |
Does the CMS migration need a URL-move workstream?
Choose the replatforming migration path
Replatforming mistakes that create losses
Choosing URLs after the platform is built. Why it fails: routing, imports, templates, feeds, and redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. harden around accidental defaults. Do instead: make the preserve-versus-change decision before implementation.
Calling a visual match SEO parity. Why it fails: status, raw HTML, canonicals, robots, links, schema, mobile content, and errors can differ behind the same design. Do instead: test template contracts in raw and rendered responses.
Migrating only the sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing.. Why it fails: sitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. omit orphaned, redirected, legacy, parameterized, and asset URLs that still receive traffic or links. Do instead: combine crawls, logs, analytics, Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results., backlinks, and feeds.
Making every improvement at launch. Why it fails: simultaneous content, architecture, renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM., URL, and design changes make regression diagnosis harder. Do instead: separate required defects from later improvements and stage changes where practical.
Treating rollback as code deployment. Why it fails: new-schema writes, orders, uploads, and content edits may not survive an application rollback. Do instead: plan data reconciliation and roll-forward fixes too.
Common replatforming failures
Destination counts are lower than the source inventory
Likely cause: failed imports, excluded states, locale gaps, unsupported content types, or entity deduplication. Fix: reconcile by content type, locale, workflow state, and template rather than comparing one total.
Pages return 200 but lose content in crawls
Likely cause: client renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM., blocked resources, API failures, interaction-only loading, or hydrationActivating server-rendered HTML in the browser by attaching JavaScript handlers. errors. Fix: compare raw and rendered HTML, console/network errors, and URL InspectionA Google Search Console feature that reports how Google sees one specific URL on a property you own. By default it shows the last-indexed snapshot; a separate \"Test live URL\" mode fetches the current version.’s rendered view on representative pages.
Google selects unexpected canonicals
Likely cause: copied canonical rules, old/staging targets, duplicate routes, internal-link conflicts, sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. conflicts, or substantially changed content. Fix: align the template canonical, direct links, redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., and sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. with the intended URL, then allow recrawling.
Category or product pages become crawl traps
Likely cause: new faceted routes, parameter ordering, infinite combinations, calendar paths, or crawlable internal search. Fix: define allowed combinations, link only useful pages, return honest empty states, and apply canonical or indexStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. controls according to the product requirement.
Legacy links start returning 404
Likely cause: redirects existed outside the old CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. or the new rule engine changed ordering. Fix: compile rules from every old layer, flatten chains, and test the complete historical URL inventory.
Structured data passes but describes the wrong entity
Likely cause: incorrect field mapping or a template renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. parent data, placeholder values, or stale cache. Fix: compare markup with visible content and source records. Syntax validation alone cannot prove semantic accuracy.
Patrick's relevant free tools
- Redirect Chain Mapper — Trace every hop of a redirect chain — status codes, what changed at each step (HTTPS, www, slash, domain, path), a severity verdict, meta-refresh detection, and cleanup rules exportable for Cloudflare, .htaccess, and nginx. Single URL or batch of 8.
Tools for CMS migration QA
- SEO Migration Planner & Validator combines map review, redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. verification, old-URL status, and sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. comparison.
- Redirect Map Builder helps review exact, uncertain, consolidated, unmatched, and retired URL outcomes when paths change.
- Staging vs. Production SEO Diff compares status, redirects, canonicals, directives, selected headers, schema, and content.
- Canonicalization Checker diagnoses observable canonical signals on a representative page.
- Schema Validator checks structured-data syntax and extracted entities; use Google’s Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test for Google-feature eligibility.
- Faceted Navigation Auditor explores crawl and parameter risks introduced by new filters.
- Link Analyzer checks rendered internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them. on representative templates.
- Bulk HTTP Status Code Checker validates destination and historical URL cohorts after deployment.
Prove the CMS migration shipped correctly
Entity-to-URL reconciliation test
- Test to run: Join the source entity export, destination entity export, expected URL ledger, and destination crawl by stable content ID.
- Expected result: Every in-scope entity has its approved state and URL; every public destination has an owning entity or documented system purpose.
- Failure interpretation: Import gaps, duplicates, route collisions, or excluded states have left content missing or created unintended pages.
- Monitoring window: Before launch, after final sync, and after any import repair.
- Rollback trigger: A protected content type or locale cannot be reconciled before the launch decision.
Template contract test
- Test to run: Crawl and render a stratified sample from each protected template, diffing status, content, metadata, canonicals, directives, schema, links, assets, and mobile output.
- Expected result: Every preserve requirement passes and every difference maps to an approved intentional change.
- Failure interpretation: A component, field mapping, route, or renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. layer is changing search-visible output systemically.
- Monitoring window: On staging, immediately after launch, and after template fixes.
- Rollback trigger: A site-wide or high-value template loses indexability, content, canonical integrity, or critical function and cannot be repaired in the window.
Redirect and error-state test
- Test to run: Run every old URL through the Bulk HTTP Status Code Checker or a full crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. and test known missing routes.
- Expected result: Moved URLs reach approved equivalents through one permanent redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.; preserved URLs remain successful; retired URLs return planned 404 or 410.
- Failure interpretation: Missing rules, wrong ordering, chains, soft 404sA soft 404 is a URL that returns a success status code (usually 200 OK) even though the page is empty, missing, or shows a 'not found' message. It isn't a status code a server sends — it's a label search engines apply after comparing the response code against the rendered content, and they treat the page like a 404 for indexing., or catch-all routing is obscuring the intended disposition.
- Monitoring window: Staging where possible, launch hour, and after each rule change.
- Rollback trigger: Systemic rule failure makes protected URLs unavailable or sends them to irrelevant destinations.
Data-aware rollback rehearsal
- Test to run: Execute the documented rollback in a production-like rehearsal, including writes created after cutover.
- Expected result: Code, schema, content, orders, sessions, uploads, queues, and integrations reach a defined consistent state without silent loss.
- Failure interpretation: The plan can restore software but cannot reconcile data produced by the new platform.
- Monitoring window: Before launch and after material schema or cutover changes.
- Rollback trigger: No safe rollback or roll-forward path exists for critical writes.
Resources worth your time
My related writing
- A Website Migration Takes More Than a Checklist to Be Successful covers the shared project process, staging, parity, and monitoring.
- Redirects for SEO covers the redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. layer that must be transferred or rebuilt when replatforming changes routes.
Related guides on this site
- Site MigrationsA site migration is any significant change to a website's URL structure, domain, platform, protocol, or hosting that can affect how search engines crawl, index, and rank it. The risk scales with how much you change at once. covers migration types, shared risks, and the universal process.
- Website Migration Checklist provides a project-ready sequence.
- Website Redesign SEO ChecklistA website redesign SEO checklist is the step-by-step task list for refreshing a site's visual design, templates, or CMS theme while keeping the same URLs — without silently losing the on-page and technical SEO elements (titles, meta descriptions, headings, internal links, structured data, canonical tags, alt text) that were earning rankings under the old design. applies when templates change while URLs remain stable.
- JavaScript SEOMaking sure search engines can crawl, render, and index content that depends on JavaScript. covers renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. and discovery in more depth.
From around the industry
Test yourself: CMS Migration and Replatforming SEO
Five questions on scope, parity, renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM., reconciliation, and rollback. Pick an answer for each, then check.
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.