Zum Inhalt springen

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 nutzt Sayweek-Signature.

Signatur prüfen

  1. Lies den rohen Anfragekörper genau so, wie er angekommen ist (nicht parsen und neu serialisieren).
  2. Zerlege den Header Sayweek-Signature: t ist der Zeitstempel, v1 die Signatur (während eines Secret-Wechsels kann es mehrere v1 geben – ein Treffer genügt).
  3. Berechne den HMAC-SHA256 mit deinem Signaturgeheimnis über t.körper (Zeitstempel, ein Punkt, dann der rohe Körper) als Hex.
  4. 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, 429 und jeden 5xx; jeder andere 4xx ist 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.

In Sayweek öffnen

War dieser Artikel hilfreich?

Antwort nicht gefunden?

Schreib uns: hello@sayweek.com

Webhooks: Signatur prüfen und Wiederholungen – Hilfe | Sayweek