Zustellungen von Signalist werden mit einem Secret signiert, das nur du und Signalist kennen. Dein Empfänger kann an der Signatur prüfen, dass eine Anfrage von Signalist stammt und unterwegs nicht verändert wurde. Neue Webhooks sind von Anfang an signiert. Ein Webhook, der vor dem 14. Oktober 2026 angelegt wurde, liefert weiter unsigniert aus, wie bisher, bis du die Signatur für ihn einschaltest (siehe „Dein Signing Secret“). Dieser Artikel erklärt, wie du an dein Secret kommst, wie du eine Zustellung prüfst und wie du das Secret rotierst. Wie du einen Webhook anlegst und welche Payload Formate es gibt, steht in API Schlüssel und Webhooks sicher verwenden.
Jede signierte Anfrage trägt diese Header:
X-Signalist-Signature: t=<Unix-Sekunden>,v1=<Hex>: die Signatur.X-Signalist-Webhook-Id: der Webhook, der sie gesendet hat.X-Signalist-Delivery-Id: eine ID pro Lead und Ereignis. Eine Wiederholung trägt dieselbe ID und ein neues t.Content-Type: application/jsonEin älterer Webhook, der noch nicht umgestellt wurde, sendet keinen der X-Signalist--Header.
Das Secret beginnt mit whsec_. Signalist zeigt es einmal an, im Dialog Webhook created: copy your signing secret direkt nach dem Anlegen des Webhooks. Kopiere es in deinen Empfänger. Der Dialog lässt sich nur mit I have copied the secret schließen.
Du hast das Secret verloren. Öffne Integrations → Webhooks, öffne das Zeilenmenü (More actions) und wähle Rotate secret. Bestätige mit Rotate. Ein neues Secret wird einmal angezeigt.
Dein Webhook ist älter als die Signatur. Webhooks, die vor der Einführung der Signatur angelegt wurden, zeigen in der Spalte Signing den Eintrag Secret not yet viewed. Ihre Zustellungen sind noch nicht signiert: Sie werden genau wie bisher gesendet, ohne die Signatur-Header, und bleiben so, bis du die Signatur einschaltest. Das geht auf drei Wegen:
Von da an wird jede Zustellung an diesen Webhook signiert, geht nur an eine öffentliche Adresse und folgt keiner Weiterleitung, wie bei einem neuen Webhook. Eine Rückkehr zur unsignierten Zustellung gibt es nicht. Leitet deine aktuelle URL auf eine andere Adresse weiter, ersetze sie durch die Adresse, auf die sie weiterleitet, bevor du die Signatur einschaltest.
t und jedes v1.whsec_) als Schlüssel über den Text <t>.<roher Body>, als Hex in Kleinbuchstaben.v1 (zum Beispiel crypto.timingSafeEqual in Node oder hmac.compare_digest in Python). Akzeptiere die Anfrage, wenn eines passt.t mehr als 5 Minuten von deiner Uhr abweicht. So verhinderst du Wiedereinspielung.X-Signalist-Delivery-Id und ignoriere eine Zustellung, die du schon verarbeitet hast. Eine Wiederholung trägt sie erneut.Antworte mit einem 2xx-Status, um eine Zustellung zu bestätigen.
Ein Beispiel in Node. Es akzeptiert eine echte Zustellung und lehnt einen veränderten Body, ein falsches Secret und einen Zeitstempel ab, der älter als 5 Minuten ist:
import crypto from "node:crypto";
function verify(header, rawBody, secret, now = Date.now() / 1000) {
const parts = header.split(",").map((p) => p.split("="));
const t = parts.find(([k]) => k === "t")?.[1];
const signatures = parts.filter(([k]) => k === "v1").map(([, v]) => v);
if (!t || Math.abs(now - Number(t)) > 300) return false;
const expected = crypto.createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
return signatures.some(
(s) => s.length === expected.length && crypto.timingSafeEqual(Buffer.from(s), Buffer.from(expected)),
);
}
Wähle im Zeilenmenü Rotate secret. Das alte Secret funktioniert noch 24 Stunden. In dieser Zeit trägt jede Anfrage zwei v1-Werte, zuerst den neuen, dann den alten. So kannst du deinen Empfänger in Ruhe umstellen: Akzeptiere die Anfrage, wenn einer der beiden Werte passt. Die Spalte Signing zeigt „Rotating: old secret valid until“ und das Datum.
Rotierst du innerhalb dieser 24 Stunden erneut, wird das Secret der ersten Rotation sofort ungültig.
Rotierst du das Secret eines älteren Webhooks, stellt das ihn auch auf signierte Zustellung um: Danach wird jede Zustellung an ihn signiert, geht nur an eine öffentliche Adresse und folgt keiner Weiterleitung.
Wähle im Zeilenmenü oder im Bearbeiten-Dialog Send test event. Signalist sendet ein signiertes Beispiel, markiert mit "event": "test", an deine URL. Es wird kein echter Lead gesendet, und in deine Listen wird nichts geschrieben. Der Dialog zeigt Delivered. oder Not delivered., was gesendet wurde und die Antwort deines Empfängers (die ersten 500 Zeichen). Ein Testereignis zählt nicht zum Zustellstatus des Webhooks in der Tabelle.
| Problem | Was zu tun ist |
|---|---|
| Die Signatur passt nie | Berechne sie über den rohen Body der Anfrage, Byte für Byte, nicht über neu serialisiertes JSON. Nimm das gesamte Secret inklusive whsec_ und den Text <t>.<roher Body>. |
| Die Signatur passte bis heute | Das Secret wurde vielleicht rotiert. In den 24 Stunden nach einer Rotation trägt eine Anfrage zwei v1-Werte. Akzeptiere sie, wenn einer passt, und stelle auf das neue Secret um. |
| Die Zustellungen eines älteren Webhooks tragen keine Signatur | Der Webhook zeigt Secret not yet viewed und liefert noch wie bisher aus. Wähle im Zeilenmenü Reveal secret once oder Rotate secret, oder ersetze seine URL. Von da an sind seine Zustellungen signiert. |
| Ich habe das Secret verloren | Wähle im Zeilenmenü Rotate secret. |
| Reveal secret once fehlt | Das Secret eines Webhooks, der mit Signatur angelegt wurde, wurde einmal beim Anlegen angezeigt. Wähle Rotate secret, um ein neues zu bekommen. |
| Send test event meldet Not delivered | Lies die Antwort deines Empfängers im Dialog. Wenn dein Empfänger die Signatur prüft, achte darauf, dass er das aktuelle Secret und den rohen Body verwendet. |
Verbinde dein CRM, damit die Leads, mit denen du in Signalist arbeitest, und die Gespräche mit ihnen in dem System landen, das dein Team bereits nutzt. Die Verbindung allein schreibt nichts: Du legst fest, was wann synchronisiert wird.
Zoho CRM und Pipedrive sind in jedem Workspace verfügbar. Dieser Artikel beschreibt die Schritte und Einstellungen, die für sie gelten. Wie Synchronisierung, Feldzuordnung und Owner allgemein funktionieren, steht in CRM Synchronisierung und Feldzuordnung planen.
Deine Kontakte und Unternehmen findest du an zwei Stellen in der Seitenleiste: