Zum Hauptinhalt springen

Webhook-Automatisierungen

Ab Basic

Automatisierungen gibt es ab Basic. Basic: 1 Automatisierung, Pro: 3, Ultra: 10. In Free zeigt die Zeile Upgrade, um Automatisierungen freizuschalten.

Ein Webhook ist eine Webadresse, die automatisch Daten empfängt. Mit Automatisierungen sendet TellDone jede neue Notiz mit ihren Aufgaben und Ereignissen an diese Adresse, sobald die Notiz fertig ist, und jeden neuen Bericht, sobald der Bericht fertig ist. So können Tools wie Zapier, Make oder n8n darauf reagieren. Jede Aufgabe und jedes Ereignis wird als eigene Zustellung gesendet.

Was gesendet werden soll​

Jede Automatisierung hat eigene Einstellungen unter Was gesendet werden soll. Wähle eines oder eine beliebige Kombination:

  • Notiz - die vollständig verarbeitete Notiz (Titel, Transkript, Zusammenfassung, Typ, Tags, Priorität, Sprache und Erstellungsdatum)
  • Notiz + Audio - fügt im Plan Ultra jeder Zustellung einer Notiz einen Download-Link zur Audiodatei hinzu, der 24 Stunden gilt. Lass Notiz eingeschaltet: Ohne sie wird keine Notiz gesendet
  • Aufgaben - eine Zustellung pro erkannter Aufgabe
  • Ereignisse - eine Zustellung pro erkanntem Kalenderereignis
  • Berichte - eine Zustellung pro erstelltem Tages-, Wochen-, Monats- oder Jahresbericht (die Berichtstypen, die dein Plan enthält). Platzhalter für ruhige Tage und kurze Berichte ruhiger Wochen werden nicht gesendet

Du kannst das jederzeit in den Einstellungen der Automatisierung ändern - Änderungen gelten nur für neue Zustellungen.

Wann gesendet werden soll​

Unter den Datenoptionen entscheiden vier getrennte Schalter, welche Änderungen eine Zustellung auslösen: Erstellt, Aktualisiert, Abgeschlossen und Gelöscht. Ein Auslöser funktioniert nur zusammen mit dem passenden Datenschalter darüber. Zum Beispiel sendet Abgeschlossen erledigte Aufgaben nur, wenn Aufgaben eingeschaltet ist.

Erstellt wird für Notizen gesendet, die TellDone aus einer Aufnahme oder einer Textnotiz erstellt, und für die darin gefundenen Aufgaben und Ereignisse. Aufgaben und Ereignisse, die du von Hand oder mit einem KI-Assistenten hinzufügst, und neue Elemente aus Per Sprache ergänzen werden nicht als Erstellt gesendet. Aktualisiert, Abgeschlossen und Gelöscht werden gesendet, wenn du ein Element in der App oder mit Per Sprache ergänzen änderst. Änderungen durch Smart Context, durch einen KI-Assistenten oder in Todoist, Notion oder Microsoft To Do lösen keine Zustellung aus.

Das Feld event jeder Zustellung benennt, was passiert ist, zum Beispiel task.created, task.completed oder calendar_event.updated.

Einen Webhook einrichten​

Einstellungen - Automatisierungen für Zapier, Make und n8n

  1. Öffne Einstellungen > Integrationen > Automatisierungen
  2. Tippe auf Neue Automatisierung

Neue Automatisierung - Webhook einrichten

  1. Gib einen Namen ein (zum Beispiel „Mein Zapier-Webhook“)
  2. Füge die Webhook-URL deines Automatisierungsdienstes ein
  3. Wähle, welche Daten gesendet werden (Notiz, Notiz + Audio in Ultra, Aufgaben, Ereignisse, Berichte) und welche Auslöser gelten (Erstellt, Aktualisiert, Abgeschlossen, Gelöscht)
  4. Optional: Füge einen Auth-Header hinzu - ein Token, das für gesicherte Endpunkte als Authorization-Header gesendet wird
  5. Tippe auf Speichern
  6. Kopiere den Signaturschlüssel - er wird nur beim ersten Erstellen der Automatisierung oder nach dem Rotieren vollständig angezeigt. Du brauchst ihn, um zu prüfen, dass Zustellungen wirklich von TellDone kommen (siehe Webhook-Signaturen prüfen)
  7. Tippe auf Test senden, um eine Beispielsendung an deinen Endpunkt zu schicken, ohne deine Daten zu ändern. Du siehst Erfolg mit HTTP-Code und Antwortzeit oder Fehler mit dem Grund. Testsendungen erscheinen nicht im Zustellprotokoll

