Zum Hauptinhalt springen
Twenty sendet einen HTTP POST an Ihre URL, wenn ein Datensatz erstellt, aktualisiert oder gelöscht wird. Alle Objekttypen sind abgedeckt, einschließlich benutzerdefinierter Objekte.

Webhook erstellen

  1. Gehen Sie zu Einstellungen → APIs & Webhooks → Webhooks
  2. Klicken Sie auf + Webhook erstellen
  3. Geben Sie Ihre Webhook-URL ein (muss öffentlich zugänglich sein)
  4. Klicken Sie auf Speichern
Der Webhook wird sofort aktiviert und beginnt, Benachrichtigungen zu senden.

Webhooks verwalten

Bearbeiten: Klicken Sie auf den Webhook → URL aktualisieren → Speichern Löschen: Klicken Sie auf den Webhook → Löschen → Bestätigen

Ereignisse

Twenty sendet Webhooks für diese Ereignistypen:
EreignisBeispiel
Datensatz erstelltperson.created, company.created, note.created
Datensatz aktualisiertperson.updated, company.updated, opportunity.updated
Datensatz gelöschtperson.deleted, company.deleted
Alle Ereignistypen werden an Ihre Webhook-URL gesendet. Eine Ereignisfilterung kann in zukünftigen Versionen hinzugefügt werden.

Payload-Format

Jeder Webhook sendet eine HTTP-POST-Anfrage mit einem JSON-Body:
{
  "event": "person.created",
  "data": {
    "id": "abc12345",
    "firstName": "Alice",
    "lastName": "Doe",
    "email": "alice@example.com",
    "createdAt": "2025-02-10T15:30:45Z",
    "createdBy": "user_123"
  },
  "timestamp": "2025-02-10T15:30:50Z"
}
FeldBeschreibung
eventWas passiert ist (z. B. person.created)
dataDer vollständige Datensatz, der erstellt/aktualisiert/gelöscht wurde
timestampWann das Ereignis auftrat (UTC)
Antworten Sie mit einem 2xx-HTTP-Status (200-299), um den Empfang zu bestätigen. Nicht-2xx-Antworten werden als Zustellfehler protokolliert.

Webhook-Validierung

Twenty signiert jede Webhook-Anfrage zu Sicherheitszwecken. Validieren Sie die Signaturen, um sicherzustellen, dass die Anfragen authentisch sind.
HeaderBeschreibung
X-Twenty-Webhook-SignatureHMAC-SHA256-Signatur
X-Twenty-Webhook-TimestampZeitstempel der Anfrage

Validierungsschritte

  1. Den Zeitstempel aus X-Twenty-Webhook-Timestamp abrufen
  2. Zeichenfolge erstellen: {timestamp}:{JSON payload}
  3. Den HMAC-SHA256-Hash mit Ihrem Webhook-Geheimnis berechnen
  4. Mit X-Twenty-Webhook-Signature vergleichen

Beispiel (Node.js)

const crypto = require("crypto");

const timestamp = req.headers["x-twenty-webhook-timestamp"];
const payload = JSON.stringify(req.body);
const secret = "your-webhook-secret";

const stringToSign = `${timestamp}:${payload}`;
const expectedSignature = crypto
  .createHmac("sha256", secret)
  .update(stringToSign)
  .digest("hex");

const receivedSignature = req.headers["x-twenty-webhook-signature"];
const isValid = crypto.timingSafeEqual(
  Buffer.from(expectedSignature, "hex"),
  Buffer.from(receivedSignature, "hex")
);

Webhooks vs Workflows

MethodeRichtungAnwendungsfall
WebhooksOUTExterne Systeme automatisch über jede Datensatzänderung benachrichtigen
Workflow + HTTP-AnfrageOUTDaten mit benutzerdefinierter Logik (Filter, Transformationen) nach außen senden
Workflow-Webhook-TriggerINDaten aus externen Systemen in Twenty empfangen
Für den Empfang externer Daten siehe Webhook-Trigger einrichten.