API-Dokumentation

Webhooks

Empfangen Sie E-Mail-Ereignisse in Echtzeit.

Übersicht

Wenn Webhooks konfiguriert sind, wird bei Ereignissen wie E-Mail-Versand, Öffnung oder Klick ein HTTP POST an die angegebene URL gesendet.

Webhooks können unter Dashboard > Webhooks konfiguriert werden.

Ereignistypen

Event Description
email.sent Wenn eine E-Mail versendet wurde
email.delivered Wenn eine E-Mail zugestellt wurde
email.opened Wenn der Empfänger die E-Mail geöffnet hat
email.clicked Wenn der Empfänger einen Link in der E-Mail angeklickt hat
email.bounced Wenn eine E-Mail zurückgewiesen wurde
email.complained Wenn der Empfänger die E-Mail als Spam gemeldet hat
subscriber.created Wenn ein neuer Abonnent hinzugefügt wurde
subscriber.unsubscribed Wenn ein Abonnent sich abgemeldet hat
campaign.sent Wenn der Kampagnenversand gestartet wurde
campaign.completed Wenn der Kampagnenversand abgeschlossen wurde

Payload-Format

Alle Webhook-Anfragen enthalten einen JSON-Payload im folgenden Format:

{
  "event": "email.opened",
  "timestamp": "2026-01-10T12:00:00+00:00",
  "data": {
    "campaign_id": 123,
    "campaign_uuid": "abc-123...",
    "campaign_name": "January Newsletter",
    "subscriber_id": 456,
    "subscriber_uuid": "def-456...",
    "subscriber_email": "user@example.com",
    "ip_address": "1.2.3.4",
    "user_agent": "Mozilla/5.0...",
    "occurred_at": "2026-01-10T12:00:00+00:00"
  }
}

Anfrage-Header

Header Description
Content-Type application/json
X-Webhook-ID Webhook-UUID
X-Webhook-Event Ereignistyp (z.B. email.opened)
X-Webhook-Signature HMAC-SHA256-Signatur

Signaturverifizierung

Verifizieren Sie den X-Webhook-Signature-Header, um die Authentizität der Webhook-Anfrage zu bestätigen. Die Signatur ist ein HMAC-SHA256-Hash unter Verwendung des Webhook-Secrets und des Anfrage-Bodys.

PHP-Beispiel

<?php
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'];
$secret = 'your_webhook_secret';

$expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);

if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    die('Invalid signature');
}

$data = json_decode($payload, true);
// Process the event...

Node.js-Beispiel

const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}

// Express.js example
app.post('/webhook', (req, res) => {
  const signature = req.headers['x-webhook-signature'];
  const payload = JSON.stringify(req.body);

  if (!verifySignature(payload, signature, 'your_secret')) {
    return res.status(401).send('Invalid signature');
  }

  // Process the event...
  res.status(200).send('OK');
});

Wiederholungsrichtlinie

  • • Bei fehlgeschlagenem Webhook-Versand (Antwort nicht 2xx) wird nicht automatisch wiederholt.
  • • Nach 5 aufeinanderfolgenden Fehlschlägen wird der Webhook automatisch deaktiviert.
  • • Deaktivierte Webhooks können im Dashboard wieder aktiviert werden.
  • • Die Antwortzeit muss innerhalb von 10 Sekunden liegen.

Best Practices

  • • Verifizieren Sie immer die Signatur, um die Authentizität der Anfrage zu bestätigen.
  • • Verarbeiten Sie Webhooks so schnell wie möglich (innerhalb von 5 Sekunden).
  • • Stellen Sie lange Aufgaben in eine Warteschlange und geben Sie sofort 200 OK zurück.
  • • Verwenden Sie HTTPS-Endpunkte für eine sichere Datenübertragung.

Wir verwenden Cookies

Wir verwenden Cookies zur Verbesserung Ihres Erlebnisses. Sie können auswählen, welche Cookie-Kategorien Sie erlauben. Erfahren Sie mehr