Alle Artikel
webhook debuggingreplaytestingcallbacks

Webhook-Replay: Debuggen ohne erneutes Auslösen

Webhook-Replay sendet einen zuvor erfassten HTTP-Callback erneut an deinen lokalen Handler, ohne den Upstream-Provider zu bitten, das Event noch einmal zuzustellen. Statt eine Stripe-Zahlung, einen GitHub-Push oder eine Twilio-Nachricht neu auszulösen, spielst du die exakte Anfrage – Header, Body und alles – aus deinem Anfrageverlauf erneut ab.

Warum Webhook-Replay wichtig ist

Webhook-Debugging folgt meist einer mühsamen Schleife: Event auslösen, Zustellung inspizieren, Bug finden, Code fixen, erneut auslösen. Das erneute Auslösen von Upstream-Events ist langsam, laut und manchmal unmöglich (einmalige Zahlungs-Events, gelöschte Ressourcen oder ratenlimitierte Test-APIs).

Replay verkürzt diese Schleife. Einmal erfassen, Handler fixen, dasselbe Payload erneut abspielen, bis es durchläuft – ganz ohne den externen Provider zu berühren.

Wie Webhook-Replay funktioniert

  1. Ein Callback erreicht deine Tunnel-URL und wird an deine lokale App weitergeleitet.
  2. Das Tunnel-Tool erfasst die vollständige Anfrage: Methode, Pfad, Header und Body.
  3. Du fixst deinen Handler-Code anhand dessen, was du in der erfassten Anfrage siehst.
  4. Du spielst die erfasste Anfrage mit einer Aktion erneut an deinen lokalen Endpunkt ab.
  5. Wiederhole, bis der Handler die korrekte Antwort zurückgibt.

Dieser Workflow erfordert einen Localhost-Tunnel mit integrierter Anfrageerfassung – nicht nur Traffic-Weiterleitung.

Anwendungsfälle für Webhook-Replay

Handler-Entwicklung

Baue und teste Webhook-Handler iterativ. Spiele dasselbe Stripe-checkout.session.completed-Event zehnmal erneut ab, während du die Parsing-Logik verfeinerst.

Idempotenz-Tests

Provider stellen während Retries doppelte Events zu. Spiele dasselbe Payload mehrfach ab, um zu bestätigen, dass dein Handler Duplikate sicher verarbeitet – ohne Doppelbelastung oder doppelte Datensätze.

Signaturprüfung debuggen

Wenn Signaturprüfungen fehlschlagen, spiele die Originalanfrage mit intakten Headern erneut ab, um zu isolieren, ob das Problem in der Prüf-Logik oder im Payload-Parsing liegt.

Regressionstests

Speichere erfasste Anfragen aus produktionsnahen Test-Events und spiele sie nach Refactorings erneut ab, um Breaking Changes vor dem Deploy zu erkennen.

Webhook-Replay mit PortPreview

  1. Starte deine App und führe npx portpreview 3000 aus.
  2. Konfiguriere deinen Provider so, dass er Callbacks an die Tunnel-URL sendet.
  3. Löse ein Test-Event aus und inspiziere die erfasste Anfrage in PortPreview.
  4. Fixe deinen Handler und spiele dann die erfasste Anfrage erneut ab.
  5. Prüfe Antwortstatus und Body, ohne den Provider erneut auszulösen.

PortPreview erhält die Original-Header, sodass die Provider-Signaturprüfung auch beim Replay aussagekräftig bleibt.

Replay vs. erneutes Auslösen: wann was?

  • Replay: Handler-Logikfehler, Payload-Parsing, Idempotenz-Checks, Signatur-Debugging.
  • Erneutes Auslösen: providerseitige Event-Generierung testen, Webhook-Registrierung verifizieren oder End-to-End-Integration mit Live-Provider-Status.

Für providerspezifisches Setup siehe die Leitfäden zu Stripe-Webhook-Tests lokal, GitHub-Webhook-Tests lokal und Twilio-Webhook-Tests lokal.

Best Practices für Webhook-Replay

  • Validiere Signaturen immer beim Replay, nicht nur bei der ersten Zustellung.
  • Teste Doppelzustellung, indem du dasselbe Event mehrfach abspielst.
  • Behalte den Anfrageverlauf während Feature-Branches für Regressionschecks.
  • Nutze Test-Modus-Zugangsdaten, damit abgespielte Events nie Produktionsdaten beeinflussen.

Tritt der PortPreview-Warteliste bei für Webhook-Erfassung und -Replay direkt in deinem Tunnel-Workflow.

Häufig gestellte Fragen

Was ist Webhook-Replay?
Webhook-Replay sendet eine zuvor erfasste Callback-Anfrage erneut an deinen lokalen Handler, ohne den Upstream-Provider neu auszulösen. Du verwendest dieselben Header und denselben Body aus deinem Anfrageverlauf.
Warum ist Webhook-Replay besser als erneutes Auslösen?
Replay ist sofortig und hängt nicht von Provider-Ratenlimits, einmaligen Events oder der Verfügbarkeit von Test-APIs ab. Du iterierst am Handler-Code, ohne auf externe Systeme zu warten.
Bleiben beim Webhook-Replay die Signatur-Header erhalten?
Ja, wenn dein Tunnel-Tool die Originalanfrage intakt erfasst und erneut abspielt. PortPreview erhält die Header, sodass Signaturprüfungen von Stripe, GitHub und anderen Providern beim Replay funktionieren.