Artikel per Webhook an dein System schicken.
Für jedes andere CMS und jeden eigenen Workflow: Citapult schickt jeden veröffentlichten Artikel als JSON an eine Adresse, die du festlegst.
Aktualisiert am
Was du brauchst
- Eine öffentlich erreichbare HTTPS-Adresse, die POST-Anfragen mit JSON annimmt.
- Eine Antwort mit einem 2xx-Status innerhalb von 20 Sekunden. Den Inhalt der Antwort liest Citapult nicht.
- Optional einen Token, an dem dein Empfänger erkennt, dass die Anfrage von Citapult kommt.
Einrichten
1. Empfänger bauen
Leg einen Endpunkt an, der POST-Anfragen annimmt und mit einem 2xx-Status antwortet. Nutzt du einen Token, prüf ihn im Header
Authorization: Bearer <Token>. Citapult folgt keinen Weiterleitungen, trag also die endgültige Adresse ein.2. Integration hinzufügen
Öffne in Citapult Einstellungen → Integrationen, wähl unter „Art“ Webhook und trag die Adresse ein, dazu bei „Token (optional)“ deinen Token. Der Token wird verschlüsselt gespeichert und nie wieder angezeigt.
3. Testen
Klick bei der Integration auf „Testen“. Citapult schickt dann das Ereignis
testohne Artikel. Antwortet dein Empfänger mit 2xx, steht da „Der Empfänger hat geantwortet.“4. Artikel veröffentlichen
Öffne einen fertigen Artikel und klick auf „Veröffentlichen“. Bis dein Empfänger den Artikel einmal mit 2xx angenommen hat, kommt das Ereignis
publish_articles, danach bei jedem Sendenupdate_article.5. Optional: automatisch veröffentlichen
Schalte bei den Integrationen „Automatisch veröffentlichen“ ein. Dann gehen Artikel im Status „Zu prüfen“ an ihrem geplanten Tag ohne Klick an alle Integrationen. Die Uhrzeit stellst du im Kalender unter „Zeitplan“ ein.
Die Ereignisse
Jede Anfrage ist ein JSON-Objekt mit event_type, timestamp und data, gesendet mit Content-Type: application/json.
publish_articles: bis dein Empfänger den Artikel einmal mit 2xx angenommen hat. Der Artikel steht indata.articles, einer Liste mit einem Eintrag.update_article: jedes Senden danach. Der Artikel steht indata.article.test: der Klick auf „Testen“, mit leeremdata.
{
"event_type": "publish_articles",
"timestamp": "2026-10-08T08:00:04.512Z",
"data": {
"articles": [
{
"id": "9b2f4c1e-…",
"title": "Sauerteig ansetzen: Schritt für Schritt",
"slug": "sauerteig-ansetzen",
"content_html": "<p>…</p>",
"meta_description": "…",
"language": "de-DE",
…
}
]
}
}
{
"event_type": "update_article",
"timestamp": "2026-10-09T14:21:37.090Z",
"data": {
"article": { … }
}
}
Die Felder eines Artikels
Jedes Feld ist immer dabei: Fehlt ein Wert, ist er null, eine fehlende Liste ist leer. Dein Empfänger kann jede Anfrage mit dem JSON Schema prüfen.
| Feld | Inhalt |
|---|---|
id | Die ID des Artikels, bleibt bei jedem Update gleich |
title | Der Titel, gedacht als H1 |
slug | Das Ende der URL, nach dem ersten Veröffentlichen fest |
content_html | Der Artikeltext als HTML, ohne die H1. Rohes HTML aus dem Text kommt als Text an, nur YouTube-Einbettungen bleiben. |
content_markdown | Derselbe Text als Markdown |
meta_title, meta_description | Meta-Titel und Meta-Beschreibung |
image_url, image_alt | Titelbild und sein Alt-Text |
language | Sprache und Land des Artikels, etwa de-DE |
tags | Eine Liste mit dem Haupt-Keyword des Artikels |
json_ld | Die strukturierten Daten als Liste, je ein application/ld+json-Skript |
sources | Die Quellen mit url und title |
author | Name, dazu Rolle und Kurzbio, falls in den Einstellungen gesetzt, oder null |
created_at | Wann der Artikel angelegt wurde, im ISO-Format |
Fehler und Wiederholungen
Antwortet dein Empfänger nicht mit 2xx oder nicht innerhalb von 20 Sekunden, steht der Grund beim Artikel in der Liste unter dem Button, etwa „fehlgeschlagen: HTTP 500“. Der Status des Artikels ändert sich dann nicht.
- Mit „Veröffentlichen“ oder „Aktualisieren“ schickst du ihn erneut, an alle Integrationen der Website. „Aktualisieren“ heißt der Button, sobald eine Integration den Artikel angenommen hat.
- Mit „Automatisch veröffentlichen“ versucht Citapult es alle 15 Minuten wieder, solange der Artikel auf „Zu prüfen“ steht, bis zum Ende des Tages nach dem geplanten Tag (UTC).
- Derselbe Artikel kann deshalb mehrmals ankommen, auch mehrmals als
publish_articles. Behandle eineid, die du schon kennst, als Update und nicht als neuen Beitrag.
Integration entfernen
Fügst du die Integration später neu hinzu, kommt jeder Artikel beim nächsten Senden wieder als publish_articles. Erkennt dein Empfänger die id, entsteht dabei kein doppelter Beitrag.
Fehler und Fragen
„Gib eine öffentlich erreichbare HTTPS-Adresse an.“
Die Adresse muss mit https:// beginnen und aus dem Internet erreichbar sein. Adressen im lokalen Netz nimmt Citapult nicht an.
„Zugangsdaten gehören nicht in die Adresse.“
In der Adresse stehen Benutzer und Passwort, etwa https://name:passwort@…. Nimm sie raus und nutz stattdessen das Feld „Token (optional)“. Der Token kommt als Authorization: Bearer <Token> an.
„Der Test ist fehlgeschlagen (HTTP 401).“
Dein Empfänger hat den Token abgelehnt. Prüf, ob er denselben Token erwartet und ihn aus dem Header Authorization nach Bearer liest.
„… (HTTP 301)“ oder ein anderer 3xx-Status
Die Adresse leitet weiter, etwa auf eine Variante mit Schrägstrich am Ende. Citapult folgt keiner Weiterleitung, damit der Token nicht bei einem anderen Server landet. Trag die Zieladresse ein.
„… (ENOTFOUND)“ oder „… (ECONNREFUSED)“
Den Hostnamen gibt es nicht, oder der Server nimmt keine Verbindung an. Prüf die Adresse und ob dein Empfänger läuft.
Der Empfänger braucht länger als 20 Sekunden
Nach 20 Sekunden bricht Citapult ab und zeigt den Fehler unter dem Button. Antworte zuerst mit 2xx und verarbeite den Artikel danach.
Wie prüfe ich, dass eine Anfrage von Citapult kommt?
Über den Token: Citapult schickt ihn bei jeder Anfrage als Authorization: Bearer <Token>. Eine Signatur gibt es nicht. Nimm also einen langen, zufälligen Token.