Automatizări prin webhook
Automatizările necesită planul Basic sau peste. Basic: 1 automatizare, Pro: 3, Ultra: 10. În planul Free, rândul afișează Treci la Pro pentru a debloca Automatizările.
Un webhook este o adresă web care primește date automat. Cu Automatizările, TellDone trimite fiecare notiță nouă, împreună cu sarcinile și evenimentele ei, la acea adresă imediat ce notița este gata, iar fiecare raport nou când raportul este gata, ca instrumente precum Zapier, Make sau n8n să poată acționa pe baza lor. Fiecare sarcină și fiecare eveniment sunt trimise ca livrare separată.
Alegerea a ceea ce se trimite
Fiecare automatizare are propriile setări la Ce se trimite. Alege una sau orice combinație:
- Notiță - notița procesată completă (titlu, transcriere, rezumat, tip, etichete, prioritate, limbă și data creării)
- Notiță + audio - în planul Ultra, adaugă la fiecare livrare de notiță un link de descărcare de 24 de ore către fișierul audio. Păstrează Notiță activată: fără ea, nu se trimite nicio notiță
- Sarcini - o livrare pentru fiecare sarcină extrasă
- Evenimente - o livrare pentru fiecare eveniment de calendar extras
- Rapoarte - o livrare pentru fiecare raport zilnic, săptămânal, lunar sau anual generat (tipurile de rapoarte incluse în planul tău). Substituenții pentru zilele f ără activitate și rapoartele scurte pentru săptămânile liniștite nu se trimit
Le poți schimba oricând din setările automatizării - modificările se aplică doar livrărilor noi.
Alegerea momentului în care se trimite
Sub alegerile de date, patru comutatoare separate decid ce modificări declanșează o livrare: Creat, Actualizat, Finalizate și Șters. Un declanșator funcționează doar împreună cu comutatorul de date corespunzător de deasupra lui. De exemplu, Finalizate trimite sarcinile finalizate doar dacă Sarcini este activat.
Creat se trimite pentru notițele pe care TellDone le face dintr-o înregistrare sau dintr-o notiță text, precum și pentru sarcinile și evenimentele găsite în ele. Sarcinile și evenimentele pe care le adaugi manual sau cu un asistent AI, precum și elementele noi din Adaugă prin voce, nu se trimit ca Creat. Actualizat, Finalizate și Șters se trimit când modifici un element în aplicație sau cu Adaugă prin voce. Modificările făcute de Smart Context, de un asistent AI sau în Todoist, Notion ori Microsoft To Do nu trimit nicio livrare.
Câmpul event al fiecărei livrări spune ce s-a întâmplat, de exemplu task.created, task.completed sau calendar_event.updated.
Configurarea unui webhook

- Mergi la Setări > Integrări > Automatizări
- Atinge Automatizare nouă

