Lead-Webhook
Inhaber und Administratoren mit bestätigter E-Mail. Organisationseinstellungen → Integrationen → Lead-Webhook sendet jeden neuen Kontakt aus einem Kontaktformular an eine Adresse, etwa einen Zapier-, Make- oder n8n-Trigger oder Ihren eigenen Server. Die Kontakte bleiben zusätzlich unter Statistiken → Kontakte. Mit Auch Öffnungen und Abschlüsse persönlicher Links senden meldet er auch persönliche Links.
Die Adresse
Die Adresse muss HTTPS auf dem Standardport verwenden und aus dem Internet erreichbar sein. Adressen, die in ein privates Netzwerk auflösen, werden abgelehnt, und Weiterleitungen werden nicht verfolgt; geben Sie daher die endgültige Adresse ein. Wenn Sie Neue Kontakte senden deaktivieren, pausiert der Versand, ohne die Adresse zu entfernen; in der Zwischenzeit übermittelte Kontakte werden später nicht gesendet, und bereits wartende Wiederholungen laufen weiter, sobald Sie die Option wieder aktivieren.
Testereignis senden schickt einmal einen Beispielkontakt, ohne Wiederholungen, und zeigt das Ergebnis unter Letzte Zustellungen.
Was gesendet wird
Jeder neue Kontakt wird als JSON gesendet:
{
"id": "6c0a4f8e-…",
"event": "lead.created",
"createdAt": "2026-10-25T12:00:00Z",
"organization": { "id": "…", "name": "Northstar Studio" },
"demo": { "id": "…", "title": "Approve a release", "url": "https://demo-creator.com/demo/…" },
"lead": {
"id": "…",
"name": "Grace Hopper",
"email": "grace@example.com",
"screen": "start",
"language": "en"
}
}
screen ist start oder end, je nachdem, über welchen Bildschirm das Formular gesendet wurde, und language ist die vom Betrachter gewählte Demosprache oder leer. Testereignisse haben "event": "webhook.test", "demo": null und einen Beispielkontakt. Jede Anfrage enthält außerdem die Header X-Demo-Creator-Event, X-Demo-Creator-Delivery (derselbe Wert wie id) und X-Demo-Creator-Signature.
Ereignisse persönlicher Links, recipient.opened und recipient.completed, werden einmal pro Link gesendet und enthalten statt lead ein recipient-Objekt:
{
"event": "recipient.opened",
"recipient": {
"id": "…",
"name": "Grace Hopper",
"email": "grace@example.com",
"firstViewedAt": "2026-10-25T12:00:00Z",
"views": 1,
"completedAt": null
}
}
Die Signatur prüfen
X-Demo-Creator-Signature sieht so aus: t=1792931200,v1=5f2b…. Berechnen Sie mit dem Signaturgeheimnis als Schlüssel einen HMAC-SHA256 aus dem Zeitstempel, einem Punkt und dem unveränderten Anfragetext, und vergleichen Sie ihn in konstanter Zeit mit v1. Lehnen Sie Anfragen ab, deren Zeitstempel älter als fünf Minuten ist.
import { createHmac, timingSafeEqual } from 'node:crypto';
function verify(rawBody, header, secret) {
const { t, v1 } = Object.fromEntries(header.split(',').map((part) => part.split('=')));
const expected = createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
const fresh = Math.abs(Date.now() / 1000 - Number(t)) < 300;
return (
fresh &&
v1?.length === expected.length &&
timingSafeEqual(Buffer.from(v1), Buffer.from(expected))
);
}
Geheimnis erneuern signiert Anfragen sofort mit einem neuen Geheimnis; aktualisieren Sie Ihren Empfänger daher direkt danach.
Zustellung und Wiederholungen
Eine Antwort mit 2xx-Status gilt als zugestellt. Jeder andere Status, keine Antwort innerhalb von 10 Sekunden oder keine Verbindung wird nach 1 Minute, 5 Minuten, 30 Minuten, 2 Stunden und 6 Stunden wiederholt; danach gilt die Zustellung als fehlgeschlagen. Eine Wiederholung nach einer verlorenen Antwort kann einen Kontakt doppelt senden; verwenden Sie id, um Duplikate zu ignorieren.
Ein Kontakt, dessen Demo vor der Zustellung in den Papierkorb verschoben wird, wird nicht gesendet, und Webhook entfernen bricht noch wartende Zustellungen ab. Die 20 neuesten Zustellungen werden angezeigt; abgeschlossene Zustellungen werden nach 30 Tagen entfernt.