Was gesendet wird​

Jede Zustellung ist ein JSON-Objekt mit drei Feldern: event (der Ereignistyp), timestamp und data (der eigentliche Inhalt). Testsendungen enthalten außerdem "test": true. So sieht jeder Ereignistyp aus.

Notizen (note.created)​

Enthält den von der KI erstellten Titel, das vollständige Transkript, die Zusammenfassung, den Notiztyp, Tags, Priorität, Sprache und das Erstellungsdatum.

{
"event": "note.created",
"timestamp": "2026-02-27T14:38:00.512345+00:00",
"data": {
"note_id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Meeting notes - Project Alpha",
"transcript": "Full transcript text...",
"summary": "Brief AI-generated summary...",
"type": "meeting",
"tags": ["work", "project-alpha"],
"priority": "high",
"language": "en",
"created_at": "2026-02-27T10:00:00.284117+00:00"
}
}

Im Plan Ultra können Zustellungen von Notizen auch einen Link zur Audioaufnahme enthalten (audio_url, audio_format, duration_seconds). Der Link läuft nach 24 Stunden ab. Schalte das mit der Option Notiz + Audio in der Automatisierung ein.

Aufgaben (task.created)​

Eine Zustellung pro Aufgabe. Eine Notiz mit 3 Aufgaben sendet 3 getrennte Zustellungen.

{
"event": "task.created",
"timestamp": "2026-02-27T14:38:01.204718+00:00",
"data": {
"note_id": "550e8400-...",
"note_title": "Meeting notes - Project Alpha",
"task_id": "660f9511-...",
"title": "Send proposal to client",
"description": "Include pricing for Q2",
"priority": "high",
"due_date": "2026-03-01",
"reminder_at": "2026-02-28T09:00:00+00:00",
"tags": ["work"],
"status": "todo",
"cancel_reason": null,
"cancelled_at": null,
"created_at": "2026-02-27T10:00:00.284117+00:00"
}
}

Ereignisse (calendar_event.created)​

Eine Zustellung pro Kalenderereignis.

{
"event": "calendar_event.created",
"timestamp": "2026-02-27T14:38:02.093361+00:00",
"data": {
"note_id": "550e8400-...",
"note_title": "Meeting notes",
"event_id": "770a0622-...",
"title": "Team standup",
"description": "Weekly sync",
"start": "2026-03-03T07:00:00+00:00",
"end": "2026-03-03T07:30:00+00:00",
"location": "Zoom",
"is_all_day": false,
"attendees": ["alice@example.com"],
"tags": ["work"],
"created_at": "2026-02-27T10:00:00.284117+00:00",
"timezone": "Europe/Istanbul",
"start_local": "2026-03-03T10:00:00+03:00",
"end_local": "2026-03-03T10:30:00+03:00",
"start_date": "2026-03-03",
"end_date": "2026-03-03"
}
}

start und end sind in UTC. start_local, end_local, start_date und end_date nutzen deine Zeitzone (timezone). Bei einem ganztägigen Ereignis ist end_date der letzte Tag des Ereignisses.

Berichte (report.created)​

Wird gesendet, wenn ein Tages-, Wochen-, Monats- oder Jahresbericht erstellt wird.

{
"event": "report.created",
"timestamp": "2026-02-28T00:05:00.731902+00:00",
"data": {
"report_id": "880b1733-...",
"report_type": "daily",
"period_start": "2026-02-27",
"period_end": "2026-02-27",
"content_md": "# Daily Report\n\n...",
"content_json": {
"productivity_score": 72,
"day_type": "planning",
"tasks_created": 5,
"tasks_completed": 3
},
"created_at": "2026-02-28T00:05:00.418253+00:00"
}
}

Sicherheit​

Jede Zustellung wird mit HMAC-SHA256 und dem Signaturschlüssel deiner Automatisierung signiert. Diese Header sind in jeder Zustellung enthalten:

  • X-LP-Signature - die HMAC-SHA256-Signatur (sha256=...)
  • X-LP-Timestamp - Unix-Zeitstempel, der für die Signatur verwendet wird
  • X-LP-Event - der Ereignistyp (zum Beispiel note.created, task.completed, calendar_event.updated, report.created)
  • X-LP-Delivery-Id - eindeutige Zustell-ID (nützlich zum Entfernen von Duplikaten)
  • User-Agent - immer TellDone-Webhooks/1.0

