Przejdź do głównej zawartości

Automatyzacje webhook

Od planu Basic

Automatyzacje wymagają planu Basic lub wyższego. Basic: 1 automatyzacja, Pro: 3, Ultra: 10. W planie Free wiersz pokazuje Przejdź na Pro, aby odblokować automatyzacje.

Webhook to adres internetowy, który automatycznie odbiera dane. Dzięki Automatyzacjom TellDone wysyła na ten adres każdą nową notatkę razem z jej zadaniami i wydarzeniami, gdy tylko notatka jest gotowa, oraz każdy nowy raport, gdy jest gotowy, aby narzędzia takie jak Zapier, Make czy n8n mogły na nie zareagować. Każde zadanie i wydarzenie jest wysyłane jako osobna wysyłka.

Wybór tego, co wysyłać​

Każda automatyzacja ma własne ustawienia w sekcji Co wysyłać. Wybierz jedno lub dowolną kombinację:

  • Notatka - pełna przetworzona notatka (tytuł, transkrypcja, podsumowanie, typ, tagi, priorytet, język i data utworzenia)
  • Notatka + audio - w planie Ultra dodaje do każdej wysyłki notatki 24-godzinny link do pobrania pliku audio. Zostaw włączoną Notatkę: bez niej żadna notatka nie jest wysyłana
  • Zadania - jedna wysyłka na każde wyciągnięte zadanie
  • Wydarzenia - jedna wysyłka na każde wyciągnięte wydarzenie z kalendarza
  • Raporty - jedna wysyłka na każdy wygenerowany raport dzienny, tygodniowy, miesięczny lub roczny (typy raportów, które obejmuje twój plan). Raporty zastępcze za spokojne dni i krótkie raporty za spokojne tygodnie nie są wysyłane

Możesz to zmienić w dowolnej chwili w ustawieniach automatyzacji - zmiany dotyczą tylko nowych wysyłek.

Wybór momentu wysyłki​

Pod wyborem danych cztery osobne przełączniki decydują, które zmiany uruchamiają wysyłkę: Utworzono, Zaktualizowano, Ukończone i Usunięte. Wyzwalacz działa tylko razem z odpowiednim przełącznikiem danych powyżej. Na przykład Ukończone wysyła ukończone zadania tylko wtedy, gdy włączone są Zadania.

Utworzono jest wysyłane dla notatek, które TellDone tworzy z nagrania lub notatki tekstowej, oraz dla znalezionych w nich zadań i wydarzeń. Zadania i wydarzenia dodane ręcznie lub przez asystenta AI oraz nowe elementy z Dodaj głosem nie są wysyłane jako Utworzono. Zaktualizowano, Ukończone i Usunięte są wysyłane, gdy zmieniasz element w aplikacji albo przez Dodaj głosem. Zmiany wprowadzone przez Smart Context, przez asystenta AI lub w Todoist, Notion albo Microsoft To Do nie powodują wysyłki.

Pole event każdej wysyłki mówi, co się stało, na przykład task.created, task.completed lub calendar_event.updated.

Konfiguracja webhooka​

Ustawienia automatyzacji dla Zapier, Make i n8n

  1. Przejdź do Ustawienia > Integracje > Automatyzacje
  2. Dotknij Nowa automatyzacja

Konfiguracja nowego webhooka

  1. Wpisz nazwę (na przykład „Mój webhook Zapier”)
  2. Wklej adres URL webhooka z usługi automatyzacji
  3. Wybierz, jakie dane wysyłać (Notatka, Notatka + audio w planie Ultra, Zadania, Wydarzenia, Raporty) i jakich wyzwalaczy użyć (Utworzono, Zaktualizowano, Ukończone, Usunięte)
  4. Opcjonalnie dodaj nagłówek uwierzytelniający - token wysyłany jako nagłówek Authorization dla zabezpieczonych punktów końcowych
  5. Dotknij Zapisz
  6. Skopiuj sekret podpisu - w całości jest pokazywany tylko przy pierwszym utworzeniu automatyzacji lub po jego zmianie. Potrzebujesz go, aby sprawdzać, że wysyłki naprawdę pochodzą z TellDone (zobacz Weryfikacja podpisów webhooków)
  7. Dotknij Wyślij testowo, aby wysłać przykładowy ładunek na swój punkt końcowy bez zmieniania twoich danych. Zobaczysz Sukces z kodem HTTP i czasem odpowiedzi albo Błąd z przyczyną. Wysyłki testowe nie pojawiają się w logu wysyłek

