--- title: Webhooks description: Erhalten Sie Benachrichtigungen in Echtzeit, wenn Ereignisse in Ihrem CRM auftreten. --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; Webhooks übermitteln Daten in Echtzeit an Ihre Systeme, wenn Ereignisse in Twenty auftreten — kein Polling erforderlich. Verwenden Sie sie, um externe Systeme synchron zu halten, Automatisierungen auszulösen oder Benachrichtigungen zu senden. ## 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: | Ereignis | Beispiel | | -------------------------- | ---------------------------------------------------------- | | **Datensatz erstellt** | `person.created`, `company.created`, `note.created` | | **Datensatz aktualisiert** | `person.updated`, `company.updated`, `opportunity.updated` | | **Datensatz gelöscht** | `person.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: ```json { "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" } ``` | Feld | Beschreibung | | ------------- | -------------------------------------------------------------------- | | `ereignis` | Was passiert ist (z. B. `person.created`) | | `daten` | Der vollständige Datensatz, der erstellt/aktualisiert/gelöscht wurde | | `zeitstempel` | Wann 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. ### Header | Kopfzeile | Beschreibung | | ---------------------------- | ----------------------- | | `X-Twenty-Webhook-Signature` | HMAC-SHA256-Signatur | | `X-Twenty-Webhook-Timestamp` | Zeitstempel 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) ```javascript 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 isValid = expectedSignature === req.headers["x-twenty-webhook-signature"]; ``` ## Webhooks vs Workflows | Methode | Richtung | Anwendungsfall | | ---------------------------- | -------- | -------------------------------------------------------------------------------- | | **Webhooks** | OUT | Externe Systeme automatisch über jede Datensatzänderung benachrichtigen | | **Workflow + HTTP-Anfrage** | OUT | Daten mit benutzerdefinierter Logik (Filter, Transformationen) nach außen senden | | **Workflow-Webhook-Trigger** | IN | Daten aus externen Systemen in Twenty empfangen | Für den Empfang externer Daten siehe [Webhook-Trigger einrichten](/l/de/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).