Webhooks

Benachrichtigung, wenn ein neuer Entwurf bereit ist — dann vollständigen Beitrag per API abrufen.

Webhook-URL und Secret unter Integrationen konfigurieren. Wenn ein Entwurf fertig ist, POSTen wir article.ready mit Slug und Abrufhinweisen. Ihr Backend prüft HMAC und ruft GET /posts/{slug} für contentHtml auf.

Ereignisse

  • article.ready — Ein qualitätsgeprüfter Entwurf ist fertig — vollständiges HTML per API mit dem Slug abrufen
  • webhook.test — Gesendet bei Aufruf von POST /api/v1/webhooks/test

Signaturprüfung

Wir senden X-GrowthDaily-Timestamp (Unix-Sekunden) und X-GrowthDaily-Signature (hex HMAC-SHA256 von `{timestamp}.{rawBody}` mit Ihrem Webhook-Secret).

Signatur prüfen (Node.js)
import { createHmac, timingSafeEqual } from "crypto";

function verify(secret, rawBody, timestamp, signatureHex) {
  const expected = createHmac("sha256", secret)
    .update(`${timestamp}.${rawBody}`)
    .digest("hex");
  const a = Buffer.from(expected, "utf8");
  const b = Buffer.from(signatureHex, "utf8");
  if (a.length !== b.length) return false;
  return timingSafeEqual(a, b);
}
article.ready-Payload
{
  "event": "article.ready",
  "siteId": "uuid",
  "postId": "uuid",
  "slug": "my-post",
  "title": "My post",
  "trustScore": 94,
  "qualityBand": "premium",
  "assuranceLabel": "High confidence",
  "language": "en",
  "sourcePostId": null,
  "status": "draft",
  "at": "2026-07-21T12:00:00.000Z",
  "fetch": {
    "path": "/api/v1/sites/{siteId}/posts/{slug}",
    "hint": "GET with Bearer token to import contentHtml"
  }
}

Nach article.ready

Slug aus Payload (oder fetch.path) verwenden, um GET /api/v1/sites/{siteId}/posts/{slug} aufzurufen. contentHtml, seo und faqJsonLd ins CMS importieren — nach Ihrem Zeitplan veröffentlichen.

Zustellungsgarantien

Jedes Ereignis wird einmal per HTTP POST mit 8 Sekunden Timeout gesendet. Fehlgeschlagene Zustellungen werden nicht automatisch wiederholt. Ein fehlgeschlagener Webhook blockiert keine neuen Entwürfe. Alle Versuche stehen unter Integrationen → Letzte Zustellungen.

Idempotente Handler

Schnell HTTP 2xx zurückgeben. Importe per postId (oder siteId + slug) deduplizieren. Verpasste Ereignisse mit GET /posts und updatedAfter nachziehen — siehe API-Referenz.

Zustellungsprotokoll

Erfolg und Fehler erscheinen im Integrationsbereich mit HTTP-Status und Zeitstempel.