Webhook automatizacije
Automatizacije zahtevaju plan Basic ili viši. Basic: 1 automatizacija, Pro: 3, Ultra: 10. Na planu Free red prikazuje Nadogradi na Pro za otključavanje automatizacija.
Webhook je veb adresa koja automatski prima podatke. Uz Automatizacije, TellDone šalje svaku novu belešku sa njenim zadacima i događajima na tu adresu čim je beleška spremna, a svaki novi izveštaj čim je izveštaj spreman, tako da alati kao što su Zapier, Make ili n8n mogu da reaguju na njih. Svaki zadatak i svaki događaj šalje se kao posebna isporuka.
Biranje šta se šalje
Svaka automatizacija ima sopstvena podešavanja pod Šta poslati. Izaberi jedno ili bilo koju kombinaciju:
- Beleška - cela obrađena beleška (naslov, transkript, sažetak, vrsta, oznake, prioritet, jezik i datum nastanka)
- Beleška + zvuk - na planu Ultra, svakoj isporuci beleške dodaje link za preuzimanje audio datoteke koji važi 24 sata. Ostavi uključeno Beleška: bez toga se nijedna beleška ne šalje
- Zadaci - jedna isporuka po izdvojenom zadatku
- Događaji - jedna isporuka po izdvojenom kalendarskom događaju
- Izveštaji - jedna isporuka po svakom napravljenom dnevnom, nedeljnom, mesečnom ili godišnjem izveštaju (vrste izveštaja koje tvoj plan uključuje). Rezervisani izveštaji za mirne dane i kratki izveštaji za mirne nedelje se ne šalju
Ovo možeš da menjaš u bilo kom trenutku u podešavanjima automatizacije - izmene va že samo za nove isporuke.
Biranje kada se šalje
Ispod izbora podataka četiri odvojena prekidača određuju koje promene pokreću isporuku: Stvoreno, Ažurirano, Završeno i Izbrisano. Okidač radi samo zajedno sa odgovarajućim prekidačem podataka iznad njega. Na primer, Završeno šalje završene zadatke samo ako je Zadaci uključeno.
Stvoreno se šalje za beleške koje TellDone pravi iz snimka ili tekstualne beleške, kao i za zadatke i događaje pronađene u njima. Zadaci i događaji koje dodaš ručno ili pomoću AI asistenta, kao i nove stavke iz opcije Dodaj glasom, ne šalju se kao Stvoreno. Ažurirano, Završeno i Izbrisano šalju se kada promeniš stavku u aplikaciji ili pomoću opcije Dodaj glasom. Promene koje naprave Smart Context, AI asistent ili Todoist, Notion ili Microsoft To Do ne šalju isporuku.
Polje event svake isporuke imenuje šta se dogodilo, na primer task.created, task.completed ili calendar_event.updated.
Podešavanje webhook-a

- Idi na Podešavanja > Integracije > Automatizacije
- Dodirni Nova automatizacija

