Zum Hauptinhalt springen

Sally AI Webhook-Integration: Die vollständige A-Z-Anleitung

Mit Webhooks kann Sally Daten sofort an andere Tools senden, sobald etwas passiert, zum Beispiel eine Meeting-Zusammenfassung direkt an deine Automatisierungsplattform, sobald sie fertig ist.

In dieser Anleitung erklären wir Webhooks von Grund auf und zeigen dir ein vollständiges Beispiel.

Schnellnavigation

  1. Was ist ein Webhook (einfach erklärt)?
  2. Voraussetzungen
  3. Webhook-URL in deinem Tool erstellen
  4. Webhook in Sally anlegen
  5. JSON-Body & Feldbeschreibung des Webhooks
  6. Verbindung prüfen und Logs einsehen
  7. Webhook manuell auslösen
  8. FAQ & Fehlerbehebung

1. Was ist ein Webhook und wie funktioniert er?

Ein Webhook ist im Grunde eine Internetadresse (URL), die dir ein anderes Tool oder System bereitstellt (z. B. Zapier, Make, n8n, Power Automate oder dein eigenes Backend).

Immer wenn in Sally etwas Bestimmtes passiert, z. B. wenn eine Zusammenfassung erstellt wird, sendet Sally automatisch eine Nachricht an diese URL.

Vergleich:

  • API (Application Programming Interface) = du fragst aktiv Daten bei einem anderen System an.
  • Webhook = das System schickt dir automatisch Daten, wenn etwas passiert.

Typische Anwendungsfälle für Webhooks:

  • Zusammenfassungen automatisch an eine Automatisierungsplattform senden.
  • Aufgaben automatisch in deinem Workflow anlegen (z. B. in Zapier, Make, n8n oder Power Automate).
  • Aktionen im eigenen Backend starten, sobald ein Meeting endet.

2. Welche Voraussetzungen brauchst du?

Damit du Sally mit einem anderen Tool per Webhook verbinden kannst, benötigst du Folgendes:

  • Zugang zum Ziel-Tool, in das Sally Daten senden soll
    Beispiel: Zapier, Make, n8n, Power Automate oder ein eigenes System.
Info

Ohne Benutzerkonto im Ziel-Tool kannst du keine Verbindung einrichten.

  • Berechtigung zum Erstellen oder Kopieren einer Webhook-URL
    Diese URL wird immer vom Ziel-Tool bereitgestellt.
    • In Tools wie Zapier, Make, n8n oder Power Automate findest du sie in den Workflow-Einstellungen.
    • In einem eigenen System liefert sie in der Regel ein Entwickler.
Info

Prüfe, ob deine Benutzerrolle, beispielsweise Admin oder Owner, die Erstellung von Webhooks erlaubt. Wenn nicht, frage deinen Administrator oder Entwickler.

  • Sally-Konto mit Integrationsrechten
    • Webhooks (Persönlich): Kannst du jederzeit für dein eigenes Konto anlegen.
    • Webhooks (Unternehmen): Gelten für das ganze Unternehmenskonto und werden von Administratoren verwaltet.
Wichtig

Die Webhook-URL kommt immer vom Ziel-Tool, nicht von Sally.
Ohne diese URL hat Sally keinen Ort, an den Daten gesendet werden können.


3. Wie erstellst du eine Webhook-URL in deinem Tool?

Die Schritte unterscheiden sich je nach Tool, aber das Prinzip ist gleich:

  1. Öffne dein Ziel-Tool. Für Zapier, Make, n8n und Power Automate gibt es je eine eigene Anleitung, die den ganzen Weg zeigt.
  2. Lege einen eingehenden Webhook an (oft auch „Listener URL“ oder „Endpoint“ genannt).
  3. Kopiere die generierte Webhook-URL.
Tipp

Falls du unsicher bist: Suche in der Dokumentation deines Tools nach „Webhook erstellen“ + Toolname.


4. Wie legst du einen Webhook in Sally an?

Sobald im Ziel-Tool eine Webhook-URL bereitliegt, beispielsweise in Zapier, Make, n8n, Power Automate oder einem eigenen Backend, trägst du sie in Sally ein. Ein Dialog fasst alles zusammen: wann Sally sendet, wohin, wie sich Sally dort anmeldet und welche Felder im Body landen.

Schritt für Schritt

  1. Öffne in Sally die Einstellungen unten links in der Seitenleiste.
Sally-Oberfläche mit hervorgehobenen Einstellungen unten links in der Seitenleiste
Einstellungen öffnen
  1. Wähle unter Konfiguration den Punkt Integrationen und dort den Reiter Webhooks. Klicke im passenden Bereich auf Webhook anlegen.
Reiter Webhooks in den Integrationen mit dem markierten Button Webhook anlegen
Im Reiter Webhooks einen Webhook anlegen
Persönlich oder fürs Unternehmen