TellDone sendet nur dann einen Authorization-Header, wenn du in der Automatisierung einen Auth-Header hinzufügst. Du kannst zwei Formate nutzen: Header-Name: value sendet einen benannten Header, und ein einfacher Wert sendet Authorization: <value>. Dein Signaturschlüssel wird nie in einem Header gesendet.

Jede Automatisierung hat ihren eigenen Signaturschlüssel, das Rotieren eines Schlüssels wirkt sich also nicht auf deine anderen Webhooks aus. Der Schlüssel wird nur beim ersten Erstellen der Automatisierung oder nach dem Rotieren vollständig angezeigt. Zu allen anderen Zeiten siehst du nur eine Vorschau (whsec_...last4). Um ihn durch einen neuen zu ersetzen, tippe in den Einstellungen der Automatisierung auf Schlüssel rotieren - das erzeugt einen neuen HMAC-Schlüssel, ohne die URL oder den Auth-Header zu ändern. Der alte Schlüssel funktioniert sofort nicht mehr.

Es werden nur HTTPS-URLs mit Domainnamen akzeptiert. HTTP, IP-Adressen (öffentlich oder privat), URLs mit Benutzername oder Passwort und Domains, die auf Adressen in privaten Netzwerken zeigen, werden abgelehnt. TellDone prüft die Adresse bei jedem Senden erneut. Schlägt diese Prüfung fehl, zum Beispiel weil sich die Domain in diesem Moment nicht auflösen lässt, wird die Zustellung gestoppt und nicht wiederholt.

Webhook-Signaturen prüfen​

Jeder Webhook ist signiert, damit du bestätigen kannst, dass er wirklich von TellDone kam. Die Signatur wird so berechnet:

HMAC-SHA256(signing_secret, timestamp + "." + raw_body)

Das Ergebnis ist hexadezimal kodiert und im Signatur-Header mit sha256= eingeleitet.

Nutze den rohen Anfragetext

TellDone serialisiert JSON mit Leerzeichen nach den Trennzeichen (zum Beispiel {"event": "note.created"}). Wenn du den Text parst und neu serialisierst, passt die Signatur nicht mehr. Prüfe immer gegen die rohen Bytes des Anfragetexts.

Python​

import hmac
import hashlib

def verify_signature(raw_body: bytes, signature: str, timestamp: str, secret: str) -> bool:
payload = f"{timestamp}.".encode() + raw_body
expected = "sha256=" + hmac.new(
secret.encode(), payload, hashlib.sha256
).hexdigest()
return hmac.compare_digest(signature, expected)

# Flask example
@app.route("/webhook/telldone", methods=["POST"])
def telldone_webhook():
raw_body = request.get_data() # raw bytes, NOT request.json
signature = request.headers.get("X-LP-Signature", "")
timestamp = request.headers.get("X-LP-Timestamp", "")

if not verify_signature(raw_body, signature, timestamp, SIGNING_SECRET):
abort(403)

data = request.json
# process webhook...

Node.js​

const crypto = require("crypto");

function verifySignature(rawBody, signature, timestamp, secret) {
const payload = `${timestamp}.${rawBody}`;
const expected =
"sha256=" +
crypto.createHmac("sha256", secret).update(payload).digest("hex");
const a = Buffer.from(signature);
const b = Buffer.from(expected);
// timingSafeEqual throws if the lengths differ, e.g. when the header is missing
return a.length === b.length && crypto.timingSafeEqual(a, b);
}

// Express example (use express.raw to get the raw body)
app.post("/webhook/telldone", express.raw({ type: "application/json" }), (req, res) => {
const rawBody = req.body.toString();
const signature = req.headers["x-lp-signature"] || "";
const timestamp = req.headers["x-lp-timestamp"] || "";

if (!verifySignature(rawBody, signature, timestamp, SIGNING_SECRET)) {
return res.status(403).send("Invalid signature");
}

const data = JSON.parse(rawBody);
// process webhook...
});

Schutz vor Replay (optional)​

Um Replay-Angriffe zu verhindern, prüfe, dass der Zeitstempel aktuell ist:

import time

def verify_timestamp(timestamp: str, tolerance_seconds: int = 300) -> bool:
try:
return abs(time.time() - int(timestamp)) < tolerance_seconds
except (ValueError, TypeError):
return False

Häufige Fehler​

FehlerLösung
Geparster und neu serialisierter TextDen rohen Anfragetext verwenden
JSON.stringify() in JS (kompakt, ohne Leerzeichen)Den rohen Anfragetext verwenden
Das Zeitstempel-Präfix vergessenDas Payload-Format ist timestamp + "." + body
Strings direkt vergleichenhmac.compare_digest oder timingSafeEqual verwenden

Wiederholungsregeln​

Wenn dein Endpunkt fehlschlägt, wiederholt TellDone jede Zustellung nach diesem Zeitplan:

VersuchWartezeit
1. Wiederholung30 Sekunden
2. Wiederholung2 Minuten
3. Wiederholung15 Minuten
4. Wiederholung1 Stunde
5. Wiederholung4 Stunden

Schlägt auch die 5. Wiederholung fehl, wird die Zustellung als fehlgeschlagen markiert und nicht erneut versucht. In der App zeigt sie ein rotes Kreuz. Du kannst sie trotzdem selbst aus dem vollständigen Zustellprotokoll erneut senden: Öffne Alle Zustellungen (der Link erscheint, sobald eine Automatisierung mehr als 5 Zustellungen hat) und tippe bei der fehlgeschlagenen Zustellung auf Erneut versuchen. Die kurze Liste Letzte Zustellungen bietet keine Wiederholung an.

So geht TellDone mit verschiedenen Antworten um:

  • 2xx - erfolgreich zugestellt
  • 4xx (außer 429) - sofort als fehlgeschlagen markiert und nicht wiederholt (dein Endpunkt hat die Daten ausdrücklich abgelehnt)
  • 429 (Too Many Requests) - wird nach der Anzahl Sekunden in Retry-After wiederholt (60 Sekunden, wenn es keine gibt). Diese Wiederholungen sind nicht auf 5 begrenzt, zählen aber jeweils zu den 20 Fehlschlägen, die die Automatisierung ausschalten
  • 5xx oder Timeout - Wiederholung nach dem Zeitplan oben

Wenn Zustellungen wiederholt fehlschlagen​

Wenn Zustellungen immer wieder fehlschlagen, informiert dich TellDone und schaltet die Automatisierung schließlich aus.

Nach 3 fehlgeschlagenen Versuchen: Warnung im Posteingang​

Nach 3 fehlgeschlagenen Versuchen in Folge (Wiederholungen zählen mit) sendet TellDone eine Nachricht in deinen Posteingang mit dem Titel Deine Automatisierung „Name“ schlägt fehl, wobei in den Anführungszeichen der Name deiner Automatisierung steht. Du kannst sie dann unter Einstellungen > Integrationen > Automatisierungen öffnen, ihre Zustellungen prüfen und entscheiden, was du tust.

Nach 20 fehlgeschlagenen Versuchen: Automatisch ausgeschaltet​

Automatisch ausgeschaltet

Schlagen 20 Versuche in Folge für dieselbe Automatisierung fehl (Wiederholungen zählen mit), schaltet TellDone die Automatisierung aus, damit sie nicht weiter an eine Adresse sendet, die nicht funktioniert. Behebe das Problem in deinem Automatisierungstool und schalte dann ihren Schalter Aktiv unter Einstellungen > Integrationen > Automatisierungen wieder ein. Das Wiedereinschalten setzt den Fehlerzähler nicht zurück. Bis eine Zustellung gelingt, schaltet also schon ein einziger fehlgeschlagener Versuch sie wieder aus.

Jeder fehlgeschlagene Versuch zählt. Eine Zustellung, bei der alle 5 Wiederholungen scheitern, erhöht den Zähler also um 6. Eine Automatisierung kann sich deshalb nach etwa 4 fehlschlagenden Zustellungen selbst ausschalten. Der Zähler springt bei der nächsten erfolgreichen Zustellung auf null zurück.

Webhooks verwalten​

  • Aktiv - schalte diesen Schalter aus, um eine Automatisierung zu stoppen, ohne sie zu löschen, und jederzeit wieder ein. Solange er aus ist, wird nichts gesendet: Notizen und Berichte aus dieser Zeit werden später nicht nachgesendet, und Zustellungen, die auf eine Wiederholung warten, werden verworfen
  • Zustellungen - Letzte Zustellungen zeigt die letzten 5 mit Status, HTTP-Code und Antwortzeit. Gibt es mehr, öffnet Alle Zustellungen das Protokoll der letzten 30 Tage. Dort kannst du nach Alle, Zugestellt oder Fehler filtern und bei einer fehlgeschlagenen Zustellung auf Erneut versuchen tippen, um sie zu senden, ohne auf die nächste geplante Wiederholung zu warten
  • Test senden - sendet eine Beispielnotiz (note.created, mit "test": true im Text), egal welche Datentypen du gewählt hast, ohne deine Daten zu ändern. Verfügbar, sobald die Automatisierung gespeichert ist. Testsendungen zählen nicht zu deinem Monatslimit
  • Schlüssel rotieren - erzeugt einen neuen HMAC-Signaturschlüssel, ohne die URL oder den Auth-Header zu ändern
  • Bearbeiten - ändere die URL, den Auth-Header, die Datenoptionen (Notiz / Notiz + Audio / Aufgaben / Ereignisse / Berichte) oder die Auslöser (Erstellt / Aktualisiert / Abgeschlossen / Gelöscht). Änderungen gelten sofort
  • Automatisierung löschen - entfernt die Automatisierung und alle ihre Zustellprotokolle dauerhaft