- Introdu un nume (de exemplu, „Webhook-ul meu Zapier”)
- Lipește URL-ul webhookului din serviciul tău de automatizare
- Alege ce date să se trimită (Notiță, Notiță + audio în planul Ultra, Sarcini, Evenimente, Rapoarte) și ce declanșatoare să se folosească (Creat, Actualizat, Finalizate, Șters)
- Opțional, adaugă un antet de autentificare - un token trimis ca antet
Authorizationpentru endpointuri securizate - Atinge Salvează
- Copiază cheia secretă de semnare - ea este afișată integral doar când creezi automatizarea sau după ce o regenerezi. Ai nevoie de ea ca să verifici că livrările vin cu adevărat de la TellDone (vezi Verificarea semnăturilor webhook)
- Atinge Testează trimiterea ca să trimiți un exemplu de payload către endpointul tău, fără să modifici vreunul dintre datele tale. Vei vedea Succes cu codul HTTP și timpul de răspuns, sau Eroare cu motivul. Trimiterile de test nu apar în jurnalul de livrări
Ce se trimite
Fiecare livrare este un obiect JSON cu trei câmpuri: event (tipul evenimentului), timestamp și data (conținutul propriu-zis). Trimiterile de test includ și "test": true. Iată cum arată fiecare tip de eveniment.
Notițe (note.created)
Conține titlul generat de AI, transcrierea completă, rezumatul, tipul notiței, etichetele, prioritatea, limba și data creării.
{
"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"
}
}
În planul Ultra, livrările de notițe pot include și un link către înregistrarea audio (audio_url, audio_format, duration_seconds). Linkul expiră după 24 de ore. Activează acest lucru cu opțiunea Notiță + audio din automatizare.
Sarcini (task.created)
O livrare pentru fiecare sarcină. O notiță cu 3 sarcini trimite 3 livrări separate.
{
"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"
}
}
Evenimente (calendar_event.created)
O livrare pentru fiecare eveniment de calendar.
{
"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 sunt în UTC. start_local, end_local, start_date și end_date folosesc fusul tău orar (timezone). Pentru un eveniment care durează toată ziua, end_date este ultima zi a evenimentului.
Rapoarte (report.created)
Se trimite când este generat un raport zilnic, săptămânal, lunar sau anual.
{
"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"
}
}
Securitate
Fiecare livrare este semnată cu HMAC-SHA256, folosind cheia secretă de semnare a automatizării tale. Următoarele antete sunt incluse în fiecare livrare:
X-LP-Signature- semnătura HMAC-SHA256 (sha256=...)X-LP-Timestamp- timestamp Unix folosit pentru semnareX-LP-Event- tipul evenimentului (de exemplunote.created,task.completed,calendar_event.updated,report.created)X-LP-Delivery-Id- ID unic al livrării (util pentru deduplicare)User-Agent- întotdeaunaTellDone-Webhooks/1.0
TellDone trimite un antet Authorization doar dacă adaugi un antet de autentificare în automatizare. Poți folosi două formate: Header-Name: value trimite un antet cu nume, iar o valoare simplă trimite Authorization: <value>. Cheia ta secretă de semnare nu este trimisă niciodată într-un antet.
Fiecare automatizare are propria cheie secretă de semnare, deci regenerarea uneia nu le afectează pe celelalte webhookuri ale tale. Cheia secretă este afișată integral doar când creezi automatizarea sau după ce o regenerezi. În rest, se afișează doar o previzualizare (whsec_...last4). Ca s-o înlocuiești cu una nouă, atinge Regenerează cheia secretă în setările automatizării - aceasta generează o nouă cheie HMAC fără să schimbe URL-ul sau antetul de autentificare. Cheia veche nu mai funcționează imediat.
Sunt acceptate doar URL-uri HTTPS cu nume de domeniu. HTTP, adresele IP (publice sau private), URL-urile cu nume de utilizator sau parolă și domeniile care duc la adrese de rețea privată sunt respinse. TellDone verifică adresa din nou la fiecare trimitere. Dacă această verificare eșuează, de exemplu pentru că domeniul nu se rezolvă în acel moment, livrarea este oprită și nu se reîncearcă.
Verificarea semnăturilor webhook
Fiecare webhook este semnat, ca să poți confirma că a venit într-adevăr de la TellDone. Semnătura se calculează astfel:
HMAC-SHA256(signing_secret, timestamp + "." + raw_body)
Rezultatul este codificat hexazecimal și prefixat cu sha256= în antetul semnăturii.
TellDone serializează JSON-ul cu spații după separatori (de exemplu {"event": "note.created"}). Dacă interpretezi și re-serializezi corpul, semnătura nu se va potrivi. Verifică întotdeauna față de octeții bruți ai corpului cererii.
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...
});
Protecție împotriva reluării (opțional)
Ca să previi atacurile prin reluare, verifică dacă timestamp-ul este recent:
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
Greșeli frecvente
| Greșeala | Remediul |
|---|---|
| Folosirea corpului interpretat și re-serializat | Folosește corpul brut al cererii |
JSON.stringify() în JS (compact, fără spații) | Folosește corpul brut al cererii |
| Uitarea prefixului cu timestamp | Formatul payloadului este timestamp + "." + body |
| Compararea directă a șirurilor | Folosește hmac.compare_digest sau timingSafeEqual |
Politica de reîncercare
Dacă endpointul tău eșuează, TellDone reîncearcă fiecare livrare după acest program:
| Încercarea | Întârziere |
|---|---|
| Reîncercarea 1 | 30 de secunde |
| Reîncercarea 2 | 2 minute |
| Reîncercarea 3 | 15 minute |
| Reîncercarea 4 | 1 oră |
| Reîncercarea 5 | 4 ore |
Dacă și a 5-a reîncercare eșuează, livrarea este marcată ca eșuată și nu mai este reîncercată. În aplicație apare cu o cruce roșie. O poți retrimite totuși singur din jurnalul complet de livrări: deschide Toate livrările (linkul apare după ce o automatizare are mai mult de 5 livrări) și atinge Încearcă din nou la livrarea eșuată. Lista scurtă Livrări recente nu oferă reîncercare.
Cum tratează TellDone diferitele răspunsuri:
- 2xx - livrat cu succes
- 4xx (cu excepția 429) - marcat imediat ca eșuat și nereîncercat (endpointul tău a respins explicit datele)
- 429 (Too Many Requests) - reîncercat după numărul de secunde din
Retry-After(60 de secunde dacă lipsește). Aceste reîncercări nu sunt limitate la 5, dar fiecare se numără la cele 20 de eșecuri care opresc automatizarea - 5xx sau timeout - se reîncearcă după programul de mai sus
Când livrările eșuează repetat
Dacă livrările continuă să eșueze, TellDone te anunță și, în cele din urmă, oprește automatizarea.
După 3 încercări eșuate: avertisment în Mesaje
După 3 încercări eșuate la rând (reîncercările se numără), TellDone trimite în Mesaje un mesaj intitulat Automatizarea ta „Nume” eșuează, cu numele automatizării tale între ghilimele. Poți apoi să o deschizi la Setări > Integrări > Automatizări, să îi verifici livrările și să decizi ce faci.
După 20 de încercări eșuate: oprire automată
Dacă 20 de încercări la rând eșuează pentru aceeași automatizare (reîncercările se numără), TellDone oprește automatizarea ca să nu mai trimită către o adresă care nu funcționează. Rezolvă problema în instrumentul tău de automatizare, apoi reactivează comutatorul Activă la Setări > Integrări > Automatizări. Reactivarea nu resetează numărul de eșecuri, așa că, până când o livrare reușește, o singură încercare eșuată o oprește din nou.
Fiecare încercare eșuată se numără, deci o livrare care eșuează la toate cele 5 reîncercări adaugă 6 la total. O automatizare se poate opri singură, așadar, după aproximativ 4 livrări care eșuează. Contorul revine la zero la următoarea livrare reușită.
Gestionarea webhookurilor
- Activă - dezactivează acest comutator ca să oprești o automatizare fără s-o ștergi și reactivează-l oricând. Cât timp este dezactivată, nu se trimite nimic: notițele și rapoartele din acea perioadă nu sunt trimise ulterior, iar livrările care așteaptă o reîncercare sunt eliminate
- Livrări - Livrări recente arată ultimele 5, cu stare, cod HTTP și timp de răspuns. Când sunt mai multe, Toate livrările deschide jurnalul ultimelor 30 de zile, unde poți filtra după Toate, Livrat sau Erori și poți atinge Încearcă din nou la o livrare eșuată ca s-o retrimiți fără să aștepți următoarea reîncercare programată
- Testează trimiterea - trimite o notiță exemplu (
note.created, cu"test": trueîn corp), indiferent ce tipuri de date ai ales, fără să modifice vreunul dintre datele tale. Disponibil după ce automatizarea este salvată. Trimiterile de test nu se numără în limita ta lunară - Regenerează cheia secretă - generează o cheie secretă de semnare HMAC nouă, fără să schimbe URL-ul sau antetul de autentificare
- Editează - actualizează URL-ul, antetul de autentificare, alegerile de date (Notiță / Notiță + audio / Sarcini / Evenimente / Rapoarte) sau declanșatoarele (Creat / Actualizat / Finalizate / Șters). Modificările intră imediat în vigoare
- Șterge automatizarea - elimină definitiv automatizarea și toate jurnalele ei de livrare
Fiecare livrare își arată starea printr-o pictogramă:
| Pictogramă | Semnificație |
|---|---|
| Bifă verde | Livrat |
| Ceas galben | În așteptare sau se trimite |
| Triunghi roșu | Eșuat, TellDone va reîncerca |
| Cruce roșie | Eșuat, fără alte reîncercări automate |
Poți atinge Încearcă din nou la livrările cu triunghi roșu sau cruce roșie în jurnalul complet.
Limite de livrare
Există două limite: o limită lunară care depinde de planul tău și o limită orară de 100 de livrări în fiecare plan plătit, care protejează împotriva vârfurilor bruște.
| Plan | Automatizări | Livrări lunare | Limita orară |
|---|---|---|---|
| Free | 0 | 0 | - |
| Basic | 1 | 300 | 100 |
| Pro | 3 | 3.000 | 100 |
| Ultra | 10 | 15.000 | 100 |
Cum se comportă limitele:
- Limita lunară atinsă - livrarea așteaptă. Apare ca eșuată („Monthly webhook limit exceeded”), iar TellDone reîncearcă la fiecare 5 minute. Pleacă după ce limita ta se resetează la 00:00 UTC pe 1 ale lunii, cu excepția cazului în care are atunci mai mult de 30 de zile. Livrările trimise după resetare se numără în luna nouă.
- Limita orară atinsă - livrarea este amânată și reîncercată după aproximativ 5 minute, așa că un val scurt nu pierde date.
Doar livrările reușite se numără la limita lunară. Limita orară numără fiecare încercare, inclusiv reîncercările. Trimiterile de test nu se numără la niciuna dintre limite.
Dacă îți schimbi planul, automatizările și setările lor sunt păstrate. În planul Free se opresc din trimis și nu le poți deschide până când treci la un plan superior. În planul Basic, automatizările pe care le aveai deja continuă să trimită în limita a 300 de livrări pe lună, dar nu poți adăuga sau activa mai mult de una.
Filtrarea evenimentelor de test
Când atingi Testează trimiterea, payloadul include "test": true la nivelul superior. În instrumentul tău de automatizare poți verifica acest câmp și poți sări peste procesare când este prezent.
Ghiduri pe platforme
Pentru instrucțiuni de configurare pas cu pas cu instrumentul tău de automatizare:
- Zapier - conectează TellDone la mii de aplicații cu Zapuri
- Make - construiește scenarii vizuale de automatizare (fostul Integromat)
- n8n - folosește webhookurile TellDone în fluxuri găzduite de tine sau în cloud
- Endpointuri personalizate - orice serviciu care acceptă cereri HTTPS POST funcționează cu webhookurile TellDone
Idei
- Trimite sarcini într-o foaie Google Sheet prin Zapier
- Creează mesaje Slack din notițe prin Make
- Înregistrează evenimente într-un CRM propriu prin n8n
- Fă o copie de rezervă a tuturor notițelor în stocarea cloud
- Redirecționează rapoartele către un tablou de bord al echipei
Vezi și
- Mesaje și asistență - dacă un webhook eșuează repetat, vei vedea un mesaj în Mesaje
- Zapier - configurare Zapier pas cu pas
- Make - configurare Make pas cu pas
- n8n - configurare n8n pas cu pas
- Todoist - sincronizare bidirecțională dedicată a sarcinilor (fără webhookuri)
- Notion - integrare Notion dedicată
- Redirecționarea e-mailurilor - primești datele notițelor prin e-mail