Co jest wysyłane​

Każda wysyłka to obiekt JSON z trzema polami: event (typ zdarzenia), timestamp i data (właściwa treść). Wysyłki testowe zawierają też "test": true. Oto jak wygląda każdy typ zdarzenia.

Notatki (note.created)​

Zawiera wygenerowany przez AI tytuł, pełną transkrypcję, podsumowanie, typ notatki, tagi, priorytet, język i datę utworzenia.

{
"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"
}
}

W planie Ultra wysyłki notatek mogą też zawierać link do nagrania audio (audio_url, audio_format, duration_seconds). Link wygasa po 24 godzinach. Włączysz to opcją Notatka + audio w automatyzacji.

Zadania (task.created)​

Jedna wysyłka na zadanie. Notatka z 3 zadaniami wysyła 3 osobne wysyłki.

{
"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"
}
}

Wydarzenia (calendar_event.created)​

Jedna wysyłka na wydarzenie z kalendarza.

{
"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 i end są w UTC. start_local, end_local, start_date i end_date używają twojej strefy czasowej (timezone). Dla wydarzenia całodniowego end_date to ostatni dzień wydarzenia.

Raporty (report.created)​

Wysyłane, gdy powstaje raport dzienny, tygodniowy, miesięczny lub roczny.

{
"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"
}
}

Bezpieczeństwo​

Każda wysyłka jest podpisana algorytmem HMAC-SHA256 za pomocą sekretu podpisu twojej automatyzacji. Z każdą wysyłką idą te nagłówki:

  • X-LP-Signature - podpis HMAC-SHA256 (sha256=...)
  • X-LP-Timestamp - znacznik czasu Unix użyty do podpisu
  • X-LP-Event - typ zdarzenia (na przykład note.created, task.completed, calendar_event.updated, report.created)
  • X-LP-Delivery-Id - unikalny identyfikator wysyłki (przydatny do usuwania duplikatów)
  • User-Agent - zawsze TellDone-Webhooks/1.0

TellDone wysyła nagłówek Authorization tylko wtedy, gdy dodasz nagłówek uwierzytelniający w automatyzacji. Możesz użyć dwóch formatów: Header-Name: value wysyła nagłówek o podanej nazwie, a sama wartość wysyła Authorization: <value>. Twój sekret podpisu nigdy nie jest wysyłany w nagłówku.

Każda automatyzacja ma własny sekret podpisu, więc zmiana jednego nie wpływa na żadne inne twoje webhooki. Sekret jest pokazywany w całości tylko przy pierwszym utworzeniu automatyzacji lub po jego zmianie. Poza tym widoczny jest tylko podgląd (whsec_...last4). Aby zamienić go na nowy, dotknij Zmień sekret w ustawieniach automatyzacji - to generuje nowy klucz HMAC bez zmiany adresu URL i nagłówka uwierzytelniającego. Stary sekret przestaje działać natychmiast.

Akceptowane są tylko adresy URL HTTPS z nazwą domeny. HTTP, adresy IP (publiczne i prywatne), adresy URL z nazwą użytkownika lub hasłem oraz domeny wskazujące na adresy sieci prywatnych są odrzucane. TellDone sprawdza adres ponownie przy każdej wysyłce. Jeśli to sprawdzenie się nie powiedzie, na przykład dlatego, że domena w tej chwili się nie rozwiązuje, wysyłka jest zatrzymywana i nie jest ponawiana.

Weryfikacja podpisów webhooków​

Każdy webhook jest podpisany, aby można było potwierdzić, że naprawdę pochodzi z TellDone. Podpis jest liczony tak:

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

Wynik jest zakodowany szesnastkowo i poprzedzony sha256= w nagłówku podpisu.

Użyj surowego ciała żądania

TellDone serializuje JSON ze spacjami po separatorach (na przykład {"event": "note.created"}). Jeśli sparsujesz ciało i zserializujesz je ponownie, podpis się nie zgodzi. Zawsze weryfikuj względem surowych bajtów ciała żądania.

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...
});

Ochrona przed powtórzeniem (opcjonalnie)​

Aby zapobiec atakom polegającym na powtórzeniu żądania, sprawdź, czy znacznik czasu jest świeży:

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

Częste błędy​

