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