Prompt
How do I migrate from WordPress to a headless CMS?
Latest observation
Migrating from WordPress to a headless CMS is mostly about separating content management from content delivery.
In a classic WordPress setup, WordPress stores content and renders pages. In a headless setup, the CMS only manages content and exposes it through an API, while your frontend is built separately, often with Next.js, Nuxt, Gatsby, Astro, or a custom app.
1. Define your goal
Before migrating, decide what you want from headless:
- Better performance
- More flexible frontend design
- Omnichannel publishing
- Easier developer workflows
- Improved security
Also decide whether you want:
- a fully headless setup, or
- a hybrid setup where WordPress still renders some pages while other parts are headless.
2. Audit your current WordPress site
Inventory everything you currently use:
- Posts and pages
- Custom post types
- Taxonomies
- Categories and tags
- Media library
- Menus
- SEO metadata
- Forms
- Widgets/blocks
- Shortcodes
- Plugins that affect content or layout
- User roles and workflows
This audit tells you what needs to be recreated in the new CMS and frontend.
3. Choose a headless CMS
Pick one based on your needs:
- Contentful: strong editorial experience, SaaS
- Sanity: flexible content modeling, realtime editing
- Strapi: self-hosted, open source
- Directus: database-first, flexible
- Prismic / Storyblok: marketer-friendly, visual editing
- WordPress as headless CMS: keep WordPress admin, use REST or GraphQL
Consider:
- Content modeling flexibility
- Editorial UI
- API type: REST, GraphQL, both
- Preview support
- Localization
- Asset management
- Pricing and hosting
4. Model your content
Map WordPress content types to CMS structures.
Example:
- WordPress “Posts” → CMS “Articles”
- WordPress “Pages” → CMS “Static Pages”
- Custom post type “Events” → CMS “Event”
- ACF fields → CMS custom fields
- WP categories/tags → CMS taxonomies or references
Also decide how to handle:
- Repeatable components
- Rich text
- SEO fields
- Hero sections
- Related content
- Author profiles
If your WordPress site uses lots of custom layouts, create modular content blocks in the new CMS.
5. Plan the frontend
Build a new frontend app that fetches content from the CMS API.
Typical stack:
- Next.js for React-based sites
- Nuxt for Vue-based sites
- Astro for content-heavy sites
- SvelteKit if you prefer Svelte
You’ll need to implement:
- Routing
- Dynamic page rendering
- Data fetching
- SEO metadata
- Image optimization
- Preview mode
- Revalidation or caching
- Form handling
6. Migrate the content
Export content from WordPress and import it into the new CMS.
Common approaches:
- WordPress export tools
- WP REST API
- WPGraphQL
- Custom migration scripts
- CSV/JSON import depending on CMS
Be sure to migrate:
- Titles
- Slugs
- Bodies
- Excerpts
- Featured images
- Custom fields
- Categories/tags
- Author info
- Publish dates
- SEO metadata
- Redirect mappings
Test the import on a staging environment first.
7. Rebuild templates and functionality
Anything that used to be handled by WordPress themes or plugins must be recreated:
- Page templates
- Blog listing pages
- Single post pages
- Search
- Navigation menus
- Forms
- Comments, if needed
- Related posts
- Breadcrumbs
- Social sharing
- Integrations like analytics, CRM, newsletters
Not every plugin has a direct equivalent, so decide whether to replace, simplify, or remove features.
8. Handle SEO carefully
SEO migration is one of the most important parts.
Make sure to:
- Keep existing URLs if possible
- Set up 301 redirects for changed URLs
- Preserve metadata: title, description, OG tags, canonical URLs
- Migrate structured data where relevant
- Generate XML sitemaps
- Ensure fast page load and mobile friendliness
- Check robots.txt and indexing rules
If URLs change, create a redirect map from old WordPress URLs to new frontend routes.
9. Set up previews and editorial workflow
Editors usually need to preview content before publishing.
Implement:
- Draft previews
- Scheduled publishing if supported
- Approval workflows
- Role permissions
- Preview URLs from the CMS to the frontend
This is often one of the trickiest parts of headless migration.
10. Test everything thoroughly
Before going live, test:
- Content accuracy
- Link integrity
- Redirects
- Mobile responsiveness
- Performance
- SEO tags
- Forms and integrations
- API error handling
- Preview flows
- Accessibility
Use a staging environment that mirrors production.
11. Launch in phases
A phased rollout is safer than a big bang:
- Migrate a small section first, like the blog
- Validate content and design
- Then migrate pages, landing pages, and special content types
- Finally switch the main domain
You can also run WordPress and the new frontend in parallel during transition.
12. Decommission WordPress carefully
After launch:
- Keep WordPress available for a while if needed
- Monitor analytics, crawl errors, and redirects
- Back up the old site
- Retire plugins/themes you no longer use
- Document the new workflow for editors and developers
Common pitfalls
- Underestimating content modeling
- Forgetting SEO redirects
- Losing media links or image metadata
- Recreating too much plugin behavior manually
- No preview environment for editors
- Poor migration of custom fields
- Ignoring editorial workflow differences
Recommended migration path
If you want the safest route:
- Audit your WordPress site
- Choose a CMS
- Model content types
- Build the frontend
- Migrate a subset of content
- Test preview + SEO
- Migrate everything else
- Launch with redirects
- Monitor and iterate
If you want, I can also provide:
- a WordPress → headless CMS migration checklist
- a side-by-side comparison of CMS options
- or a sample migration architecture using Next.js + Sanity/Strapi/Contentful