Migrate from WordPress
Move a WordPress site to Flow CMS — turn pages and posts into structured types, import via the WP REST API, and keep your URLs.
Moving from WordPress is less "transfer the database" and more "give the content the structure it never had". The payoff is querying posts like data, reusing authors and categories as real references, and serving everything over an API instead of a theme.
The shape of the migration
- Decide the model (posts, pages, authors, categories → types).
- Pull content out over the WordPress REST API.
- Import media, then entries, into Flow CMS.
- Rebuild templates in your front-end framework; keep URLs with redirects.
1. Model first, don't copy blindly
A typical WordPress site becomes four or five types:
| WordPress | Flow CMS | Notes |
|---|---|---|
| Post | post collection |
title, slug, excerpt, rich-text body, cover, references |
| Page | page collection (or per-template types) |
structured sections beat one big body |
| Author | author collection |
referenced by posts — one bio, everywhere |
| Category / tag | category collection + a tags field |
references, not free text |
| ACF field groups | Components / typed fields | this is where structure pays off |
Resist recreating "one giant rich text field per page". Model the pieces (hero, sections, CTAs) as components — that is what makes the content reusable across channels later.
2. Export over the WP REST API
Every WordPress site already exposes what you need, paginated:
# Posts with embedded authors, categories and featured media
curl "https://old-site.com/wp-json/wp/v2/posts?per_page=100&page=1&_embed"
Walk the pages until exhausted; do the same for pages, users,
categories, media. (WXR export files work too, but the REST API gives you
clean JSON and resolved media URLs.)
3. Import into Flow CMS
- Media first: download each asset and upload it — optimization to WebP happens automatically. Keep a map of old URL → new asset id.
- Entries next: convert post HTML to the block editor's rich text on import, rewrite in-body image URLs using the media map, and set real references for author and category.
- Use the content import tooling (see the help center's import guide) or script the management API: create → publish, 100 at a time.
4. Keep your URLs
Ranking pages keep their equity only if their URLs survive or redirect:
- Keep the same slugs where possible (
/blog/my-post→/blog/my-post). - 301 anything that must move, including old date-based permalinks
(
/2023/05/my-post→/blog/my-post) — one redirects file in your front-end covers it. - Recreate titles and meta descriptions in the per-entry SEO fields, then let the SEO suite audit the result — it will list missing descriptions and duplicate titles deterministically.
Comments, plugins and theme behaviour don't migrate — a headless front-end replaces them deliberately (a comments service, real components, your framework). Budget that as front-end work, not content work.