Webhooks (Persönlich) feuern nach der Zusammenfassung deiner eigenen Meetings. Webhooks (Unternehmen) gelten für das ganze Unternehmenskonto und werden von Administratoren verwaltet. Der Bereich, in dem du den Webhook anlegst, entscheidet über den Geltungsbereich, nachträglich lässt er sich nicht umstellen.

  1. Fülle im Dialog Webhook anlegen den oberen Teil aus: Name, optional eine Beschreibung, den Trigger, unter Sprache den Schalter für alle Sprachen, unter Webhook-URL die Adresse aus dem Ziel-Tool und die Authentifizierung.
Dialog Webhook anlegen mit Name, Beschreibung, Trigger, Sprache, Webhook-URL und Authentifizierung
Name, Trigger und Adresse eintragen
  1. Scrolle im Dialog nach unten. Unter Custom Headers ergänzt du eigene Header. Unter Body-Inhalte legst du fest, was Sally mitsendet. Unter Optionen bestimmst du, wann der Webhook feuert. Klicke dann auf Anlegen.
Unterer Teil des Dialogs mit Custom Headers, Body-Inhalten, Beispiel-Body und Optionen
Body-Inhalte wählen und den Webhook anlegen

Die folgende Tabelle erklärt jedes Feld des Dialogs.

FeldBedeutung
NamePflicht. Anzeigename des Webhooks. Wähle etwas, das du später wiedererkennst, beispielsweise „CRM-Eintrag via Power Automate".
BeschreibungOptional. Notiz, wofür der Webhook ausgelöst wird. Hilft, wenn mehrere Webhooks nebeneinander laufen.
TriggerPflicht. Bestimmt, wann Sally sendet. Automatisch nach jeder Zusammenfassung führt den Webhook nach jeder Transkription aus, also nach einem Video- oder Audio-Upload und nach einem Meeting, an dem Sally teilgenommen hat.
Für alle Sprachen auslösenEingeschaltet feuert der Webhook unabhängig davon, in welcher Sprache die Zusammenfassung erstellt wurde. Ausgeschaltet feuert er nur für die Sprachen, die du auswählst.
Webhook-URLPflicht. Die Adresse, die dir das Ziel-Tool gegeben hat. Sie kommt immer von dort, nie von Sally.
AuthentifizierungLegt fest, wie sich Sally beim Zielsystem anmeldet.

Keine: es wird kein Authorization-Header gesendet. Für offene Listener wie einen Catch Hook in Zapier oder einen HTTP-Trigger in Power Automate genügt das.
Basic Auth: Sally sendet Benutzername und Passwort als Basic-Auth-Header, häufig bei internen Schnittstellen.
Roh (Raw): du gibst den kompletten Authorization-Header selbst ein, beispielsweise Bearer xyz123 oder ApiKey abc123.
Client-Zertifikat (PFX plus Passwort): für mTLS, nur nötig, wenn das Ziel ausdrücklich ein Client-Zertifikat verlangt.
Custom Headers (optional)Über Header hinzufügen ergänzt du eigene Header, beispielsweise x-api-key oder x-tenant-id. Damit sicherst du Anfragen ab oder steuerst Workflows im Zielsystem.
Body-InhalteBestimmt, welche Felder im POST-Body landen: Zusammenfassung, Sektionsinhalte, Einwände, Gesprächsziele und Transkript. Nur eingeschaltete Felder werden bei jedem Auslösen mitgeschickt. Je weniger du sendest, desto kleiner und schneller ist die Anfrage.
Vorschau und Beispiel-Body kopierenZeigt den Body mit den gewählten Schaltern und kopiert ihn in die Zwischenablage. Praktisch, um im Zielsystem ein Schema zu erzeugen oder die Feldnamen abzugleichen.
Bei Re-Summarization erneut auslösenAusgeschaltet feuert der Webhook nur beim ersten Mal. Eingeschaltet sendet Sally auch dann, wenn eine Zusammenfassung neu erzeugt wird.
Webhook aktivSchaltet den Webhook ein. Ausgeschaltet bleibt er stehen, ohne dass du ihn löschen musst.
  1. Der angelegte Webhook steht anschließend in der Liste, mit seiner Body-Version und der Zieladresse.
Liste der persönlichen Webhooks mit dem neu angelegten Eintrag
Der Webhook ist angelegt

In der Zeile jedes Webhooks findest du fünf Bedienelemente: den Schalter, mit dem du ihn stilllegst, ohne ihn zu löschen, das Dokument-Symbol für die Logs, das Play-Symbol für den Test, das Stift-Symbol zum Bearbeiten und den Papierkorb.

Ältere Webhooks erkennen

