Webhooks
Empfangen Sie Events in Echtzeit, damit Ihr System stets weiß, was aus jeder Nachricht wurde. Prüfen Sie jede Anfrage anhand ihrer Signatur.
So funktionieren Webhooks
Registrieren Sie im Dashboard einen HTTPS-Endpunkt und wählen Sie die gewünschten Events. Passiert etwas mit einer Nachricht, sendet MigoSMTP einen POST-Request mit JSON-Body an Ihren Endpunkt.
Event-Typen
Abonnieren Sie nur die Events, die Ihr System braucht. Jedes Event enthält die Message-ID, den Empfänger und einen Zeitstempel, damit Sie es der gesendeten Nachricht zuordnen können.
Beispiel-Payload
Payloads sind JSON und werden per POST-Request gesendet. Die Werte hier sind nur Beispiele.
{
"event": "delivered",
"message_id": "msg_123",
"recipient": "you@example.com",
"timestamp": "2026-01-15T10:30:00Z"
}Signatur verifizieren
Jeder, der Ihre URL kennt, könnte dorthin posten. Prüfen Sie daher jede Anfrage. Berechnen Sie einen HMAC über den rohen Request-Body mit Ihrem Signing Secret und vergleichen Sie ihn per Constant-Time-Vergleich mit dem Wert im Signatur-Header. Weisen Sie nicht passende Anfragen ab. Header-Name und Algorithmus stehen bei Ihrem Signing Secret im Dashboard.
const crypto = require("crypto");
function valid(rawBody, received, secret) {
const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
const a = Buffer.from(expected), b = Buffer.from(received);
return a.length === b.length && crypto.timingSafeEqual(a, b);
}Schnell antworten
Geben Sie einen 2xx-Status zurück, sobald Sie das Event gespeichert haben, und erledigen Sie die eigentliche Arbeit danach in einer Queue. Ein langsamer oder fehlerhafter Endpunkt löst Wiederholungen aus und kann Ihre anderen Events verzögern.
Mit Duplikaten und falscher Reihenfolge rechnen
Fehlgeschlagene Zustellungen werden wiederholt, daher kann dasselbe Event mehrfach eintreffen, und Events können in anderer Reihenfolge ankommen. Machen Sie Ihren Handler mit Message-ID und Event-Typ idempotent und verwenden Sie den Zeitstempel des Events statt der Ankunftszeit.
Testen, bevor Sie sich darauf verlassen
Richten Sie den Endpunkt auf einen Request-Inspector oder einen Tunnel zu Ihrem Entwicklungsrechner, senden Sie eine Testnachricht und prüfen Sie, ob Sie die Signatur im echten Traffic verifizieren können.