What is Contentful?
Contentful is a headless CMS that delivers structured content via API to any frontend or channel.
What is Contentful?
Contentful is a cloud-native headless content management system (CMS) that stores structured content and delivers it through REST and GraphQL APIs. Founded in Berlin in 2013, it was one of the first API-first CMS platforms to gain mainstream traction. Unlike traditional CMS tools like WordPress, Contentful separates content modeling from presentation entirely — there's no theme layer, no server-rendered pages, no coupled frontend. Content is organized into content types (schemas) and entries (records), then fetched by whatever frontend you build: Next.js, Astro, React Native, even a smart fridge if you're into that. Contentful's Content Delivery API is backed by a global CDN, and their reported median response time sits around 70ms. We've shipped it on 50+ projects and it's our go-to recommendation for teams with 3+ content editors who need structured, multi-channel delivery.
How it works
Contentful operates on three core APIs:
- Content Delivery API (CDA) — Read-only, CDN-backed REST API for published content.
- Content Preview API (CPA) — Same shape as CDA, but serves draft/unpublished entries. Used for preview environments.
- Content Management API (CMA) — Read-write API for creating, updating, and deleting content programmatically.
You start by defining content types in the Contentful web app or via the CMA. A content type is essentially a schema — a Blog Post might have fields for title (short text), body (rich text), author (reference to another content type), and heroImage (media asset).
Editors create entries against those content types. Developers fetch entries on the frontend:
import { createClient } from 'contentful';
const client = createClient({
space: process.env.CONTENTFUL_SPACE_ID,
accessToken: process.env.CONTENTFUL_DELIVERY_TOKEN,
});
const entries = await client.getEntries({
content_type: 'blogPost',
order: '-sys.createdAt',
limit: 10,
});
Contentful also supports localization natively — each field can store values per locale. Rich text is returned as a structured JSON tree (not HTML), which means you control rendering completely on the frontend. Webhooks fire on publish/unpublish events, which is how you trigger rebuilds in static site generators like Astro or Next.js ISR invalidation.
When to use it
Contentful fits a specific profile well. Use it when:
- Multiple frontends consume the same content — website, mobile app, in-app help docs.
- Your editorial team is non-technical — the web UI is genuinely good for editors.
- You need structured, typed content — not just pages, but reusable content blocks with defined schemas.
- You want a managed service — no servers, no database maintenance.
Don't use Contentful when:
- Budget is tight — the free tier (Community) caps at 5 users and 1 million API calls/month. The Team plan starts at $300/month. Enterprise pricing climbs fast.
- You need server-side logic tied to content — Contentful doesn't run code. If you need form processing, auth, or transactional workflows embedded in your CMS, look elsewhere.
- Content is simple and single-channel — if you're building one marketing site with a small team, something like Sanity or even markdown files in a Git repo might be overkill-free.
Contentful vs alternatives
| Feature | Contentful | Sanity | Strapi | WordPress (headless) |
|---|---|---|---|---|
| Hosting | Fully managed SaaS | Managed (Sanity.io) | Self-hosted or Cloud | Self-hosted or managed |
| API | REST + GraphQL | GROQ + GraphQL | REST + GraphQL | REST + GraphQL (plugin) |
| Free tier | 5 users, 1M calls/mo | 3 users, 500K calls/mo | Unlimited (self-host) | N/A |
| Rich text format | Structured JSON tree | Portable Text (JSON) | HTML or blocks | HTML |
| Real-time collab | Yes (paid plans) | Yes (all plans) | No | No |
| Content modeling UI | Excellent | Excellent (code-defined) | Good | Limited (ACF/custom) |
Sanity is the closest competitor we evaluate against Contentful on most projects. Sanity's GROQ query language is more expressive, and Portable Text gives you finer rendering control. Contentful wins on editorial UX polish and enterprise compliance features (SOC 2, SSO on paid plans). Our preferred stack pairs either with Next.js App Router or Astro.
Real-world example
A B2B SaaS company we worked with had a marketing site (Next.js), a docs portal (Astro), and an in-app changelog — all pulling from the same Contentful space. Content editors wrote once, published once, and the content appeared across three surfaces. We used Contentful webhooks to trigger Vercel deployments for the marketing site and Netlify builds for docs. The GraphQL API kept payload sizes small — average response was 12KB per page fetch. Total editorial team was 8 people across marketing and product, all working in the same Contentful space with role-based permissions. Build times dropped from 4 minutes (when content was in markdown files) to under 90 seconds with incremental builds.