Slack Incoming Webhook
Erhalten Sie eine Slack-Nachricht, sobald ein Zenovay-Ereignis ausgelöst wird — Traffic-Spitze, Zielabschluss, Fehler-Spitze oder Ausfall.
Dieses Rezept nutzt die native Incoming Webhook-Funktion von Slack — kein Slack-App oder Bot erforderlich.
Ausgehende Webhooks sind eine Pro+-Funktion. Aktualisieren Sie Ihren Plan, um sie zu aktivieren.
1. Den Slack Incoming Webhook erstellen
- Öffnen Sie in Slack Ihren Workspace → Apps → suchen Sie nach "Incoming Webhooks" → Add to Slack.
- Wählen Sie den Kanal, der Zenovay-Benachrichtigungen erhalten soll (z. B.
#alertsoder#growth). - Klicken Sie auf Add Incoming Webhooks integration.
- Slack zeigt eine Webhook URL wie
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX— kopieren Sie diese.
2. Den Webhook in Zenovay hinzufügen
- Gehen Sie in
app.zenovay.comzu Settings → Webhooks. - Wählen Sie die Website, für die Sie Benachrichtigungen erhalten möchten.
- Klicken Sie auf Add webhook.
- Füllen Sie aus:
- Name:
Slack #alerts(oder etwas Aussagekräftiges) - URL: Fügen Sie die Slack-Webhook-URL aus Schritt 1 ein
- Events: Wählen Sie die Events aus, die Sie interessieren (Traffic-Spitze, Zielabschluss, Website ausgefallen, …)
- Name:
- Klicken Sie auf Create webhook.
- Klicken Sie auf das Send test event (Papierflugzeug-Symbol) auf der neuen Karte. Innerhalb von ca. 5 Sekunden sollte eine Slack-Nachricht im Kanal erscheinen.
Das war's für die Grundkonfiguration — Slack akzeptiert Zenovays Standard-JSON-Payload als generisches text-Feld.
3. (Optional) Die Slack-Nachricht formatieren
Slacks Incoming Webhooks akzeptieren einen reichhaltigeren Payload mit Blocks, Attachments und Markdown-Formatierung. Zenovay sendet ein generisches JSON-Ereignis — Slack rendert es als Fallback-text-Wert.
Wenn Sie hübsch formatierte Slack-Nachrichten mit farbigen Attachments oder Block-Layouts möchten, betreiben Sie ein kleines Relay zwischen Zenovay und Slack:
// Cloudflare Workers / any Node-style runtime
export default {
async fetch(req) {
const event = await req.json();
const slackPayload = {
text: `📈 Zenovay event: *${event.event_type}* on ${event.website_id}`,
attachments: [{
color: event.event_type === 'website_down' ? '#dc2626' : '#3b82f6',
fields: [
{ title: 'Event', value: event.event_type, short: true },
{ title: 'Time', value: event.timestamp, short: true },
],
}],
};
await fetch(SLACK_WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(slackPayload),
});
return new Response('ok');
},
};
Richten Sie die Webhook-URL von Zenovay auf dieses Relay statt direkt auf Slack aus.
4. Zenovays Signatur verifizieren (empfohlen für Relays)
Wenn Sie ein Relay verwenden, verifizieren Sie Zenovays HMAC-SHA256-Signatur, damit Slack nur echte Zenovay-Ereignisse erhält:
import { createHmac } from 'crypto';
const signature = req.headers.get('x-zenovay-signature'); // 'sha256=<hex>'
const provided = signature.replace(/^sha256=/, '');
const expected = createHmac('sha256', YOUR_WEBHOOK_SECRET)
.update(rawBody)
.digest('hex');
if (provided !== expected) {
return new Response('invalid signature', { status: 401 });
}
Ihr Webhook-Secret finden Sie unter Settings → Webhooks → klicken Sie auf das Auge-Symbol auf der Webhook-Karte.
Fehlerbehebung
- Keine Slack-Nachricht kommt an: Prüfen Sie die Webhook-Karte in Zenovay auf einen "Last fired"-Zeitstempel — wenn er leer ist, wurde noch kein Ereignis ausgelöst. Klicken Sie auf Send test event, um eines zu erzwingen.
invalid_payloadvon Slack: Slacks Webhook hat ein 400 zurückgegeben, weil die JSON-Form nicht passte. Verwenden Sie ein Relay (Schritt 3), um das Format an Slacks erwartetes Format anzupassen.- Zu viele Benachrichtigungen: Deaktivieren Sie in der Webhook-Konfiguration häufige Ereignistypen wie
traffic_spike. Behalten Sie nur die signalstarken.