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
- Ein Callback erreicht deine Tunnel-URL und wird an deine lokale App weitergeleitet.
- Das Tunnel-Tool erfasst die vollständige Anfrage: Methode, Pfad, Header und Body.
- Du fixst deinen Handler-Code anhand dessen, was du in der erfassten Anfrage siehst.
- Du spielst die erfasste Anfrage mit einer Aktion erneut an deinen lokalen Endpunkt ab.
- 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
- Starte deine App und führe
npx portpreview 3000aus. - Konfiguriere deinen Provider so, dass er Callbacks an die Tunnel-URL sendet.
- Löse ein Test-Event aus und inspiziere die erfasste Anfrage in PortPreview.
- Fixe deinen Handler und spiele dann die erfasste Anfrage erneut ab.
- 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.