Webhooks & Integrationen
Webhooks schicken bei bestimmten Ereignissen in deinem Team einen signierten POST-Request an eine von dir hinterlegte URL — z. B. an Zapier, Make, n8n oder einen eigenen Server. Einrichten kannst du sie unter Einstellungen → Integrationen (nur für Trainer/Team-Owner sichtbar).
Verfügbare Events
| Event | Auslöser | Felder in data |
|---|---|---|
event.created | Ein neuer Termin (Training/Spiel/Sonstiges) wurde angelegt. | eventId, type, title, date, time |
event.cancelled | Ein Termin wurde abgesagt. | eventId, type, title, date, time |
rsvp.updated | Ein Spieler hat seine Zu-/Absage geändert. | eventId, title, date, playerName, status |
fine.created | Eine neue Strafe wurde in der Mannschaftskasse gebucht. | fineId, playerName, amount, reason, date |
game.finished | Ein Spielergebnis wurde im Archiv gespeichert. | gameId, teamHome, teamAway, scoreHome, scoreAway, date |
Pro Team kannst du bis zu 10 Webhooks anlegen, jeder kann mehrere Events abonnieren.
Payload-Format
Jede Zustellung ist ein JSON-Body mit derselben Hülle, unabhängig vom Event-Typ:
{
"event": "game.finished",
"teamId": "abc123",
"timestamp": 1751360000000,
"data": {
"gameId": "g_42",
"teamHome": "DJK SG Bösperde",
"teamAway": "TV Wickede-Ruhr",
"scoreHome": 28,
"scoreAway": 24,
"date": "2026-06-28"
}
}Signaturprüfung
Jede Anfrage trägt zwei Header: X-Sechsmeter-Event (der Event-Typ) und X-Sechsmeter-Signature — ein HMAC-SHA256 des rohen Body, signiert mit dem Secret, das du beim Anlegen des Webhooks einmalig angezeigt bekommst (danach nicht mehr abrufbar, nur regenerierbar). Prüfe die Signatur, bevor du dem Payload vertraust:
const crypto = require('crypto');
function isValid(rawBody, signatureHeader, secret) {
const expected = 'sha256=' +
crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signatureHeader),
Buffer.from(expected)
);
}Wichtig: verwende den rohen, unveränderten Request-Body für die Prüfung (vor jeglichem JSON-Parsing durch dein Framework) — sonst weicht die Signatur ab.
Zustellung & Limits
- Nur
https://-URLs werden akzeptiert. - Timeout pro Zustellversuch: 8 Sekunden. Antwortet dein Endpunkt nicht mit einem Erfolgs-Status, gilt die Zustellung als fehlgeschlagen.
- Es gibt aktuell keine automatischen Wiederholungsversuche — ein fehlgeschlagener Event wird nicht erneut zugestellt.
- Status der letzten Zustellung (Erfolg/Fehler + Fehlermeldung) siehst du direkt in den Einstellungen neben dem jeweiligen Webhook.
- Über den „Test“-Button kannst du jederzeit ein Test-Event mit derselben Signatur-Logik an deinen Endpunkt schicken.