E-Mail

Was ist ein Webhook? E-Mail-Ereignisverfolgung in Echtzeit mit Mailjet

Erfahren Sie, was Webhooks sind, wozu Sie sie nutzen können und wie Sie mit Webhooks über Mailjet unkompliziert E-Mail-Ereignisse nachverfolgen.
Bild fürWas ist ein Webhook? E-Mail-Ereignisverfolgung in Echtzeit mit Mailjet
Dezember 20, 2022

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.

Was ist ein Webhook?

Ü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.

Deshalb nutzen Teams Webhooks

Webhooks bieten mehrere Vorteile für das E-Mail-Marketing und transaktionale E-Mail-Workflows:

  • Benachrichtigungen in Echtzeit: Ihre Anwendung wird sofort aktualisiert, sobald eine E-Mail geöffnet oder ein Link angeklickt wurde
  • Schnellerer Support und Betrieb: Auslösen von Warnmeldungen, wenn die Bounce- oder Blockierungsraten ansteigen
  • Sauberere Datenverwaltung: Automatische Synchronisierung von Abmeldungen und Hard Bounces mit Ihrem CRM
  • Verbesserte Personalisierung: Senden Sie Follow-up-Nachrichten, wenn Kunden mit Ihnen interagieren (oder nicht interagieren)
  • Bessere Analysen: Übertragen Sie Ereignisse in Ihre Dashboards oder Ihr Data Warehouse

Webhook vs. API-Abfrage

Der Unterschied zwischen Webhooks und der herkömmlichen E-Mail-API-Abfrage hilft zu verstehen, warum Webhooks oft die bessere Wahl sind:

API-AbfrageWebhooks
Daten werden nach einem Timer abgerufen, auch wenn sich nichts geändert hatEreignisbasierte Push-Benachrichtigungen
Mehr Anfragen, höhere BandbreitenauslastungWeniger Anfragen, mehr Effizienz
Verzögerte Erkenntnisse aufgrund von AbfrageintervallenSofortige Aktualisierung bei Ereignissen
Komplexe Planung und StatusverwaltungEinfachere Automatisierungsabläufe

So funktionieren E-Mail-Webhooks in Mailjet

Mailjet kann Webhook-Benachrichtigungen für die folgenden E-Mail-Ereignisse senden:

  • sent: E-Mail wurde erfolgreich gesendet
  • open: Der Empfänger hat die E-Mail geöffnet
  • click: Der Empfänger hat auf einen Link in der E-Mail geklickt
  • bounce: Die E-Mail ist unzustellbar (Soft oder Hard Bounce)
  • blocked: E-Mail wurde vom Server des Empfängers blockiert
  • spam: E-Mail wurde als Spam markiert
  • unsub: Empfänger hat sich abgemeldet

Webhook-Nutzlasten verstehen

Jeder Webhook enthält eine JSON-Nutzlast mit ereignisspezifischen Informationen. Die folgenden sind Beispiele für gängige Ereignistypen:

Öffnen der Ereignis-Nutzlast

                            

                                {
  "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 ..."
}
                            
                        

Bounce der Ereignis-Nutzlast

                            

                                {
  "event": "bounce",
  "time": 1430812195,
  "MessageID": 13792286917004336,
  "email": "bounce@mailjet.com",
  "blocked": true,
  "hard_bounce": true,
  "error_related_to": "recipient",
  "error": "user unknown"
}

                            
                        

Verarbeitung verschiedener Ereignistypen

Jeder Ereignistyp erfordert unterschiedliche Reaktionsstrategien:

  • Abmeldung/Spam: Kontakt sofort aus allen Systemen löschen
  • Hard Bounce: Aus E-Mail-Listen entfernen und zukünftige Sendungen stoppen
  • Blockiert: Fehlerdetails und Anbieterinformationen prüfen, um Zustellbarkeitsprobleme zu diagnostizieren
  • Klick/Öffnung: Folgekampagnen auslösen, Interaktion bewerten und Customer Journeys personalisieren

Best Practices für Mailjet-Webhooks

Die Einhaltung dieser Best Practices gewährleistet eine zuverlässige Webhook-Verarbeitung und optimale Leistung:

Antworthandhabung

  • HTTP 200 OK sofort zurückgeben: Bestätigen Sie den Empfang so schnell wie möglich
  • Asynchrone Verarbeitung: Speichern Sie die Nutzlast in einer Warteschlange oder Datenbank und verarbeiten Sie sie dann separat

Zuverlässigkeit und Sicherheit

  • HTTPS verwenden: Hosten Sie Ihren Endpunkt über eine sichere Verbindung
  • Authentifizierung implementieren: Schützen Sie Ihren Endpunkt mit grundlegender Authentifizierung oder API-Schlüsseln
  • Fehlschläge überwachen: Verfolgen Sie Nicht-200-Antworten, um eine URL-Sperre zu verhindern