Jede Zustellung zeigt ihren Status als Symbol:

SymbolBedeutung
Grünes HäkchenZugestellt
Gelbe UhrWartet oder wird gesendet
Rotes DreieckFehlgeschlagen, TellDone versucht es erneut
Rotes KreuzFehlgeschlagen, keine automatischen Wiederholungen mehr

Im vollständigen Protokoll kannst du bei Zustellungen mit rotem Dreieck oder rotem Kreuz auf Erneut versuchen tippen.

Zustelllimits​

Es gibt zwei Limits: ein Monatslimit, das von deinem Plan abhängt, und ein Stundenlimit von 100 Zustellungen in jedem kostenpflichtigen Plan, das vor plötzlichen Spitzen schützt.

PlanAutomatisierungenZustellungen pro MonatStundenlimit
Free00-
Basic1300100
Pro33.000100
Ultra1015.000100

So verhalten sich die Limits:

  • Monatslimit erreicht - die Zustellung wartet. Sie wird als fehlgeschlagen angezeigt („Monthly webhook limit exceeded“), und TellDone versucht es alle 5 Minuten erneut. Sie geht raus, nachdem dein Limit am 1. um 00:00 UTC zurückgesetzt wurde, außer sie ist bis dahin älter als 30 Tage. Zustellungen nach dem Zurücksetzen zählen zum neuen Monat.
  • Stundenlimit erreicht - die Zustellung wird zurückgestellt und nach etwa 5 Minuten wiederholt, damit bei einer kurzen Spitze keine Daten verloren gehen.

Nur erfolgreiche Zustellungen zählen zum Monatslimit. Das Stundenlimit zählt jeden Versuch, auch Wiederholungen. Testsendungen zählen zu keinem der beiden Limits.

Wenn du den Plan wechselst, bleiben deine Automatisierungen und ihre Einstellungen erhalten. In Free senden sie nicht mehr, und du kannst sie bis zum Upgrade nicht öffnen. In Basic senden Automatisierungen, die du schon hattest, weiter im Rahmen von 300 Zustellungen pro Monat, aber du kannst nicht mehr als eine hinzufügen oder einschalten.

Testereignisse herausfiltern​

Wenn du auf Test senden tippst, enthält die Payload "test": true auf oberster Ebene. In deinem Automatisierungstool kannst du dieses Feld prüfen und die Verarbeitung überspringen, wenn es vorhanden ist.

Anleitungen für Plattformen​

Schritt-für-Schritt-Anleitungen zur Einrichtung mit deinem Automatisierungstool:

  • Zapier - verbinde TellDone mit Tausenden von Apps über Zaps
  • Make - baue visuelle Automatisierungsszenarien (früher Integromat)
  • n8n - nutze TellDone-Webhooks in selbst gehosteten oder Cloud-Workflows
  • Eigene Endpunkte - jeder Dienst, der HTTPS-POST-Anfragen annimmt, funktioniert mit TellDone-Webhooks

Ideen​

  • Aufgaben über Zapier an eine Google-Tabelle senden
  • Slack-Nachrichten aus Notizen über Make erstellen
  • Ereignisse über n8n in einem eigenen CRM protokollieren
  • Alle Notizen in einem Cloud-Speicher sichern
  • Berichte an ein Team-Dashboard weiterleiten

Siehe auch​

  • Posteingang und Support - wenn ein Webhook wiederholt fehlschlägt, siehst du eine Nachricht in deinem Posteingang
  • Zapier - Zapier Schritt für Schritt einrichten
  • Make - Make Schritt für Schritt einrichten
  • n8n - n8n Schritt für Schritt einrichten
  • Todoist - eigene Aufgabensynchronisierung in beide Richtungen (keine Webhooks nötig)
  • Notion - eigene Notion-Integration
  • E-Mail-Weiterleitung - Notizdaten per E-Mail erhalten