Hinter jedem Webhook steht seine Body-Version. Neue Webhooks legt Sally in der aktuellen Version an, ältere sind gekennzeichnet: Läuft aus heißt, die Version wird noch bedient, aber nicht mehr weiterentwickelt. Veraltet heißt, du solltest den Webhook neu anlegen. Die Version bestimmt den Aufbau des Bodys. Legst du einen alten Webhook neu an, prüfe im Zielsystem also, ob dort noch alle Felder ankommen.


5. JSON-Body & Feldbeschreibung des Webhooks

Den Body, den Sally senden wird, kannst du dir ansehen, bevor du ihn im Zielsystem brauchst. Öffne den Webhook dazu über das Stift-Symbol in seiner Zeile. Unter Body-Inhalte steht ein Beispiel, das genau die Schalter widerspiegelt, die du gesetzt hast. Über Vorschau klappst du es auf, über Beispiel-Body kopieren legst du es in die Zwischenablage.

Im Anlegen-Dialog ist das Beispiel noch leer, deshalb der Umweg über das Bearbeiten.

Dialog Webhook bearbeiten mit dem Bereich Body-Inhalte, der Vorschau des HTTP-Bodys und dem markierten Button Beispiel-Body kopieren
Den Beispiel-Body im Bearbeiten-Dialog kopieren

Diesen Body brauchst du im Zielsystem, beispielsweise um in Power Automate ein Schema zu erzeugen oder in n8n die Feldnamen abzugleichen. Welche Felder enthalten sind, hängt von den Schaltern unter Body-Inhalte ab. Die Grundfelder zum Termin und zur Aufzeichnung sind immer dabei.

Die Body-Version eines Webhooks steht in der Liste hinter seinem Namen und lässt sich nachträglich nicht umstellen. Wie du ältere Webhooks erkennst, steht weiter oben.

Weiter unten findest du:

  1. den kompletten JSON-Body zum Kopieren, je Version umschaltbar direkt über dem Codeblock
  2. eine Erklärung aller Felder in Tabellenform

5.1. JSON-Beispiel (kopierbar)

Was sich in V3.0 geändert hat

V3.0 fasst die Inhaltsblöcke zusammen. Wo V2.2 noch topics, decisions, tasks, customInsights und meetingTypeItems getrennt geschickt hat, steht jetzt jeder Abschnitt als Eintrag in der gemeinsamen Liste sections, mit sectionTypeCode als Typ und outputFormatCode als Ausgabeform.

Neu dazugekommen sind tags, appointmentId, appointmentUrl, recordingTitle, recordingCreatedOn und die Liste conversationGoals. Die Einwände tragen jetzt zusätzlich response, resolved und timeStamp.

Umbenannt wurden attendees[].invitationStatus zu invitationStatusCode, attendees[].attendenceStatus zu attendanceStatusCode und in den Transkriptteilen startTimeStamp und endTimeStamp zu startTime und endTime. Weggefallen ist transcriptParts[].emphases.

Welche Blöcke im Body landen, hängt an den Schaltern unter Body-Inhalte: Zusammenfassung liefert summary und combinedFullSummaryHTML, Sektionsinhalte liefert sections, Einwände liefert objections, Gesprächsziele liefert conversationGoals, Transkript liefert transcriptParts. Die Felder zum Termin, zur Aufzeichnung und zu den Beteiligten sind immer dabei.

{
"directoryId": "3f1c4a80-1a2b-4c3d-9e5f-000000000001",
"recordingSummaryId": "9a2b7c10-4d5e-4f6a-8b9c-000000000002",
"languageCode": "de-de",
"tags": [
{
"id": "a1b2c3d4-0000-0000-0000-000000000010",
"name": "Kunde",
"colorCode": "blue"
}
],
"appointmentId": "7c4e2f90-1234-4abc-9def-000000000003",
"appointmentUrl": "https://app.sally.io/calendar/7c4e2f90-1234-4abc-9def-000000000003",
"appointmentDate": "2026-08-19T13:00:00.000Z",
"appointmentSubject": "Weekly Dynamics",
"meetingUrl": "https://teams.microsoft.com/l/meetup-join/19%3ameeting_...",
"meetingPlatform": "MicrosoftTeams",
"recordingFileUrl": "https://media.sally.io/recordings/example.mp4",
"recordingTitle": "Weekly Dynamics",
"recordingCreatedOn": "2026-08-19T13:32:00.000Z",
"attendees": [
{
"name": "Max Mustermann",
"email": "max.mustermann@kunde.de",
"userId": null,
"invitationStatusCode": 20,
"attendanceStatusCode": 20
}
],
"users": [
{
"userId": "b2c3d4e5-0000-0000-0000-000000000020",
"firstName": "Erika",
"lastName": "Beispiel",
"email": "erika.beispiel@deinefirma.de"
}
],
"summary": "Kurze Zusammenfassung des Meetings in Klartext.",
"combinedFullSummaryHTML": "<h2>Zusammenfassung</h2><p>Vollständige Zusammenfassung als HTML.</p>",
"sections": [
{
"id": "c3d4e5f6-0000-0000-0000-000000000030",
"sectionTypeCode": 30,
"title": "Themen",
"outputFormatCode": 20,
"content": "Die im Meeting besprochenen Themen als Text."
}
],
"objections": [
{
"objection": "Der Preis ist zu hoch.",
"response": "ROI innerhalb von 6 Monaten aufgezeigt.",
"resolved": true,
"timeStamp": 512
}
],
"conversationGoals": [
{
"goal": "Budget geklärt?",
"achieved": true,
"response": "Budget von 20.000 EUR bestätigt."
}
],
"transcriptParts": [
{
"id": "d4e5f6a7-0000-0000-0000-000000000040",
"speakerName": "Erika Beispiel",
"startTime": 0,
"endTime": 4.2,
"sortOrder": 0,
"text": "Willkommen zum Weekly Dynamics Meeting."
}
]
}

