Migrating from Contentful: The Honest Guide (2026)
When migrating off Contentful is worth it — and when staying is the smarter call
Most teams don't leave Contentful because they hate the product. They leave because the bill stopped making sense. A $300/month plan crosses into $800/month after a successful product launch, the API request overage hits at year-end traffic spikes, and someone in the finance review asks the obvious question: "do we actually need this?"
This is the honest guide for that conversation. What it actually takes to migrate off Contentful, what you keep, what you trade for, and how to estimate the real cost of switching. Written from the perspective of someone who's helped teams plan this migration, not someone selling you the destination.
Disclosure: I work on UnfoldCMS, which is one of the options Contentful refugees end up considering. I'll mark our own listing and try to keep the advice honest — for many Contentful teams, the answer is "stay on Contentful and negotiate the price," not "migrate."
TL;DR — when migrating off Contentful makes sense
Migrating off Contentful is worth it when: (1) your bill is $500+/month and growing, (2) you have engineering time to invest in the migration (1-4 weeks depending on content shape), (3) your content model is mature and stable, and (4) "no subscription" is genuinely valuable to your business. Migrating isn't worth it when you're under $200/month, the content model is still evolving, or your team has no engineering bandwidth for the work.
The replacement landscape: UnfoldCMS (Laravel monolith with shadcn admin, source-available, one-time pricing), Payload (Node headless, MIT, self-host), Strapi (Node headless, MIT, plugin marketplace), Directus (database-first, headless, MIT), Sanity (still hosted but cheaper than Contentful at scale), or flat-file Markdown (Astro Content Collections, Statamic — no CMS needed).
| Use case | Best replacement |
|---|---|
| Marketing site + blog, simple content model | UnfoldCMS, Statamic, flat-file Markdown |
| Multiple front-ends consuming same content | Payload, Strapi, Directus |
| Editor team that needs polish at any cost | Sanity (cheaper than Contentful), stay on Contentful |
| Single Next.js content site, dev team | UnfoldCMS, Payload, flat-file |
| Existing database you want to expose as CMS | Directus |
What you're actually paying Contentful for
Before deciding to leave, understand what you're paying for. Contentful's pricing covers three things:
- Hosted infrastructure — they run the servers, the database, the CDN, the GraphQL API endpoint. You don't manage any of that.
- The editor experience — the polished UI that content teams genuinely like, plus the App framework for custom field types.
- API requests + bandwidth + storage — the metered part of the bill that climbs with traffic.
When you migrate, you're trading hosted convenience for self-hosting. The editor polish you'll mostly recover with a good open-source admin (Payload, UnfoldCMS, Strapi). The API/bandwidth/storage costs flip from a vendor invoice to a hosting invoice — usually much smaller, but now your team manages it.
The hidden cost most teams forget: Contentful's API is rate-limited at the lower tiers. Your front-end's caching strategy is partly designed around those limits. When you self-host, you can be more aggressive with API access patterns. That's a real benefit, but it also means you'll re-architect caching during migration.
What you're trading when you migrate
Be honest about the costs. Migrating off Contentful means:
- You manage uptime now. Their SLA covered it before. Your server, your problem.
- You manage backups. Contentful did this invisibly. You'll do it via cron + S3 + monitoring.
- You manage editor onboarding. Editors who knew Contentful's UI will learn the new CMS's UI. That's a real cost, especially with non-technical editors.
- You manage the content model schema. Contentful's content modeling UI is polished. Most open-source replacements are good-but-different. Migration is a chance to clean up the model, but it also means re-teaching editors.
For most teams, these costs are real but recoverable. For a few teams, they're prohibitive — usually marketing-led organisations where editor productivity matters more than the CMS bill.
The migration plan, roughly
A typical Contentful → self-hosted migration looks like this:
Week 1 — content export and model audit
- Export everything via Contentful's Content Management API. JSON dump of every entry, asset, and content type.
- Audit the content model: which content types are still in use, which are deprecated, which have inconsistent field usage. Most teams have 20-40% legacy content types they can drop during migration.
- Decide what the new content model looks like in the new CMS. Don't 1:1 port — clean up.
Week 2 — new CMS setup + content type modeling
- Stand up the new CMS (UnfoldCMS, Payload, Strapi, Directus, etc.). One day if you're self-hosting on a $5 VPS; two days if Docker / Kubernetes / a more complex deploy.
- Model the cleaned-up content types in the new CMS.
- Set up auth, roles, and per-role permissions. Most teams want the same roles they had in Contentful — editor, author, admin.
Week 3 — content import + front-end refactor
- Transform the Contentful JSON dump into the new CMS's format. This is the actual code work. Expect 200-500 lines of import script.
- Import in a dry-run mode first. Validate that everything lands correctly.
- Refactor your front-end's data fetching. Contentful uses GraphQL; if the new CMS uses REST (UnfoldCMS, Strapi), your queries change. If it also uses GraphQL (Payload), the queries are similar.
Week 4 — testing, editor training, cutover
- Stand up the new CMS in staging with imported content. Test every public page renders correctly.
- Train editors on the new CMS UI. Even good UIs take a session to learn.
- Plan the cutover: typically a DNS swap on a Friday, with the old Contentful tier kept running for one billing cycle as a rollback option.
Total: 3-4 weeks for a medium-complexity site (50-500 content entries, a few content types, one or two editors). Larger sites take longer in proportion to complexity, not size.
What the alternatives look like
I covered the headless landscape in detail in I Tested 7 CMS Options for shadcn/ui — Here's What Works. Quick recap for Contentful refugees:
UnfoldCMS — Laravel + React + shadcn admin, monolith, source-available with one-time pricing. Good for teams who want a polished admin without a Node service. The admin UX is the closest to "modern Contentful but self-hosted." See The CMS Built on shadcn/ui: Why It Matters.
Payload — Node headless, MIT, strong TypeScript story, good for teams already on Node. Admin is Payload UI (not shadcn). See shadcn CMS vs Payload: Honest Admin UX Comparison.
Strapi — Node headless, MIT, biggest plugin marketplace, Pain Point #3 (Node deployment complexity) hits hardest here. Good for teams who like plugins and don't mind Docker. See shadcn CMS vs Strapi: Honest Admin UX Comparison.
Directus — wraps any SQL database, Vue admin, good if you already have a database you want to expose. Underrated for the right use case.
Sanity — still hosted, but consistently cheaper than Contentful at the same scale. If your real problem is "Contentful's bill" and your team genuinely needs hosted, Sanity is the same-shape replacement.
Flat-file Markdown — Astro Content Collections, Statamic flat-file mode, even just *.md files in your repo. For small content volumes (1-100 entries) updated infrequently, this beats any CMS on simplicity and cost.
When you should NOT migrate
I'll say this plainly: migrating off Contentful is not always the right call.
You should stay on Contentful when:
- Your bill is under $200/month. The engineering time to migrate (2-4 weeks of senior dev time = $10,000-$30,000) costs more than 5-10 years of Contentful subscription.
- Your content model is still actively evolving. Migrating a moving target makes the migration take three times as long.
- Your team has no engineering bandwidth. Migration is real engineering work, not a weekend project.
- Your editors are non-technical and Contentful's UI is keeping them productive. Switching CMS UIs costs editor time that may exceed the CMS bill savings.
- You have a multi-year Contentful contract with discount terms. The cancellation cost may exceed the migration savings.
For teams in these situations, the better play is to negotiate Contentful's pricing. Their pricing is far more flexible than the website suggests — annual contracts often come with 20-40% discounts, and a credible "we're evaluating alternatives" conversation usually buys you more.
When you SHOULD migrate
The clear cases:
- Your bill is $500+/month and you have engineering time to do the migration properly.
- You hit an API rate limit and your traffic spike caused a real outage.
- You want to own the content data (legal, compliance, or simple preference for self-hosting).
- You're rebuilding the front-end anyway, and content migration is one of multiple changes happening.
- Your content model has stabilised and you're confident it won't change much for the next 12-24 months.
Cross-reference Self-Hosted CMS: A Complete Guide for 2026 for the broader self-hosting decision framework.
People Also Ask
Is migrating off Contentful worth it?
Depends on bill size and engineering time. Worth it when bill is $500+/month and you have 3-4 weeks of senior engineering time available. Not worth it when bill is under $200/month, the content model is still evolving, or your team has no migration bandwidth.
How long does a Contentful migration take?
3-4 weeks for a medium-complexity site (50-500 entries, 1-2 editors). Larger sites take longer in proportion to complexity, not just size. The bottleneck is usually content model audit + front-end data-fetching refactor, not the actual data import.
What's the best Contentful alternative for Next.js?
For headless + Next.js front-end: Payload, Sanity, or Strapi. For monolith with built-in admin: UnfoldCMS (with optional Next.js front-end via the public API). For flat-file: Astro Content Collections (skip the CMS entirely). See Best CMS for Next.js in 2026 for the longer breakdown.
Can I migrate to flat-file Markdown?
Yes, if your content volume is small (1-200 entries) and updates are infrequent. Storage is just *.md files in your git repo; editors use git or a flat-file CMS like Statamic. For larger content volumes with frequent updates, flat-file gets unwieldy fast.
Will my SEO suffer during migration?
Only if the URL structure changes. If you keep the same /blog/{slug} shape and content lands at the same URLs, search rankings carry over. If URLs change, you need 301 redirects for every old URL to its new equivalent. See SEO Redirects Done Right (if available) or pick a CMS with built-in redirect management.
Bottom line
Most teams who plan to migrate off Contentful actually should — once the bill crosses a threshold and the engineering time is available. But "should we migrate" is a different question than "let's pick a replacement." Decide the first one first. If the answer is yes, then the replacement landscape is full of good options. If the answer is no, stay and negotiate.
If you're at the "pick a replacement" stage and want a modern admin without Node services, try the UnfoldCMS demo or see pricing. Or check the migration guide for the UnfoldCMS-specific path.
Sources and methodology
- Contentful pricing — based on the publicly listed tier pricing as of June 2026, plus team interviews with five Contentful-using companies on their actual invoices.
- Migration time estimates — drawn from three completed Contentful → UnfoldCMS migrations and conversations with teams who migrated to Payload, Strapi, and flat-file alternatives.
- UnfoldCMS counts —
find cms/resources/js/components/ui -name "*.tsx" \| wc -l= 51;find cms/resources/js/pages/admin -name "*.tsx" \| wc -l= 205. - API and feature comparisons verified against current vendor docs in June 2026.
Free & Open Source
Own your CMS. No subscriptions.
Unfold CMS is free to download and self-host. Built on Laravel + React, full source code included.
Share this post: