<EbeneX/>
Web Digital · Updated 19. Februar 2026

Headless CMS

Definition

Ein Content-Management-System, das Content und Darstellung vollständig trennt – Inhalte werden über eine API bereitgestellt und können in beliebigen Frontends (Web, App, Voice, Digital Signage) genutzt werden.

Fortgeschritten 3 Min. Lesezeit EN: Headless CMS

Einfach erklärt

Traditionelle CMS wie WordPress sind monolithisch: Das System verwaltet Inhalte und generiert gleichzeitig das HTML für die Website. Das war jahrelang praktisch – aber es hat Grenzen.

Was ist, wenn der gleiche Inhalt auf einer Website, einer mobilen App, einem Smart Speaker und einem digitalen Infoscreen erscheinen soll? Ein traditionelles CMS kann das nicht – es ist auf eine Darstellungsform ausgerichtet.

Ein Headless CMS trennt diese Verantwortlichkeiten: Das CMS verwaltet Inhalte und stellt sie über eine API bereit. Das Frontend – egal ob Website, App oder Voice Interface – holt sich die Daten und stellt sie dar, wie es möchte.

Traditionell vs. Headless

Traditionelles CMS (WordPress):
  Redakteur schreibt Artikel

  WordPress speichert + generiert HTML

  Browser zeigt HTML an
  (nur eine Ausgabe möglich)

Headless CMS (Contentful):
  Redakteur schreibt Artikel

  Contentful speichert als strukturierte Daten

  API gibt JSON zurück

  Website (React) → rendert als Artikel
  Mobile App (Swift) → rendert als Card
  Smart Speaker → liest Text vor
  Newsletter → formatiert als E-Mail

Wann Headless, wann traditionell?

SituationEmpfehlung
Einfache Website, ein RedakteurWordPress / traditionell
Mehrere Kanäle (Web + App)Headless
Entwicklerteam vorhandenHeadless
Kein Entwickler, Redakteur macht allesTraditionell
Hohe Performance-AnforderungenHeadless + SSG
Komplexe Content-StrukturenHeadless

Technischer Deep Dive

Content-Modellierung in Contentful

// Content-Typ "Article" in Contentful definiert:
{
  contentType: 'article',
  fields: [
    { id: 'title',       type: 'Symbol' },
    { id: 'slug',        type: 'Symbol' },
    { id: 'body',        type: 'RichText' },
    { id: 'author',      type: 'Link', linkType: 'Entry' },
    { id: 'heroImage',   type: 'Link', linkType: 'Asset' },
    { id: 'publishDate', type: 'Date' },
    { id: 'tags',        type: 'Array', items: { type: 'Symbol' } },
  ]
}

REST API abfragen

// Contentful REST API
const response = await fetch(
  `https://cdn.contentful.com/spaces/${SPACE_ID}/entries` +
  `?content_type=article&include=2&order=-fields.publishDate`,
  { headers: { Authorization: `Bearer ${ACCESS_TOKEN}` } }
);
const data = await response.json();
const articles = data.items;

GraphQL API (Contentful)

query GetArticles {
  articleCollection(order: publishDate_DESC, limit: 10) {
    items {
      title
      slug
      publishDate
      heroImage {
        url
        width
        height
      }
      author {
        name
        avatar { url }
      }
      body { json }
    }
  }
}

Astro + Headless CMS (wie dieses Projekt)

---
// src/pages/blog/[slug].astro
import { createClient } from 'contentful';

const client = createClient({
  space: import.meta.env.CONTENTFUL_SPACE_ID,
  accessToken: import.meta.env.CONTENTFUL_ACCESS_TOKEN,
});

export async function getStaticPaths() {
  const entries = await client.getEntries({ content_type: 'article' });
  return entries.items.map(entry => ({
    params: { slug: entry.fields.slug },
    props: { article: entry },
  }));
}

const { article } = Astro.props;
---

<article>
  <h1>{article.fields.title}</h1>
  <!-- Rich Text rendern -->
</article>

Sanity GROQ-Abfragen

// GROQ – Sanity's eigene Query Language
const query = `*[_type == "article" && !(_id in path("drafts.**"))] | order(publishDate desc) {
  title,
  slug,
  publishDate,
  "heroImageUrl": heroImage.asset->url,
  "authorName": author->name,
  body
}[0...10]`;

const articles = await sanityClient.fetch(query);

Preview Mode für Redakteure

// Next.js Draft Mode für Headless CMS Preview
// Redakteure sehen unveröffentlichte Inhalte live

export async function GET(request) {
  const { searchParams } = new URL(request.url);
  const secret = searchParams.get('secret');
  const slug = searchParams.get('slug');

  if (secret !== process.env.PREVIEW_SECRET) {
    return new Response('Unauthorized', { status: 401 });
  }

  // Draft Mode aktivieren
  draftMode().enable();
  redirect(`/blog/${slug}`);
}

Ein traditionelles CMS ist wie ein Fertighaus: Grundriss, Wände und Fassade sind fest verbunden. Ein Headless CMS ist wie ein Möbellager: Die Möbel (Inhalte) sind vorhanden, aber du entscheidest selbst, in welchem Raum (Website, App, Kiosk) sie stehen und wie sie aussehen.

Trennung von Content (Backend) und Darstellung (Frontend) – API-first

Gleicher Content für Website, Mobile App, Voice Assistant, Digital Signage

Entwickler wählen frei das Frontend-Framework (React, Vue, Astro, Next.js)

Multi-Channel-Publishing

Gleicher Artikel auf Website, App, Newsletter und Smart Speaker – einmal pflegen, überall ausgeben

Moderne Web-Stacks

Astro, Next.js oder Nuxt als Frontend, Contentful oder Sanity als Content-Backend

E-Commerce

Produktbeschreibungen zentral verwalten, auf Website, App und Marktplätzen ausgeben

Was ist der Unterschied zwischen Headless CMS und traditionellem CMS?

Traditionelles CMS (WordPress, Typo3): Content und Darstellung sind gekoppelt – das CMS generiert HTML. Headless CMS: Das CMS liefert nur Daten (JSON via API), das Frontend ist komplett getrennt. Vorteil Headless: Mehr Flexibilität, bessere Performance, Multi-Channel. Nachteil: Mehr Entwicklungsaufwand, kein WYSIWYG out-of-the-box.

Was ist ein Composable DXP?

Digital Experience Platform – eine Weiterentwicklung des Headless-Ansatzes. Statt einem monolithischen System werden Best-of-Breed-Lösungen kombiniert: Headless CMS + Headless Commerce + Personalisierung + Analytics. Jede Komponente kann unabhängig ausgetauscht werden.

Ist WordPress auch headless nutzbar?

Ja. WordPress hat eine REST API und GraphQL (via WPGraphQL-Plugin). Man kann WordPress als Content-Backend nutzen und ein modernes Frontend (Next.js, Gatsby) davor schalten. Das nennt sich 'Decoupled WordPress'. Vorteil: Redakteure kennen WordPress. Nachteil: WordPress-Overhead bleibt.

Was ist der Unterschied zwischen REST und GraphQL bei Headless CMS?

REST: Feste Endpunkte, oft Over-fetching (zu viele Daten) oder Under-fetching (zu wenige). GraphQL: Flexible Abfragen – du fragst genau die Felder ab, die du brauchst. Für komplexe Content-Strukturen ist GraphQL oft effizienter. Viele Headless CMS bieten beide Optionen.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.