Leistungsoptimierung

  • Verarbeitungszeit minimieren: Minimieren Sie die Arbeitslast im Request-Handler, um Timeouts zu vermeiden
  • Die Gruppierung von Ereignissen verwenden: Konfigurieren Sie Version=2, um mehrere Ereignisse in einer einzigen Anfrage zusammenzufassen
  • Backup-URLs einrichten: Konfigurieren Sie Failover-Endpunkte, um den Ereignisfluss bei Ausfällen aufrechtzuerhalten

Retry-Verhalten

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.

Einrichten von Mailjet-Webhooks

Sie können Mailjet-Webhooks entweder über die API oder die Weboberfläche konfigurieren. Dazu gehen Sie jeweils folgendermaßen vor:

Option A: API-Einrichtung (empfohlen für Entwickler)

Diese Methode bietet mehr Kontrolle und ist ideal für automatisierte Bereitstellungen.

Schritt 1: Wählen Sie Ihre Ereignistypen

Entscheiden Sie, welche Ereignisse Sie verfolgen möchten: Sende-, Öffnungs-, Klick-, Bounce-, Blockier-, Spam- oder Abmeldeereignisse.

Schritt 2: Erstellen Sie den Webhook per API

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:

  • Version=2 ermöglicht gruppierte Ereignisse in einer einzigen POST-Anfrage
  • Setzen Sie „isBackup“: true auf eine sekundäre URL, um einen Failover-Endpunkt zu erstellen

Schritt 3: Testen Sie Ihre Integration

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.

Option B: Webschnittstellen-Einrichtung (Option ohne Code)

Für Teams, die eine visuelle Schnittstelle bevorzugen:

  1. Melden Sie sich bei app.mailjet.com an und navigieren Sie zu den Kontoeinstellungen
  2. Wählen Sie unter REST API „Ereignisbenachrichtigungen (Webhooks)“
  3. Fügen Sie eine URL für alle Ereignisse hinzu oder definieren Sie spezielle URLs pro Ereignistyp
  4. Testen Sie mit echten Ereignissen und nicht mit der „Test versenden“-Funktion, die leere Nutzlasten sendet

Beispiele für die Webhook-Implementierung

Hier finden Sie minimale Webhook-Empfänger-Implementierungen in gängigen Programmiersprachen:

Node.js mit express

                            

                                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');
});

                            
                        

Python mit Flask

                            

                                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&quot;Received webhook: {data}&quot;)
  # TODO: Speichern in Warteschlange oder Datenbank
  # save_to_queue(data)

  return jsonify({"status": "ok"}), 200

if __name__ == '__main__':
  app.run(port=3000)
                            
                        

Fortgeschrittene Konfigurationstipps

Hier finden Sie einige Tipps, mit denen Sie noch mehr aus Webhooks herausholen können.

Massenverarbeitung in großem Maßstab

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
}
                            
                        

Ereigniskorrelation und -verfolgung

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"
  }]
}

                            
                        

Ereignis-Streaming im Unternehmensmaßstab

Für Anwendungen mit hohem Volumen sollten Sie das Streaming von Ereignissen an Warteschlangendienste von Drittanbietern in Betracht ziehen:

  • Azure Service Bus
  • Amazon SQS
  • Google Cloud Pub/Sub

Häufig gestellte Fragen

Welche Ereignisse werden von Mailjet an Webhooks gesendet?

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).

Wie schnell werden Ereignisse gesendet?

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.

Kann ich die Anzahl der Webhook-Aufrufe reduzieren?

Ja. Konfigurieren Sie die gruppierte Zustellung, indem Sie Version=2 für Ihre eventcallbackurl festlegen, damit Mailjet mehrere Ereignisse in einer POST-Anfrage zusammenfasst.

Wie kann ich meinen Webhook-Endpunkt sichern?

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.

Checkliste für die Schnelleinrichtung

Befolgen Sie diese Checkliste, um Mailjet-Webhooks erfolgreich zu implementieren:

  • [ ] Erstellen und sichern Sie einen öffentlichen HTTPS-Endpunkt
  • [ ] Konfigurieren Sie Eventcallbackurl per API oder Webschnittstelle
  • [ ]Implementieren Sie schnelle HTTP 200 OK-Antworten mit asynchroner Verarbeitung
  • [ ] Fügen Sie CustomID und EventPayload zu Ihren E-Mail-Sendungen hinzu, um die Korrelation zu erleichtern
  • [ ] Überwachen Sie Webhook-Fehler und konfigurieren Sie Backup-URLs
  • [ ] Richten Sie das Ereignis-Streaming für Ihre Analyse- oder Warnsysteme ein

Nächste Schritte und zusätzliche Ressourcen

Nachdem Sie nun die Grundlagen und die Implementierung von Webhooks verstanden haben, können Sie sich mit diesen ähnlichen Mailjet-Funktionen beschäftigen:

Zusammenfassung

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.