Ereignisse per Webhook empfangen
Ereignisse, Aufbau der Anfrage, Signaturprüfung und Wiederholungen. Im Team- und Business-Plan.
Ein Webhook schickt einen HTTPS-POST an deinen Server, wenn in deinem Workspace etwas passiert, zum Beispiel wenn ein Gespräch beginnt oder sich ein Kontakt ändert. Du richtest Webhooks unter Einstellungen → Workspace → API & Webhooks → Webhook hinzufügen ein.
Webhooks gehören zum Team-Plan (5 Endpunkte) und zum Business-Plan (25 Endpunkte). Nur Owner und Admins können sie verwalten.
Ereignisse
| Ereignis | Wird gesendet, wenn |
|---|---|
conversation.created |
ein Gespräch beginnt |
conversation.updated |
sich Status, Zuweisung oder Labels eines Gesprächs ändern |
conversation.closed |
ein Gespräch erledigt ist |
message.created |
eine neue Nachricht ankommt oder gesendet wird. Interne Notizen sind nicht dabei. |
contact.created |
ein Kontakt gespeichert wird |
contact.updated |
sich ein Kontakt ändert |
rating.created |
ein Besucher ein Gespräch bewertet |
Test senden schickt ein webhook.test-Ereignis, damit du deinen Endpunkt prüfen kannst. Abonnieren kannst du es nicht.
Die Anfrage
Jede Anfrage ist ein POST mit JSON-Body:
{
"id": "cm3x9…",
"event": "conversation.created",
"createdAt": "2026-11-06T09:12:44.120Z",
"workspaceId": "cm1a2…",
"data": { }
}
data enthält das Objekt, um das es geht. Die genauen Felder siehst du, wenn du den Webhook öffnest, zu Zustellungen gehst und bei einer beliebigen Zustellung auf Gesendet schaust.
Header:
| Header | Wert |
|---|---|
X-Asktrix-Event |
Der Name des Ereignisses |
X-Asktrix-Delivery |
Die ID der Zustellung. Sie entspricht id im Body und bleibt bei Wiederholungen gleich. |
X-Asktrix-Signature |
t=<Unix-Zeitstempel>,v1=<Signatur> |
User-Agent |
asktrix-webhooks/1 |
Antworte innerhalb von 10 Sekunden mit einem beliebigen 2xx-Status. Weiterleitungen werden nicht verfolgt und zählen als Fehler.
Signatur prüfen
Jeder Webhook hat seinen eigenen Signatur-Schlüssel (er beginnt mit whsec_). Die Signatur ist ein HMAC-SHA256 in Hex über den Zeitstempel, einen Punkt und den unveränderten Request-Body.
Prüf sie, bevor du der Anfrage vertraust:
- Lies
tundv1aus dem HeaderX-Asktrix-Signature. - Lehne die Anfrage ab, wenn
tmehr als 5 Minuten von deiner Serverzeit abweicht. - Berechne HMAC-SHA256 über
<t>.<roher Body>mit deinem Schlüssel. - Vergleiche das Ergebnis in konstanter Zeit mit
v1.
Nimm den Body genau so, wie er angekommen ist. Wenn dein Framework das JSON zuerst parst und du es danach wieder serialisierst, passt die Signatur nicht mehr.
Beispiel für Node.js:
import { createHmac, timingSafeEqual } from "node:crypto";
export function isValidAsktrixRequest(rawBody, header, secret) {
const parts = Object.fromEntries(header.split(",").map((p) => p.trim().split("=")));
const t = Number(parts.t);
if (!t || Math.abs(Date.now() / 1000 - t) > 300) return false;
const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
const given = String(parts.v1 ?? "");
return given.length === expected.length && timingSafeEqual(Buffer.from(given), Buffer.from(expected));
}
Neu erzeugen erstellt einen neuen Schlüssel. Der alte gilt sofort nicht mehr, also hinterleg den neuen direkt danach auf deinem Server.
Wiederholungen
Schlägt eine Zustellung fehl (Timeout, Verbindungsfehler oder ein Status außerhalb von 2xx), versuchen wir es nach 1 Minute, 5 Minuten, 30 Minuten, 2 Stunden und 6 Stunden erneut. Das sind insgesamt sechs Versuche. Eine Wiederholung hat dieselbe id, du kannst Duplikate also überspringen.
Scheitert dein Endpunkt dauerhaft (20 Fehlversuche in Folge, und eine Zustellung hat alle sechs Versuche aufgebraucht), schalten wir den Webhook ab, und Owner und Admins des Workspace bekommen eine Benachrichtigung. In der Praxis heißt das: stundenlange Fehler, nicht ein kurzer Ausfall. Bring deinen Endpunkt in Ordnung und schalte den Webhook dann mit Webhook aktiv wieder ein.
Zustell-Protokoll
Zustellungen zeigt pro Webhook die letzten 30 Tage: Status, Versuche, Dauer, was wir gesendet haben und was dein Server geantwortet hat. Filtere nach Fehlgeschlagen und stell mit Erneut senden ein einzelnes Ereignis noch einmal zu.
Grenzen
- Die Endpunkt-URL muss mit
https://beginnen und aus dem Internet erreichbar sein. Private und lokale Adressen sind gesperrt. - Webhooks feuern nur, solange dein Workspace einen Plan hat, der sie enthält. Nach einem Downgrade bleiben deine Endpunkte erhalten, bekommen aber nichts mehr.