BłądRozwiązanie
Użycie sparsowanego i ponownie zserializowanego ciałaUżyj surowego ciała żądania
JSON.stringify() w JS (zwarty, bez spacji)Użyj surowego ciała żądania
Pominięcie przedrostka ze znacznikiem czasuFormat ładunku to timestamp + "." + body
Bezpośrednie porównywanie ciągówUżyj hmac.compare_digest lub timingSafeEqual

Zasady ponawiania​

Jeśli twój punkt końcowy zawiedzie, TellDone ponawia każdą wysyłkę według tego harmonogramu:

PróbaOpóźnienie
1. ponowienie30 sekund
2. ponowienie2 minuty
3. ponowienie15 minut
4. ponowienie1 godzina
5. ponowienie4 godziny

Jeśli 5. ponowienie też się nie powiedzie, wysyłka jest oznaczana jako nieudana i nie jest już ponawiana. W aplikacji pokazuje czerwony krzyżyk. Nadal możesz wysłać ją ponownie samodzielnie z pełnego logu wysyłek: otwórz Wszystkie wysyłki (link pojawia się, gdy automatyzacja ma więcej niż 5 wysyłek) i dotknij Spróbuj ponownie przy nieudanej wysyłce. Krótka lista Ostatnie wysyłki nie oferuje ponawiania.

Jak TellDone traktuje różne odpowiedzi:

  • 2xx - dostarczono pomyślnie
  • 4xx (poza 429) - od razu oznaczane jako nieudane i niepowtarzane (twój punkt końcowy wyraźnie odrzucił dane)
  • 429 (Too Many Requests) - ponawiane po liczbie sekund podanej w Retry-After (60 sekund, jeśli jej nie ma). Te ponowienia nie są ograniczone do 5, ale każde wlicza się do 20 niepowodzeń, które wyłączają automatyzację
  • 5xx lub przekroczenie czasu - ponawiane według powyższego harmonogramu

Gdy wysyłki wielokrotnie zawodzą​

Jeśli wysyłki ciągle zawodzą, TellDone daje ci znać, a w końcu wyłącza automatyzację.

Po 3 nieudanych próbach: ostrzeżenie w Skrzynce​

Po 3 nieudanych próbach z rzędu (ponowienia się liczą) TellDone wysyła do twojej Skrzynki wiadomość zatytułowaną Twoja automatyzacja „Nazwa” nie działa, z nazwą twojej automatyzacji w cudzysłowie. Możesz wtedy otworzyć ją w Ustawienia > Integracje > Automatyzacje, sprawdzić jej wysyłki i zdecydować, co dalej.

Po 20 nieudanych próbach: automatyczne wyłączenie​

Automatyczne wyłączenie

Jeśli 20 prób z rzędu zawiedzie dla tej samej automatyzacji (ponowienia się liczą), TellDone wyłącza ją, aby nie wysyłała na adres, który nie działa. Napraw problem w swoim narzędziu do automatyzacji, a potem włącz z powrotem przełącznik Aktywna w Ustawienia > Integracje > Automatyzacje. Ponowne włączenie nie zeruje licznika niepowodzeń, więc dopóki jedna wysyłka się nie powiedzie, pojedyncza nieudana próba znów ją wyłączy.

Każda nieudana próba się liczy, więc jedna wysyłka, która zawiedzie we wszystkich 5 ponowieniach, dodaje 6 do licznika. Automatyzacja może więc wyłączyć się sama po około 4 nieudanych wysyłkach. Licznik zeruje się przy następnej udanej wysyłce.

Zarządzanie webhookami​

  • Aktywna - wyłącz ten przełącznik, aby zatrzymać automatyzację bez usuwania jej, i włącz z powrotem w dowolnej chwili. Gdy jest wyłączona, nic nie jest wysyłane: notatki i raporty z tego czasu nie zostaną wysłane później, a wysyłki czekające na ponowienie są porzucane
  • Wysyłki - Ostatnie wysyłki pokazują ostatnie 5 ze statusem, kodem HTTP i czasem odpowiedzi. Gdy jest ich więcej, Wszystkie wysyłki otwierają log z ostatnich 30 dni, w którym możesz filtrować według Wszystkie, Dostarczone lub Błędy i dotknąć Spróbuj ponownie przy nieudanej wysyłce, aby wysłać ją ponownie bez czekania na kolejne zaplanowane ponowienie
  • Wyślij testowo - wysyła przykładową notatkę (note.created, z "test": true w ciele), niezależnie od wybranych typów danych, bez zmieniania twoich danych. Dostępne po zapisaniu automatyzacji. Wysyłki testowe nie wliczają się do miesięcznego limitu
  • Zmień sekret - wygeneruj nowy sekret podpisu HMAC bez zmiany adresu URL ani nagłówka uwierzytelniającego
  • Edytuj - zmień adres URL, nagłówek uwierzytelniający, wybór danych (Notatka / Notatka + audio / Zadania / Wydarzenia / Raporty) lub wyzwalacze (Utworzono / Zaktualizowano / Ukończone / Usunięte). Zmiany działają od razu
  • Usuń automatyzację - trwale usuwa automatyzację i wszystkie jej logi wysyłek

