Webhooks sind eine leistungsstarke Methode, um Echtzeit-Benachrichtigungen zu erhalten, wenn Ereignisse in Ihren E-Mail-Kampagnen auftreten. In diesem umfassenden Leitfaden erfahren Sie, was Webhooks sind, wie sie mit E-Mail-Systemen zusammenarbeiten und wie Sie die Webhook-Funktionalität von Mailjet implementieren, um E-Mail-Ereignisse wie Öffnungen, Klicks, Bounces und mehr in Echtzeit zu verfolgen.
Am Ende dieses Leitfadens wissen Sie, wie Sie Webhook-Endpunkte einrichten und optimieren, verschiedene Ereignistypen handhaben und Best Practices für eine zuverlässige, skalierbare Verarbeitung von E-Mail-Ereignissen implementieren.
Über Webhooks kann ein System auf unkomplizierte Weise ein anderes System darüber benachrichtigen, dass ein bestimmtes Ereignis gerade passiert ist. Es handelt sich um eine HTTP-POST-Anfrage, die an eine von Ihnen angegebene URL (Ihren „Webhook-Endpunkt“) gesendet wird und eine JSON-Nutzlast enthält, die das Ereignis beschreibt. Im Gegensatz zu APIs, die Sie nach einem Zeitplan abfragen, sind Webhooks ereignisgesteuert, da sie Daten nur dann übermitteln, wenn es etwas Neues zu berichten gibt.
Stellen Sie sich Webhooks als die Internetversion eines Telefonanrufs vor: Anstatt immer wieder zu prüfen, ob etwas passiert ist, ruft das System Sie sofort an, wenn es so weit ist.
Webhooks bieten mehrere Vorteile für das E-Mail-Marketing und transaktionale E-Mail-Workflows:
Der Unterschied zwischen Webhooks und der herkömmlichen E-Mail-API-Abfrage hilft zu verstehen, warum Webhooks oft die bessere Wahl sind:
| API-Abfrage | Webhooks |
|---|---|
| Daten werden nach einem Timer abgerufen, auch wenn sich nichts geändert hat | Ereignisbasierte Push-Benachrichtigungen |
| Mehr Anfragen, höhere Bandbreitenauslastung | Weniger Anfragen, mehr Effizienz |
| Verzögerte Erkenntnisse aufgrund von Abfrageintervallen | Sofortige Aktualisierung bei Ereignissen |
| Komplexe Planung und Statusverwaltung | Einfachere Automatisierungsabläufe |
Mailjet kann Webhook-Benachrichtigungen für die folgenden E-Mail-Ereignisse senden:
Jeder Webhook enthält eine JSON-Nutzlast mit ereignisspezifischen Informationen. Die folgenden sind Beispiele für gängige Ereignistypen:
{
"event": "open",
"time": 1433103519,
"MessageID": 19421777396190490,
"email": "api@mailjet.com",
"mj_campaign_id": 7173,
"mj_contact_id": 320,
"customcampaign": "",
"CustomID": "helloworld",
"Payload": "",
"ip": "127.0.0.1",
"geo": "US",
"agent": "Mozilla/5.0 ..."
}
{
"event": "bounce",
"time": 1430812195,
"MessageID": 13792286917004336,
"email": "bounce@mailjet.com",
"blocked": true,
"hard_bounce": true,
"error_related_to": "recipient",
"error": "user unknown"
}
Jeder Ereignistyp erfordert unterschiedliche Reaktionsstrategien:
Die Einhaltung dieser Best Practices gewährleistet eine zuverlässige Webhook-Verarbeitung und optimale Leistung:
Mailjet versucht automatisch, fehlgeschlagene Webhook-Zustellungen bis zu 24 Stunden lang zu wiederholen, wenn Ihr Endpunkt keine 200 OK-Antwort zurückgibt. Wenn wiederholte Fehler bestehen bleiben, kann die Webhook-URL gesperrt werden. Sie können eine Backup-URL konfigurieren, um eine kontinuierliche Ereignisbereitstellung zu gewährleisten.
Sie können Mailjet-Webhooks entweder über die API oder die Weboberfläche konfigurieren. Dazu gehen Sie jeweils folgendermaßen vor:
Diese Methode bietet mehr Kontrolle und ist ideal für automatisierte Bereitstellungen.
Entscheiden Sie, welche Ereignisse Sie verfolgen möchten: Sende-, Öffnungs-, Klick-, Bounce-, Blockier-, Spam- oder Abmeldeereignisse.
Verwenden Sie die Ressource eventcallbackurl, um Ihren Webhook zu konfigurieren:
curl -X POST \
https://api.mailjet.com/v3/REST/eventcallbackurl \
-H 'Authorization: Basic <base64_encoded_api_key:secret>' \
-H 'Content-Type: application/json' \
-d '{
"EventType": "open",
"Url": "https://example.com/webhooks/mailjet/open",
"Version": 2
}'
Hinweise zur Konfiguration:
Senden Sie eine Test-E-Mail und führen Sie die verfolgte Aktion (Öffnen, Klicken usw.) aus, um zu überprüfen, ob Sie Webhook-Ereignisse erhalten.
Für Teams, die eine visuelle Schnittstelle bevorzugen:
Hier finden Sie minimale Webhook-Empfänger-Implementierungen in gängigen Programmiersprachen:
const express = require('express');
const app = express();
app.use(express.json());
app.post('/webhooks/mailjet/open', (req, res) => {
// 1. Schnelles persistentes Speichern der Ereignisdaten
console.log('Received webhook:', req.body);
// TODO: Speichern in Warteschlange oder Datenbank
// await saveToQueue(req.body);
// 2. Sofort bestätigen
res.status(200).send('ok');
});
app.listen(3000, () => {
console.log('Webhook server running on port 3000');
});
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhooks/mailjet/open', methods=['POST'])
def handle_open_event():
data = request.get_json()
# Verarbeitung der Webhook-Daten
print(f"Received webhook: {data}")
# TODO: Speichern in Warteschlange oder Datenbank
# save_to_queue(data)
return jsonify({"status": "ok"}), 200
if __name__ == '__main__':
app.run(port=3000)
Hier finden Sie einige Tipps, mit denen Sie noch mehr aus Webhooks herausholen können.
Verwenden Sie Version=2 in Ihrer Webhook-Konfiguration, um den HTTP-Overhead durch den Empfang mehrerer Ereignisse in gebündelten Anfragen zu reduzieren:
{
"EventType": "open",
"Url": "https://example.com/webhooks/mailjet/batch",
"Version": 2
}
Verwenden Sie CustomID- und EventPayload-Parameter in Ihren Send-API-Aufrufen, um Webhook-Ereignisse einfacher mit Ihren internen Systemen zu korrelieren:
{
"Messages": [{
"To": [{"Email": "user@example.com"}],
"Subject": "Welcome!",
"TextPart": "Welcome to our service!",
"CustomID": "user-123-welcome",
"EventPayload": "campaign=onboarding&segment=new_users"
}]
}
Für Anwendungen mit hohem Volumen sollten Sie das Streaming von Ereignissen an Warteschlangendienste von Drittanbietern in Betracht ziehen:
Mailjet sendet Sende-, Öffnungs-, Klick-, Bounce-, Blockier-, Spam- und Abmeldeereignisse. Jedes Ereignis enthält die MessageID, Kontakt- und Kampagnenkennungen sowie ereignisspezifische Details (z. B. die URL bei Klick-Ereignissen).
Ereignisse werden kurz nach ihrem Auftreten gesendet, in der Regel innerhalb von Sekunden. Wenn Ihr Endpunkt nicht mit HTTP 200 OK antwortet, versucht Mailjet die Zustellung bis zu 24 Stunden lang erneut.
Ja. Konfigurieren Sie die gruppierte Zustellung, indem Sie Version=2 für Ihre eventcallbackurl festlegen, damit Mailjet mehrere Ereignisse in einer POST-Anfrage zusammenfasst.
Verwenden Sie HTTPS, schützen Sie den Endpunkt mit grundlegender Authentifizierung und beschränken Sie den Zugriff durch IP-Filter oder API-Gateways. Verarbeiten Sie Nutzlasten immer serverseitig und geben Sie Webhook-Endpunkte niemals an Client-Anwendungen weiter.
Befolgen Sie diese Checkliste, um Mailjet-Webhooks erfolgreich zu implementieren:
Nachdem Sie nun die Grundlagen und die Implementierung von Webhooks verstanden haben, können Sie sich mit diesen ähnlichen Mailjet-Funktionen beschäftigen:
Webhooks bieten eine leistungsstarke und effiziente Möglichkeit, Echtzeit-Benachrichtigungen über E-Mail-Ereignisse zu erhalten. Durch die Implementierung von Mailjet-Webhooks mit angemessener Fehlerbehandlung, Sicherheitsmaßnahmen und asynchroner Verarbeitung können Sie reaktionsschnelle, datengesteuerte E-Mail-Workflows erstellen, die das Kundenerlebnis verbessern und die betriebliche Effizienz steigern.
Denken Sie daran: Fangen Sie auf einfache Weise an, überwachen Sie Ihre Implementierung genau und skalieren Sie die Webhook-Verarbeitung, wenn Ihr E-Mail-Volumen wächst. Mit den Grundlagen aus diesem Leitfaden sind Sie bereit, das volle Potenzial der E-Mail-Ereignisverfolgung in Echtzeit auszuschöpfen.