Erfahre sofort, ob ein Beitrag ankommt oder nicht
Registriere einmal eine URL, und FoPost ruft sie auf, sobald eine Zustellung abgeschlossen ist. Jedes Ereignis enthält Beitrags-ID, Konto, Plattform, Permalink oder Fehlertext, sodass dein System ohne Polling reagieren kann.
curl -X POST https://api.fopost.com/v1/webhooks \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workspaceId": "9b2f6c1e-...",
"url": "https://yourbrand.com/hooks/social",
"events": ["delivery.published", "delivery.failed", "post.published", "post.failed"]
}'Wird beim Abschluss ausgelöst
Ein Ereignis pro Kontozustellung, gesendet, sobald das Netzwerk bestätigt oder ablehnt.
Signiert
Jede Anfrage trägt einen Signatur-Header, damit du prüfen kannst, dass sie von uns kommt.
Wiederholt
Eine Antwort außerhalb von 2xx wird mit Backoff wiederholt, bevor das Ereignis verworfen wird.
Ereignisse decken den gesamten Veröffentlichungszyklus ab
delivery.published wird ausgelöst, wenn ein Netzwerk die Zustellung für ein Konto annimmt, und enthält den Permalink. delivery.failed wird ausgelöst, wenn nicht veröffentlicht wird, und enthält den Fehlertext der Plattform. post.published und post.failed werden einmal pro Beitrag ausgelöst, nachdem alle Konten abgeschlossen sind.
Webhook-Referenz lesen{
"event": "delivery.published",
"data": {
"postId": "7d3e0a52-...",
"postAccountId": "a3c5e7f9-...",
"accountId": "4a71d80b-...",
"platform": "linkedin",
"externalUrl": "https://linkedin.com/feed/update/..."
},
"timestamp": "2026-09-01T09:00:07Z"
}delivery.published
Der Permalink, bereit zum Speichern oder Verlinken aus deinem CMS.
delivery.failed
Die Fehlermeldung des Netzwerks selbst, damit du die Ursache beheben kannst, statt zu raten.
Pro Workspace
Ein Webhook gehört zu einem Workspace und sieht nur dessen Beiträge.
Prüfe die Payload, bevor du darauf reagierst
Jede Anfrage ist mit dem Secret signiert, das du beim Erstellen des Webhooks erhältst. Berechne die Signatur über den Raw Body, vergleiche sie mit dem Header und lehne alles ab, was nicht übereinstimmt. Antworte schnell mit 2xx und erledige die Arbeit danach.
Signaturprüfung ansehenapp.post('/hooks/social', async (req, res) => {
const signature = req.header(SIGNATURE_HEADER) // header name is in the docs;
if (!verify(req.rawBody, signature, process.env.WEBHOOK_SECRET)) {
return res.status(401).end();
}
const { event, data } = req.body;
await queue.add(event, data);
res.status(200).end();
});Signatur-Header
Prüfe mit dem Secret, das du beim Erstellen erhalten hast. Zum Rotieren neu anlegen.
Mit Zeitstempel
Mit dem timestamp kannst du veraltete Wiederholungen ignorieren und Ereignisse richtig ordnen.
Idempotent per ID
Wiederholungen tragen dieselbe Ereignis-ID, doppelte Zustellungen lassen sich also leicht verwerfen.
Endpunkte per Code erstellen, auflisten und entfernen
Webhooks sind einfache API-Objekte. Erstelle einen pro Umgebung, liste sie auf, um zu prüfen, was registriert ist, und lösche die, die du nicht mehr brauchst. Richte sie während der Entwicklung auf eine Staging-URL und wechsle mit einem Aufruf zur Produktion.
Jetzt bauen
Endpunkte auflisten
GET /v1/webhooks zeigt jede URL und die abonnierten Ereignisse.
Pro Umgebung
Registriere eine eigene URL für Staging, damit Testbeiträge nie die Produktion erreichen.
webhooks-Scope
Die Verwaltung von Endpunkten braucht einen eigenen Scope. Ein reiner Publish-Schlüssel kann keine hinzufügen.
Fragen zu Webhooks, beantwortet
Welche Ereignisse sind verfügbar?
Wie prüfe ich einen Webhook?
Was passiert, wenn mein Endpunkt nicht erreichbar ist?
Kann ich Ereignisse nur für ein Konto empfangen?
Kann ich testen, ohne wirklich zu veröffentlichen?
Brauche ich überhaupt Webhooks?
Baue noch heute auf Webhooks
Der Start ist kostenlos und die vollständige API inklusive. Erstelle einen Schlüssel und mach in wenigen Minuten deinen ersten Aufruf.
API-Schlüssel holen