Status każdej wysyłki jest pokazany jako ikona:

IkonaZnaczenie
Zielony ptaszekDostarczono
Żółty zegarOczekuje lub jest wysyłana
Czerwony trójkątNieudana, TellDone ponowi próbę
Czerwony krzyżykNieudana, bez kolejnych automatycznych ponowień

W pełnym logu możesz dotknąć Spróbuj ponownie przy wysyłkach z czerwonym trójkątem lub czerwonym krzyżykiem.

Limity wysyłek​

Obowiązują dwa limity: miesięczny, zależny od planu, oraz godzinny limit 100 wysyłek w każdym płatnym planie, który chroni przed nagłymi skokami.

PlanAutomatyzacjeWysyłki miesięcznieLimit godzinny
Free00-
Basic1300100
Pro33 000100
Ultra1015 000100

Jak działają limity:

  • Osiągnięty limit miesięczny - wysyłka czeka. Jest pokazywana jako nieudana („Monthly webhook limit exceeded”), a TellDone próbuje ponownie co 5 minut. Wychodzi po zresetowaniu limitu o 00:00 UTC pierwszego dnia miesiąca, chyba że do tego czasu ma ponad 30 dni. Wysyłki wysłane po resecie liczą się do nowego miesiąca.
  • Osiągnięty limit godzinny - wysyłka jest odroczona i ponawiana po około 5 minutach, więc krótki natłok nie powoduje utraty danych.

Do limitu miesięcznego liczą się tylko udane wysyłki. Limit godzinny liczy każdą próbę, także ponowienia. Wysyłki testowe nie liczą się do żadnego z limitów.

Jeśli zmienisz plan, twoje automatyzacje i ich ustawienia zostają. W planie Free przestają wysyłać i nie możesz ich otworzyć, dopóki nie przejdziesz na wyższy plan. W planie Basic istniejące automatyzacje nadal wysyłają w ramach 300 wysyłek miesięcznie, ale nie możesz dodać ani włączyć więcej niż jednej.

Filtrowanie zdarzeń testowych​

Gdy dotkniesz Wyślij testowo, ładunek zawiera "test": true na najwyższym poziomie. W swoim narzędziu do automatyzacji możesz sprawdzić to pole i pominąć przetwarzanie, gdy jest obecne.

Przewodniki po platformach​

Instrukcje krok po kroku dla twojego narzędzia do automatyzacji:

  • Zapier - połącz TellDone z tysiącami aplikacji za pomocą Zapów
  • Make - buduj wizualne scenariusze automatyzacji (dawniej Integromat)
  • n8n - używaj webhooków TellDone w przepływach hostowanych samodzielnie lub w chmurze
  • Własne punkty końcowe - z webhookami TellDone działa każda usługa, która przyjmuje żądania HTTPS POST

Pomysły​

  • Wysyłaj zadania do arkusza Google przez Zapier
  • Twórz wiadomości Slack z notatek przez Make
  • Zapisuj wydarzenia we własnym CRM przez n8n
  • Twórz kopię zapasową wszystkich notatek w chmurze
  • Przekazuj raporty do pulpitu zespołu

Zobacz też​

  • Skrzynka i wsparcie - jeśli webhook wielokrotnie zawodzi, zobaczysz wiadomość w Skrzynce
  • Zapier - konfiguracja Zapier krok po kroku
  • Make - konfiguracja Make krok po kroku
  • n8n - konfiguracja n8n krok po kroku
  • Todoist - dedykowana dwukierunkowa synchronizacja zadań (bez webhooków)
  • Notion - dedykowana integracja z Notion
  • Przekierowanie na e-mail - odbieraj dane notatek e-mailem