- Unesi ime (na primer, „Moj Zapier webhook“)
- Nalepi URL webhook-a iz svoje usluge za automatizaciju
- Izaberi koje podatke da šalješ (Beleška, Beleška + zvuk na planu Ultra, Zadaci, Događaji, Izveštaji) i koje okidače da koristiš (Stvoreno, Ažurirano, Završeno, Izbrisano)
- Opciono dodaj auth header - token koji se šalje kao zaglavlje
Authorizationza zaštićene krajnje tačke - Dodirni Sačuvaj
- Kopiraj tajni ključ za potpisivanje - prikazuje se u celini samo kada prvi put napraviš automatizaciju ili nakon što ga promeniš. Potreban ti je da proveriš da isporuke stvarno dolaze iz TellDone-a (pogledaj Provera potpisa webhook-a)
- Dodirni Testno slanje da pošalješ probni sadržaj na svoju krajnju tačku bez menjanja bilo kojih tvojih podataka. Videćeš Uspeh sa HTTP kodom i vremenom odgovora ili Greška sa razlogom. Testna slanja se ne pojavljuju u logu isporuka
Šta se šalje
Svaka isporuka je JSON objekat sa tri polja: event (vrsta događaja), timestamp i data (stvarni sadržaj). Testna slanja uključuju i "test": true. Evo kako izgleda svaka vrsta događaja.
Beleške (note.created)
Sadrži naslov koji je napravio AI, ceo transkript, sažetak, vrstu beleške, oznake, prioritet, jezik i datum nastanka.
{
"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"
}
}
Na planu Ultra isporuke beleški mogu da uključe i link ka audio snimku (audio_url, audio_format, duration_seconds). Link ističe nakon 24 sata. Ovo uključuješ opcijom Beleška + zvuk u automatizaciji.
Zadaci (task.created)
Jedna isporuka po zadatku. Beleška sa 3 zadatka šalje 3 odvojene isporuke.
{
"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"
}
}
Događaji (calendar_event.created)
Jedna isporuka po kalendarskom događaju.
{
"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 su u UTC. start_local, end_local, start_date i end_date koriste tvoju vremensku zonu (timezone). Za celodnevni događaj, end_date je poslednji dan događaja.
Izveštaji (report.created)
Šalje se kada se napravi dnevni, nedeljni, mesečni ili godišnji izveštaj.
{
"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"
}
}
Bezbednost
Svaka isporuka je potpisana pomoću HMAC-SHA256 tajnim ključem za potpisivanje tvoje automatizacije. Uz svaku isporuku se šalju sledeća zaglavlja:
X-LP-Signature- HMAC-SHA256 potpis (sha256=...)X-LP-Timestamp- Unix vremenska oznaka korišćena za potpisivanjeX-LP-Event- vrsta događaja (na primernote.created,task.completed,calendar_event.updated,report.created)X-LP-Delivery-Id- jedinstveni ID isporuke (koristan za uklanjanje duplikata)User-Agent- uvekTellDone-Webhooks/1.0
TellDone šalje zaglavlje Authorization samo ako dodaš auth header u automatizaciju. Možeš da koristiš dva formata: Header-Name: value šalje imenovano zaglavlje, a obična vrednost šalje Authorization: <value>. Tvoj tajni ključ za potpisivanje se nikada ne šalje u zaglavlju.
Svaka automatizacija ima sopstveni tajni ključ za potpisivanje, pa promena jednog ne utiče ni na jedan od tvojih drugih webhook-ova. Ključ se prikazuje u celini samo kada prvi put napraviš automatizaciju ili nakon što ga promeniš. U svim ostalim trenucima prikazuje se samo pregled (whsec_...last4). Da ga zameniš novim, dodirni Promeni tajni ključ u podešavanjima automatizacije - ovo pravi novi HMAC ključ bez menjanja URL-a ili auth header-a. Stari ključ prestaje da radi odmah.
Prihvataju se samo HTTPS URL-ovi sa imenom domena. HTTP, IP adrese (javne ili privatne), URL-ovi sa korisničkim imenom ili lozinkom i domeni koji upućuju na adrese privatne mreže se odbijaju. TellDone ponovo proverava adresu svaki put kada šalje. Ako ta provera ne uspe, na primer jer se domen u tom trenutku ne razrešava, isporuka se zaustavlja i ne ponavlja se.
Provera potpisa webhook-a
Svaki webhook je potpisan da bi mogao da potvrdiš da je zaista došao iz TellDone-a. Potpis se izračunava ovako:
HMAC-SHA256(signing_secret, timestamp + "." + raw_body)
Rezultat je heksadecimalno kodiran i ima prefiks sha256= u zaglavlju potpisa.
TellDone serijalizuje JSON sa razmacima posle separatora (na primer {"event": "note.created"}). Ako parsiraš pa ponovo serijalizuješ telo, potpis se neće poklopiti. Uvek proveravaj prema sirovim bajtovima tela zahteva.
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...
});
Zaštita od ponovnog slanja (opciono)
Da sprečiš napade ponovnim slanjem, proveri da je vremenska oznaka nedavna:
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
Česte greške
| Greška | Rešenje |
|---|---|
| Korišćenje parsiranog i ponovo serijalizovanog tela | Koristi sirovo telo zahteva |
JSON.stringify() u JS-u (kompaktno, bez razmaka) | Koristi sirovo telo zahteva |
| Zaboravljen prefiks vremenske oznake | Format sadržaja je timestamp + "." + body |
| Direktno poređenje stringova | Koristi hmac.compare_digest ili timingSafeEqual |
Pravila ponovnog pokušaja
Ako tvoja krajnja tačka ne odgovori uspešno, TellDone ponavlja svaku isporuku po ovom rasporedu:
| Pokušaj | Odlaganje |
|---|---|
| 1. ponovni pokušaj | 30 sekundi |
| 2. ponovni pokušaj | 2 minuta |
| 3. ponovni pokušaj | 15 minuta |
| 4. ponovni pokušaj | 1 sat |
| 5. ponovni pokušaj | 4 sata |
Ako ne uspe ni 5. ponovni pokušaj, isporuka se označava kao neuspela i više se ne ponavlja. U aplikaciji se prikazuje crvenim krstom. I dalje možeš ručno da je pošalješ ponovo iz punog loga isporuka: otvori Sve isporuke (link se pojavljuje kada automatizacija ima više od 5 isporuka) i dodirni Pokušaj ponovo na neuspeloj isporuci. Kratka lista Nedavne isporuke ne nudi ponovni pokušaj.
Kako TellDone postupa sa različitim odgovorima:
- 2xx - uspešno isporučeno
- 4xx (osim 429) - odmah se označava kao neuspelo i ne ponavlja se (tvoja krajnja tačka je izričito odbila podatke)
- 429 (Too Many Requests) - ponavlja se nakon broja sekundi iz
Retry-After(60 sekundi ako ga nema). Ovi ponovni pokušaji nisu ograničeni na 5, ali se svaki računa u 20 neuspeha koji isključuju automatizaciju - 5xx ili timeout - ponavlja se po gornjem rasporedu
Kada isporuke više puta ne uspevaju
Ako isporuke i dalje ne uspevaju, TellDone te obaveštava i na kraju isključuje automatizaciju.
Posle 3 neuspela pokušaja: upozorenje u Primljeno
Nakon 3 uzastopna neuspela pokušaja (ponovni pokušaji se računaju), TellDone ti šalje poruku u Primljeno pod naslovom Tvoja automatizacija „Ime“ ne radi, sa imenom tvoje automatizacije između navodnika. Zatim možeš da je otvoriš u Podešavanja > Integracije > Automatizacije, proveriš njene isporuke i odlučiš šta ćeš.
Posle 20 neuspelih pokušaja: automatsko isključivanje
Ako 20 uzastopnih pokušaja ne uspe za istu automatizaciju (ponovni pokušaji se računaju), TellDone isključuje automatizaciju da prestane da šalje na adresu koja ne radi. Reši problem u svom alatu za automatizaciju, pa ponovo uključi njen prekidač Aktivno u Podešavanja > Integracije > Automatizacije. Ponovno uključivanje ne resetuje broj neuspeha, pa dok jedna isporuka ne uspe, jedan neuspeli pokušaj ponovo je isključuje.
Svaki neuspeli pokušaj se računa, pa jedna isporuka koja ne uspe u svih 5 ponovnih pokušaja dodaje 6 u brojač. Automatizacija zato može da se isključi nakon otprilike 4 isporuke koje ne uspevaju. Brojač se vraća na nulu pri sledećoj uspešnoj isporuci.
Upravljanje webhook-ovima
- Aktivno - isključi ovaj prekidač da zaustaviš automatizaciju bez brisanja, i ponovo ga uključi kad god želiš. Dok je isključena, ništa se ne šalje: beleške i izveštaji iz tog vremena ne šalju se kasnije, a isporuke koje čekaju ponovni pokušaj se odbacuju
- Isporuke - Nedavne isporuke prikazuje poslednjih 5 sa statusom, HTTP kodom i vremenom odgovora. Kada ih bude više, Sve isporuke otvara log poslednjih 30 dana, gde možeš da filtriraš po Sve, Dostavljeno ili Greške i da dodirneš Pokušaj ponovo na neuspeloj isporuci da je pošalješ ponovo bez čekanja sledećeg zakazanog ponovnog pokušaja
- Testno slanje - šalje probnu belešku (
note.created, sa"test": trueu telu), bez obzira na izabrane vrste podataka, bez menjanja bilo kojih tvojih podataka. Dostupno kada se automatizacija sačuva. Testna slanja se ne računaju u tvoje mesečno ograničenje - Promeni tajni ključ - napravi novi HMAC tajni ključ za potpisivanje bez menjanja URL-a ili auth header-a
- Izmeni - ažuriraj URL, auth header, izbor podataka (Beleška / Beleška + zvuk / Zadaci / Događaji / Izveštaji) ili okidače (Stvoreno / Ažurirano / Završeno / Izbrisano). Izmene stupaju na snagu odmah
- Izbriši automatizaciju - trajno uklanja automatizaciju i sve njene logove isporuka
Svaka isporuka prikazuje svoj status kao ikonu:
| Ikona | Značenje |
|---|---|
| Zelena kvačica | Dostavljeno |
| Žuti sat | Čeka se ili se šalje |
| Crveni trougao | Neuspelo, TellDone će ponoviti pokušaj |
| Crveni krst | Neuspelo, nema više automatskih ponovnih pokušaja |
U punom logu možeš da dodirneš Pokušaj ponovo na isporukama sa crvenim trouglom ili crvenim krstom.
Ograničenja isporuke
Postoje dva ograničenja: mesečno ograničenje koje zavisi od tvog plana i ograničenje od 100 isporuka na sat na svakom plaćenom planu, koje štiti od naglih skokova.
| Plan | Automatizacije | Mesečne isporuke | Ograničenje po satu |
|---|---|---|---|
| Free | 0 | 0 | - |
| Basic | 1 | 300 | 100 |
| Pro | 3 | 3.000 | 100 |
| Ultra | 10 | 15.000 | 100 |
Kako se ograničenja ponašaju:
- Mesečno ograničenje dostignuto - isporuka čeka. Prikazuje se kao neuspela („Monthly webhook limit exceeded“), a TellDone pokušava ponovo na svakih 5 minuta. Šalje se nakon što se tvoje ograničenje resetuje u 00:00 UTC prvog u mesecu, osim ako do tada nije starija od 30 dana. Isporuke poslate nakon resetovanja računaju se u novi mesec.
- Ograničenje po satu dostignuto - isporuka se odlaže i ponavlja nakon otprilike 5 minuta, pa kratak nalet neće izgubiti podatke.
U mesečno ograničenje računaju se samo uspešne isporuke. Ograničenje po satu računa svaki pokušaj, uključujući ponovne. Testna slanja se ne računaju ni u jedno ograničenje.
Ako promeniš plan, tvoje automatizacije i njihova podešavanja se zadržavaju. Na planu Free prestaju da šalju i ne možeš da ih otvoriš dok ne nadogradiš plan. Na planu Basic automatizacije koje već postoje nastavljaju da šalju u okviru 300 isporuka mesečno, ali ne možeš da dodaš niti uključiš više od jedne.
Filtriranje probnih događaja
Kada dodirneš Testno slanje, sadržaj uključuje "test": true na najvišem nivou. U svom alatu za automatizaciju možeš da proveriš ovo polje i preskočiš obradu kada je prisutno.
Vodiči za platforme
Uputstva korak po korak za tvoj alat za automatizaciju:
- Zapier - poveži TellDone sa hiljadama aplikacija pomoću Zap-ova
- Make - pravi vizuelne scenarije automatizacije (ranije Integromat)
- n8n - koristi TellDone webhook-ove u tokovima rada koje hostuješ ili u oblaku
- Prilagođene krajnje tačke - svaka usluga koja prihvata HTTPS POST zahteve radi sa TellDone webhook-ovima
Ideje
- Šalji zadatke u Google Sheet preko Zapier-a
- Pravi Slack poruke iz beleški preko Make-a
- Beleži događaje u sopstveni CRM preko n8n-a
- Pravi rezervnu kopiju svih beleški u oblaku
- Prosleđuj izveštaje na timsku tablu
Pogledaj i
- Primljeno i podrška - ako webhook više puta ne uspe, videćeš poruku u Primljeno
- Zapier - Zapier podešavanje korak po korak
- Make - Make podešavanje korak po korak
- n8n - n8n podešavanje korak po korak
- Todoist - namenska dvosmerna sinhronizacija zadataka (webhook-ovi nisu potrebni)
- Notion - namenska Notion integracija
- Prosleđivanje imejlom - primaj podatke o beleškama imejlom