WordPress to Headless CMS: What Changes During Migration

WordPress has years of accumulated SEO data - Yoast settings, custom fields, structured data. Moving to a headless setup means porting all of that manually, and anything you forget costs traffic.

What changes

These are the specific pitfalls of moving from WordPress to a headless CMS. Every one of them causes problems if you don't catch it before launch.

Yoast/Rank Math metadata must be ported

Yoast and Rank Math store SEO data in WordPress post meta fields that aren't exposed through the standard REST API. Your custom titles, descriptions, focus keywords, and Open Graph overrides all stay in WordPress unless you explicitly export them. If you don't port this data, your headless site ships with generic or missing metadata for every page.

WordPress custom fields have no equivalent

WordPress custom fields (ACF, CMB2, native post meta) store structured content that your theme uses for layout, featured content, and page-specific data. Most headless CMSs don't have a 1:1 mapping for these fields. You need to redesign your content schema to accommodate what was previously stored as arbitrary meta fields.

REST API data may omit SEO fields

The WordPress REST API doesn't return Yoast or Rank Math fields by default. Even with custom endpoints, some SEO data (canonical URLs, robots directives, redirect rules) isn't available through the API. You may need to write custom REST API extensions or query the database directly to get the full picture.

Routing changes break canonical URLs

WordPress generates canonical URLs based on its permalink structure. In a headless setup, canonical URL generation is your responsibility. If your frontend routing doesn't match the old WordPress URL structure exactly, canonical tags may point to wrong URLs, the WordPress instance, or be missing entirely - which confuses search engines about which URL to index.

Content may not map to headless schema

WordPress content is flexible but unstructured - a "page" can contain anything from a blog post to a product to a landing page with custom layouts. Headless CMSs typically require structured content types with defined fields. You need to plan a content architecture that maps WordPress's freeform structure into rigid schemas without losing flexibility.

RSS feed changes

WordPress generates RSS feeds automatically at /feed/ and other endpoints. Subscribers, feed readers, and aggregation services depend on these URLs. In a headless setup, RSS feed generation is your responsibility. If you don't implement feeds at the same URLs, you lose subscribers and the SEO benefits of feed-based content distribution.

What MigrateKit checks for this migration

MigrateKit compares your old WordPress site against the new headless frontend page-by-page. Here's what the scorecard covers.

Title tags

Compares every page's meta title between WordPress (including Yoast overrides) and the headless frontend. Flags pages where custom titles weren't ported.

Meta descriptions

Checks that meta descriptions match what WordPress was serving, including Rank Math or Yoast custom descriptions. Catches pages with generic or missing descriptions.

Canonical URLs

Verifies that canonical tags in the headless frontend match the canonical URLs WordPress was generating. Flags mismatches and missing canonicals.

Structured data

Checks that JSON-LD structured data exists on pages where WordPress plugins were generating it. Flags missing Article, Organization, or BreadcrumbList schema.

Internal links

Scans all internal links to find broken references, links pointing to the WordPress backend, and redirect chains created by routing differences.

Open Graph tags

Checks that social sharing metadata matches what WordPress was serving, including custom OG images and descriptions set in SEO plugins.

See how it works View a real example

Verify your WordPress to headless migration before launch.

Send the old WordPress URL and the new headless URL. The scan starts immediately and the pass/fail scorecard appears on the page.