5.2. Erklärung des JSON-Bodys (V3.0)

Die Tabelle beschreibt den Body in V3.0. Läuft bei dir noch ein Webhook in einer älteren Version, zeigt dir das Beispiel im passenden Reiter darüber, wie sein Body aufgebaut ist.

Zahlencodes im Webhook, Strings in der öffentlichen API

Der Webhook sendet in V3.0 die numerischen Codes aus der Datenbank, erkennbar am Zusatz Code im Feldnamen. Die öffentliche Sally-API gibt dieselben Sachverhalte bewusst als Zeichenketten ohne diesen Zusatz aus, also summary, tasks, html, accepted oder attended. Wer beides anbindet, verarbeitet also zwei Formate.

FeldnameTypBeschreibung
directoryIdstring (GUID)Eindeutige ID deiner Sally-Organisation. Dient zur Zuordnung, aus welchem Workspace der Webhook stammt.
recordingSummaryIdstring (GUID)Eindeutige ID der erstellten Zusammenfassung. Kann genutzt werden, um Daten später erneut abzurufen oder zu matchen.
languageCodestringSprache, in der die Zusammenfassung generiert wurde. Sally sendet Sprache und Region kleingeschrieben mit Bindestrich, beispielsweise en-us oder de-de.
tagsArrayTags, die an der Aufzeichnung hängen. Leeres Array, wenn keine gesetzt sind.
tags[].idstring (GUID)Eindeutige ID des Tags.
tags[].namestringAnzeigename des Tags, beispielsweise Kunde.
tags[].colorCodestringFarbe des Tags, wie in Sally gewählt.
appointmentIdstring (GUID) | nullID des Termins. null, wenn die Aufzeichnung zu keinem Kalendertermin gehört, beispielsweise bei einem Datei-Upload.
appointmentUrlstring (URL) | nullDirekter Link auf den Termin in Sally. null, wenn kein Termin zugeordnet ist.
appointmentDatestring (ISO-Datum)Datum und Uhrzeit des Meetings bzw. der Aufnahme.
appointmentSubjectstringTitel oder Betreff des Meetings (aus dem Kalender oder manuell vergeben).
meetingUrlstringLink zum Online-Meeting (Teams, Zoom, Webex etc.).
meetingPlatformstringPlattform, auf der das Meeting stattfand (webex, msteams, zoom, googlemeet).
recordingFileUrlstring (URL) | nullNeu in V2.2. Direkter CDN-Link zur Mediendatei der Aufnahme, im gleichen Format wie im Sally-Frontend (z. B. https://d39wo8p5549a9e.cloudfront.net/<filename>). Nur vorhanden, wenn die Aufnahme zum Download freigegeben ist, sonst null. Freigegeben ist eine Aufnahme nur, wenn alle folgenden Punkte zutreffen: Sie ist noch aktiv (nicht durch Retention gelöscht), sie ist nicht archiviert, die passende Aufnahmeart wird nicht durch die Download-Beschränkungen verhindert. Zusätzlich haben sowohl die Aufnahme selbst als auch alle verknüpften Termine die entsprechende Aufnahmeart (Video oder Audio) aktiv.
recordingTitlestringTitel der Aufzeichnung.
recordingCreatedOnstring (ISO-Datum)Zeitpunkt, zu dem die Aufzeichnung in Sally angelegt wurde.
attendeesArrayListe aller Teilnehmer des Meetings.
attendees[].namestringName des Teilnehmers.
attendees[].emailstringE-Mail-Adresse des Teilnehmers.
attendees[].userIdstring (GUID) | nullNeu in V2.2. Sally-Directory-User-ID, wenn die Email-Adresse des Teilnehmers zu einem Sally-Account mit aktivem Zugriff auf das auslösende Unternehmenskonto gehört. null für externe Gäste, unbekannte Emails oder User ohne Directory-Zugriff.
attendees[].invitationStatusCodenumberNumerischer Einladungsstatus: 10 = Abgelehnt, 20 = Angenommen, 30 = Mit Vorbehalt angenommen, 40 = Keine Antwort, 50 = Organisator, 100 = Unbekannt. Hieß in V2.2 noch invitationStatus.
attendees[].attendanceStatusCodenumberNumerischer Teilnahmestatus: 10 = Nicht teilgenommen, 20 = Teilgenommen, 100 = Unbekannt. Hieß in V2.2 noch attendenceStatus.
usersArrayNeu in V2.2. Liste der Sally-User, die am Termin beteiligt waren: der Uploader des Recordings sowie alle Technical Owner aller Termine derselben OnlineMeetingId. Dedupliziert nach userId, gefiltert auf aktive User mit aktivem (nicht geblocktem) Directory-Zugriff. Leer, wenn keiner der Sally-User mehr Zugriff hat (z. B. nach Lizenz-Entzug).
users[].userIdstring (GUID)Neu in V2.2. Sally-Directory-User-ID. Eindeutiger Identifier innerhalb des Unternehmenskontos.
users[].firstNamestringNeu in V2.2. Vorname des Users, aktueller Stand aus dem Sally-Profil. Kann leer sein, wenn nicht gepflegt.
users[].lastNamestringNeu in V2.2. Nachname des Users, aktueller Stand aus dem Sally-Profil. Kann leer sein, wenn nicht gepflegt.
users[].emailstringNeu in V2.2. Email-Adresse des Users, aktueller Stand aus dem Sally-Profil.
summarystring (Markdown)Kompakte Hauptzusammenfassung des Meetings.
combinedFullSummaryHTMLstring (HTML)Vollständige, formatierte Zusammenfassung in HTML, ideal für CRM, Ticketsysteme oder E-Mails.
sectionsArrayDie Abschnitte der Zusammenfassung. Ersetzt die früheren Listen topics, decisions, tasks, customInsights und meetingTypeItems. Nur enthalten, wenn Sektionsinhalte eingeschaltet ist.
sections[].idstring (GUID)Eindeutige ID des Abschnitts.
sections[].sectionTypeCodenumberTyp des Abschnitts: 10 = Zusammenfassung, 20 = Aufgaben, 30 = Themen, 40 = Entscheidungen, 50 = Benutzerdefinierte Liste, 60 = Freitext, 100 = Unbekannt. 10 bis 40 sind die Standardtypen, 50 und 60 sind eigene Abschnitte mit eigenem Prompt.
sections[].titlestringÜberschrift des Abschnitts, wie im Meetingtemplate vergeben.
sections[].outputFormatCodenumberAusgabeform des Inhalts: 10 = HTML, 20 = Markdown, 100 = Unbekannt.
sections[].contentstringDer erzeugte Inhalt des Abschnitts, in der Form, die outputFormatCode angibt.
objectionsArrayEinwände oder Bedenken, die während des Meetings erwähnt wurden.
objections[].objectionstring (Markdown)Formulierter Einwand.
objections[].responsestringWie im Gespräch auf den Einwand reagiert wurde.
objections[].resolvedbooleanOb der Einwand im Gespräch ausgeräumt wurde.
objections[].timeStampnumberZeitpunkt im Gespräch in Sekunden, an dem der Einwand fiel.
conversationGoalsArrayDie Gesprächsziele aus dem Meetingtemplate und ob sie erreicht wurden. Nur enthalten, wenn Gesprächsziele eingeschaltet ist.
conversationGoals[].goalstringDas Ziel, wie im Meetingtemplate formuliert.
conversationGoals[].achievedbooleanOb das Ziel im Gespräch erreicht wurde.
conversationGoals[].responsestringDie Stelle aus dem Gespräch, auf die Sally die Einschätzung stützt.
transcriptPartsArrayJede erkannte Passage des Transkripts, strukturiert nach Sprecher und Zeit.
transcriptParts[].idstring (GUID)Eindeutige ID des Transkriptabschnitts.
transcriptParts[].speakerNamestringName des Sprechers.
transcriptParts[].startTimenumberStartzeit der Passage in Sekunden. Hieß in V2.2 noch startTimeStamp.
transcriptParts[].endTimenumberEndzeit der Passage in Sekunden. Hieß in V2.2 noch endTimeStamp.
transcriptParts[].textstringGesprochener Inhalt.
transcriptParts[].sortOrdernumber (int)Laufende Nummer zur Reihenfolge der Passage im Transkript. Aufsteigend sortiert: kleinere Zahlen = früher, größere = später.

6. Verbindung prüfen und Logs einsehen

Ob die Verbindung steht, prüfst du am schnellsten mit dem eingebauten Test. Danach helfen die Logs: Sally protokolliert jede Auslösung, du siehst also, was an dein Zielsystem geschickt wurde und wie es geantwortet hat. Damit grenzt du einen Fehler schnell ein: steht kein Eintrag im Log, hat der Auslöser nicht gegriffen, dann liegt es an Sally. Steht ein Eintrag mit einem Fehlerstatus, liegt es am Zielsystem, also an der Adresse, den Berechtigungen oder dem erwarteten Format.

6.1. Verbindung testen

Mit dem Test schickt Sally eine echte Anfrage an deine Adresse, ohne dass du auf das nächste Meeting warten musst.

  1. Klicke in der Zeile des Webhooks auf das Play-Symbol. Es sitzt zwischen dem Dokument- und dem Stift-Symbol.
Liste der persönlichen Webhooks mit dem markierten Play-Symbol für den Test
Den Test über das Play-Symbol starten
  1. Wähle im Dialog Webhook testen unter Meeting für den Test eine vorhandene Aufzeichnung aus und klicke auf Test senden.
Dialog Webhook testen mit der Auswahl eines Meetings und dem markierten Button Test senden
Ein Meeting auswählen und den Test senden
Der Test sendet echte Daten

Sally schickt den echten Payload des gewählten Meetings an deine Adresse, keine Platzhalterdaten. Im Zielsystem landen also die Inhalte dieses Meetings. Nimm für den Test am besten eine Aufzeichnung, deren Daten dort nichts anrichten, oder eine Test-Adresse.

Der Test erscheint anschließend als eigener Eintrag in den Logs, mit HTTP-Status und allen Details. Damit prüfst du in einem Schritt, ob die Adresse stimmt, ob das Zielsystem erreichbar ist und ob die Anmeldung funktioniert.

6.2. Wo du die Logs findest

Gehe in den Reiter Webhooks und klicke bei deinem Webhook auf das Dokument-Symbol. In der Zeile sitzt es direkt rechts vom Schalter.

Liste der persönlichen Webhooks mit dem markierten Dokument-Symbol für die Logs
Die Logs eines Webhooks öffnen

Jeder Eintrag steht für einen Versandversuch. Die Liste zeigt vier Spalten: Status mit dem HTTP-Code des Zielsystems, Zeitpunkt des Versands, Nachricht bei Fehlern und die Request-URL, an die gesendet wurde. Über Logs durchsuchen filterst du die Liste.

Der Pfeil rechts öffnet den einzelnen Eintrag. Dort stehen unter Übersicht noch einmal Status, Zeitpunkt und Adresse, darunter der vollständige Request-Body und der Response-Body, beide mit einem Symbol zum Kopieren. Das ist die Ansicht, mit der du prüfst, ob wirklich die Felder ankommen, die dein Zielsystem erwartet. Sie zeigt auch, was es geantwortet hat.

Wie viele Einträge du siehst

Die Liste zeigt die letzten 100 Ausführungen, die neueste zuerst. Dazu gibt es ein Suchfeld. Webhook-Protokolle werden 90 Tage aufbewahrt und danach automatisch gelöscht, du musst nichts von Hand aufräumen.

6.3. Einen Eintrag erneut senden

Sally kann genau denselben Body noch einmal an dieselbe Adresse schicken. Dafür gibt es zwei Wege: das Symbol rechts in der Zeile der Liste, oder in der geöffneten Detailansicht oben rechts der Knopf Erneut ausführen. Nützlich, wenn du die Adresse geändert hast, die Authentifizierung angepasst hast, oder das Zielsystem beim ersten Versuch nicht erreichbar war.

Dabei wird kein neues Meeting angelegt und keine neue Zusammenfassung erzeugt, es geht wirklich nur derselbe Datensatz erneut hinaus. Der neue Versuch erscheint als eigener Eintrag in der Liste, du siehst also, ob es diesmal geklappt hat.

6.4. Was bedeuten die HTTP-Statuscodes?

Der Status kommt vom Zielsystem, nicht von Sally. Er sagt dir also, ob die Anfrage angekommen ist und wo du bei einem Fehler suchen musst.

StatusBedeutungWas du tun kannst
200 OK, 202 Accepted, 204 No ContentDas Zielsystem hat die Anfrage angenommen.Nichts. Passiert im Zielsystem trotzdem nichts, prüfe dort die Ausführungshistorie deines Workflows.
400 Bad RequestDas Zielsystem versteht den Body nicht.Vergleiche über Details den gesendeten Body mit dem, was das Ziel erwartet. Hast du die Body-Inhalte geändert, erzeuge ein dort hinterlegtes Schema neu.
401 Unauthorized, 403 ForbiddenDas Zielsystem weist die Anfrage ab.Prüfe die Authentifizierung und die Custom Headers im Webhook. Prüfe außerdem, ob der Zugang im Zielsystem noch gilt.
404 Not Found, 410 GoneUnter dieser Adresse antwortet nichts mehr.Häufigster Fall: der Workflow im Ziel-Tool ist gelöscht oder ausgeschaltet. Prüfe ihn und trage die Adresse bei Bedarf neu ein.
429 Too Many RequestsEs kommen zu viele Anfragen in kurzer Zeit, oder ein Limit deines Ziel-Tools ist erreicht.Sende weniger Inhalte, oder arbeite im Zielsystem mit einer Warteschlange.
500, 502, 503, 504Das Zielsystem war nicht erreichbar oder ist mit einem Fehler abgebrochen.Später erneut auslösen, siehe Webhook manuell auslösen. Im Zielsystem die Ausführungshistorie prüfen.

6.5. Typische Fehlerursachen und schnelle Lösungen

ProblemTypische AnzeichenSchnelle Lösung
Falsche AdresseAnfragen schlagen fehl oder erreichen den falschen EndpunktVergleiche die im Log angezeigte Adresse mit der erwarteten. Achte auf Tippfehler, fehlende Pfade und alte Test-Adressen.
Fehlende oder falsche Authentifizierung401 Unauthorized oder 403 ForbiddenPrüfe Schlüssel, Tokens und die nötigen Header im Zielsystem.
Body passt nicht zum ZielsystemFehler trotz erfolgreicher ZustellungPrüfe über Details die übertragenen Daten. Das Zielsystem erwartet möglicherweise andere Feldnamen oder eine andere Body-Version.
Zu viele Anfragen429 Too Many RequestsSende weniger Inhalte oder arbeite im Zielsystem mit Warteschlangen und Verzögerungen.
Zielsystem nicht verfügbar5xx-FehlerPrüfe Erreichbarkeit und Status des Zielsystems und löse den Webhook danach manuell aus.
Testmodus nicht aktivkeine Reaktion, beispielsweise in n8nStelle sicher, dass der Workflow im Zielsystem zuhört, wenn du eine Test-Adresse verwendest.
Webhook ausgeschaltetgar kein LogeintragPrüfe den Schalter in der Webhook-Zeile und den Schalter Webhook aktiv im Dialog.

7. Wie löst du einen Webhook manuell aus?

Neben der automatischen Ausführung kannst du einen Webhook für eine einzelne Aufzeichnung selbst auslösen. Diesen Weg nimmst du, wenn du in einer Aufzeichnung stehst und genau deren Daten noch einmal übergeben willst. Willst du nur prüfen, ob die Verbindung überhaupt steht, ist der Test der kürzere Weg. Einen bereits gesendeten Datensatz schickst du am besten aus dem Log erneut.

  1. Öffne die Aufzeichnung, deren Daten du senden willst.
  2. Klicke oben rechts auf Integrationen und wähle unter Webhooks den Punkt Webhook manuell ausführen.
Aufzeichnung in Sally mit geöffnetem Menü Integrationen und dem markierten Punkt Webhook manuell ausführen
Einen Webhook von der Aufzeichnung aus auslösen

Sally sendet daraufhin denselben Body an dasselbe Ziel wie bei der automatischen Ausführung. Dabei gilt:

  • Es wird kein neues Meeting erstellt und keine neue Zusammenfassung erzeugt.
  • Es wird kein automatisches Ereignis abgewartet.
  • Der Versand erscheint als eigener Eintrag in den Logs, mit Status, Zeitpunkt, Adresse und dem vollständigen Request-Body.

So kannst du gezielt Änderungen im Zielsystem testen, eine fehlgeschlagene Übertragung nachholen oder Daten erneut übergeben, ohne das Meeting zu wiederholen.


8. FAQ & Fehlerbehebung

Mein Webhook sendet nichts. Was kann ich tun?

  1. Prüfe, ob das auslösende Ereignis (z. B. Zusammenfassung erstellt) tatsächlich eingetreten ist.
  2. Stelle sicher, dass der Schalter in der Webhook-Zeile eingeschaltet ist.
  3. Öffne über das Dokument-Symbol die Logs und prüfe, ob ein Eintrag vorhanden ist. Falls ja, gibt der HTTP-Status Aufschluss über das Problem.
  4. Falls kein Logeintrag vorhanden ist, wurde der Webhook nicht ausgelöst. Prüfe, ob er im richtigen Bereich liegt, also unter Webhooks (Persönlich) oder unter Webhooks (Unternehmen).

In welcher Sprache kommen die Inhalte an?

Die Sprache der Inhalte richtet sich nach der Zusammenfassung, nicht nach dem Webhook. Im Dialog steuerst du unter Sprache nur, ob der Webhook für jede Sprache feuert: eingeschaltet sendet Sally unabhängig von der Sprache der Zusammenfassung, ausgeschaltet nur für die Sprachen, die du auswählst.

Welche Sprache es war, steht im Body im Feld languageCode.

Wie lange werden Webhook-Protokolle gespeichert?

Webhook-Protokolle werden aus Sicherheits- und Nachverfolgbarkeitsgründen 90 Tage lang aufbewahrt und anschließend automatisch gelöscht. Eine manuelle Löschung ist nicht erforderlich.

Kann ich mehrere Webhooks gleichzeitig verwenden?

Ja. Du kannst beliebig viele Webhooks anlegen, sowohl im persönlichen als auch im unternehmensweiten Bereich. Jeder Webhook kann eine eigene URL, eigene Authentifizierung und einen individuell konfigurierten Body haben. So kannst du z. B. gleichzeitig Daten an Zapier, Make und ein eigenes Backend senden.

Was ist der Unterschied zwischen einem persönlichen und einem unternehmensweiten Webhook?

  • Persönlicher Webhook: Wird nur für Meetings des Benutzers ausgelöst, der den Webhook erstellt hat.
  • Unternehmensweiter Webhook: Wird für alle Meetings im gesamten Unternehmenskonto ausgelöst, unabhängig davon, wer das Meeting durchgeführt hat.

Der Geltungsbereich wird beim Anlegen festgelegt, je nachdem ob du den Webhook unter Webhooks (Persönlich) oder unter Webhooks (Unternehmen) anlegst. Nachträglich lässt er sich nicht umstellen.

Was passiert, wenn mein Zielsystem nicht erreichbar ist?

Falls das Zielsystem beim Versand nicht erreichbar ist, beispielsweise bei einem 5xx-Fehler oder einem Timeout, hält Sally den fehlgeschlagenen Versuch im Log fest. Sobald das Ziel wieder erreichbar ist, löst du den Webhook von der Aufzeichnung aus manuell aus.

Kann ich den Inhalt des Webhook-Bodys anpassen?

Ja. Im Dialog findest du den Bereich Body-Inhalte mit Schaltern für Zusammenfassung, Sektionsinhalte, Einwände, Gesprächsziele und Transkript. Nur eingeschaltete Felder werden mitgeschickt. Über Vorschau siehst du sofort, wie der Body mit den gewählten Schaltern aussieht. Beispiel-Body kopieren legt ihn in die Zwischenablage.

Kann ich einen Webhook nachträglich bearbeiten?

Ja. Öffne den Reiter Webhooks und klicke in der Zeile des Webhooks auf das Stift-Symbol. Dort passt du Adresse, Authentifizierung, Header und die Body-Inhalte an. Die Änderungen gelten ab der nächsten Ausführung. Die Body-Version eines bestehenden Webhooks lässt sich nicht umstellen, dafür legst du ihn neu an.

Wie teste ich meinen Webhook, ohne ein Meeting durchzuführen?

Dafür gibt es zwei Wege, beide ohne neues Meeting. Über das Play-Symbol in der Webhook-Zeile startest du den Test und wählst dabei die Aufzeichnung aus, deren Payload gesendet wird. Alternativ öffnest du eine Aufzeichnung und löst den Webhook von dort aus. In beiden Fällen sendet Sally denselben Body wie bei der automatischen Ausführung. Der Versand landet als eigener Eintrag in den Logs.

Welche HTTP-Methode verwendet Sally für Webhooks?

Sally sendet Webhook-Daten immer als HTTP POST-Anfrage mit einem JSON-Body (Content-Type: application/json).

Kann ich einen Webhook vorübergehend deaktivieren, ohne ihn zu löschen?

Ja. Im Reiter Webhooks sitzt in jeder Zeile ein Schalter. Ausgeschaltet sendet Sally keine Daten an die Adresse, die Konfiguration bleibt aber erhalten. Denselben Schalter findest du im Dialog unter Optionen als Webhook aktiv.

Werden Webhooks auch bei hochgeladenen Aufnahmen ausgelöst?

Ja. Webhooks werden immer dann ausgelöst, wenn das konfigurierte Ereignis eintritt, unabhängig davon, ob das Meeting live aufgezeichnet oder als Datei hochgeladen wurde. Sobald Sally die Zusammenfassung erstellt hat, wird der Webhook gesendet.

Mein Zielsystem empfängt die Daten, verarbeitet sie aber nicht korrekt. Woran liegt das?

Prüfe folgende Punkte:

  1. Öffne den Logeintrag und vergleiche über Details den gesendeten Body mit dem erwarteten Format deines Zielsystems.
  2. Prüfe die Body-Version, die in der Liste hinter dem Webhook steht. Ist sie als Veraltet oder Läuft aus markiert, lege den Webhook neu an.
  3. Achte darauf, dass Feldnamen und Datentypen mit der Erwartung des Zielsystems übereinstimmen. Einige Felder werden als Markdown oder HTML gesendet (siehe Feldbeschreibung).
  4. Falls dein Tool ein anderes Datumsformat erwartet, musst du das ISO-8601-Format (2025-03-15T00:00:00.000Z) im Zielsystem entsprechend umwandeln.