Webhooks: Signatur prüfen und Wiederholungen
So prüfst du den Sayweek-Signature-Header im Code, so wiederholen wir fehlgeschlagene Zustellungen, und dann schalten wir einen Endpunkt aus.
Aktualisiert:
Jede Zustellung ist eine POST-Anfrage mit JSON-Körper: id (die Ereignis-ID), event, api_version, created_at, workspace_id und data. Die Signatur beweist, dass die Anfrage von uns kommt und unterwegs nicht verändert wurde.
Header
Sayweek-Signature: t=<Unix-Sekunden>,v1=<hex>– die Signatur.Sayweek-Event-Id– bei jeder Wiederholung und jedem erneuten Senden gleich: Damit sortierst du Duplikate aus.X-Sayweek-Event– der Name des Ereignisses, z. B.post.published.X-Sayweek-Delivery– die ID der Zustellung (die Zeilen im Zustellprotokoll).X-Sayweek-Signature: sha256=<hex>– das alte Format für frühere Integrationen; neuer Code nutztSayweek-Signature.
Signatur prüfen
- Lies den rohen Anfragekörper genau so, wie er angekommen ist (nicht parsen und neu serialisieren).
- Zerlege den Header
Sayweek-Signature:tist der Zeitstempel,v1die Signatur (während eines Secret-Wechsels kann es mehrerev1geben – ein Treffer genügt). - Berechne den HMAC-SHA256 mit deinem Signaturgeheimnis über
t.körper(Zeitstempel, ein Punkt, dann der rohe Körper) als Hex. - Vergleiche in konstanter Zeit und lehne die Anfrage ab, wenn sie nicht passt oder
tälter als 5 Minuten ist (so lässt sich eine abgefangene Anfrage nicht später wieder einspielen).
In Node.js: createHmac("sha256", secret).update(t + "." + rawBody).digest("hex"), dann timingSafeEqual mit dem v1-Wert aus dem Header.
In Python: hmac.new(secret.encode(), f"{t}.{raw_body}".encode(), hashlib.sha256).hexdigest(), dann hmac.compare_digest mit v1.
Wiederholungen
- Als zugestellt gilt eine 2xx-Antwort innerhalb von 8 Sekunden – antworte schnell und erledige längere Arbeit danach.
- Wir wiederholen Netzwerkfehler, Zeitüberschreitungen,
408,409,425,429und jeden5xx; jeder andere4xxist endgültig. - Die Pausen: etwa 1 Min., 4 Min., 16 Min., 1 Std., 4 Std., dann 12 Std. (mit etwas Zufall) – höchstens 8 Versuche insgesamt, über rund anderthalb Tage.
- Antwortet ein Zapier-, Make- oder API-Abo mit
410 Gone, wird das Abo entfernt.
Automatisch ausgeschaltet
Scheitern bei einem Endpunkt mindestens 10 Versuche hintereinander und dauert das schon länger als einen Tag, schalten wir den Webhook aus; die Inhaber bekommen eine Push-Benachrichtigung und eine E-Mail. Ein kurzer Ausfall schaltet ihn also nie aus. Wieder einschalten: Einstellungen → Alle Integrationen → Webhooks · n8n, dann in der Zeile des Webhooks Einschalten – das setzt die Fehlerserie zurück. Testsendungen zählen nie mit.
War dieser Artikel hilfreich?
Verwandte Artikel
- Webhooks (n8n und eigener Server)Signiertes JSON an deine URL bei jedem gewählten Ereignis – mit Wiederholungen, Zustellprotokoll und Testversand.
- Entwicklerportal: Referenz, Testkonsole, Postman, ClientsAuf /de/entwickler findest du die vollständige API-Referenz, testest Aufrufe mit deinem eigenen Konto und bekommst die Postman-Collection.
- REST-API: API-Schlüssel und BerechtigungenAPI-Schlüssel anlegen, die Berechtigungen read / write / approve, die wichtigsten Endpunkte und wie du einen Schlüssel widerrufst.
- Entwickler-Werkzeuge: API, Webhooks, MCPWas Sayweek für Entwickler und Automatisierung bietet: REST-API, signierte Webhooks, Zapier, Make, Claude und ChatGPT (MCP) und einen iCal-Link.