Webhook automatizacije
Webhookovi zahtijevaju plaćeni plan. Basic: 1 webhook, Pro: 3, Ultra: 10.
Webhookovi ti omogućuju da povežeš TellDone s bilo kojom vanjskom uslugom. Kad stvoriš glasovnu bilješku, TellDone je obrađuje i automatski šalje izdvojene podatke - bilješke, zadatke, događaje i izvještaje - na URL koji navedeš. Svaki zadatak i događaj šalje se kao zasebna isporuka, pa ih tvoj alat za automatizaciju može obraditi pojedinačno.
Odabir onoga što se šalje
Svaka automatizacija ima svoje prekidače sadržaja. Odaberi jedan ili bilo koju kombinaciju:
- Bilješke - cijela obrađena bilješka (naslov, transkript, sažetak, oznake, jezik)
- Audio - na planu Ultra priloži 24-satnu poveznicu za preuzimanje audiodatoteke uz sadržaj bilješke
- Zadaci - jedna isporuka po izdvojenom zadatku
- Događaji - jedna isporuka po izdvojenom događaju u kalendaru
- Izvještaji - jedna isporuka po generiranom dnevnom, tjednom, mjesečnom ili godišnjem izvještaju
Prekidače možeš promijeniti bilo kad iz postavki automatizacije - promjene vrijede samo za nove događaje.
Postavljanje webhooka

- Idi na Postavke > Integracije > Webhook automatizacije
- Dodirni Nova automatizacija

- Unesi naziv (npr. "Moj Zapier webhook")
- Zalijepi URL webhooka iz svoje usluge za automatizaciju
- Odaberi koje podatke slati: bilješke, zadatke, događaje, izvještaje (ili bilo koju kombinaciju)
- Neobavezno dodaj zaglavlje za autentifikaciju - token poslan kao zaglavlje
Authorizationza sigurne krajnje točke - Dodirni Spremi
- Kopiraj tajnu za potpisivanje - prikazuje se u cijelosti samo kad prvi put stvoriš automatizaciju ili nakon što je rotiraš. Trebat će ti ako želiš provjeriti autentičnost webhooka
- Dodirni "Test" da pošalješ ogledni sadržaj na svoju krajnju točku bez stvaranja stvarnog događaja
URL webhooka mora koristiti HTTPS. HTTP adrese i IP adrese privatne mreže ne prihvaćaju se.
Što se šalje
Svaka isporuka je JSON objekt s tri polja: event (vrsta događaja), timestamp i data (stvarni sadržaj). Evo kako izgleda svaka vrsta događaja.
Bilješke (note.created)
Sadrži naslov koji generira AI, cijeli transkript, sažetak, vrstu bilješke, oznake, prioritet, jezik i datum stvaranja.
{
"event": "note.created",
"timestamp": "2026-02-27T14:38:00Z",
"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:00Z"
}
}
Na planu Ultra isporuke bilješki mogu uključivati i poveznicu na audiosnimku (audio_url, audio_format, duration_seconds). Poveznica istječe nakon 24 sata. Omogući to opcijom "Bilješka + audio" pri stvaranju automatizacije.
Zadaci (task.created)
Jedna isporuka po zadatku. Jedna bilješka s 3 zadatka šalje 3 zasebna webhooka.
{
"event": "task.created",
"timestamp": "2026-02-27T14:38:01Z",
"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:00Z",
"tags": ["work"],
"status": "todo",
"created_at": "2026-02-27T10:00:00Z"
}
}
Događaji (calendar_event.created)
Jedna isporuka po događaju u kalendaru.
{
"event": "calendar_event.created",
"timestamp": "2026-02-27T14:38:02Z",
"data": {
"note_id": "550e8400-...",
"note_title": "Meeting notes",
"event_id": "770a0622-...",
"title": "Team standup",
"description": "Weekly sync",
"start": "2026-03-03T10:00:00+03:00",
"end": "2026-03-03T10:30:00+03:00",
"location": "Zoom",
"is_all_day": false,
"attendees": ["alice@example.com"],
"tags": ["work"],
"created_at": "2026-02-27T10:00:00Z"
}
}
Izvještaji (report.created)
Šalje se kad se generira dnevni, tjedni, mjesečni ili godišnji izvještaj.
{
"event": "report.created",
"timestamp": "2026-02-28T00:05:00Z",
"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": "productive",
"tasks_created": 5,
"tasks_completed": 3
},
"created_at": "2026-02-28T00:05:00Z"
}
}
Sigurnost
Svaka je isporuka potpisana pomoću HMAC-SHA256 koristeći tajnu za potpisivanje tvoje automatizacije. Sljedeća zaglavlja uključena su u svaku isporuku:
X-LP-Signature- HMAC-SHA256 potpis (sha256=...)X-LP-Timestamp- Unix vremenska oznaka korištena za potpisivanjeX-LP-Event- vrsta događaja (note.created,task.created,calendar_event.created,report.created)X-LP-Delivery-Id- jedinstveni ID isporuke (koristan za uklanjanje duplikata)User-Agent- uvijekTellDone-Webhooks/1.0
Zaglavlja potpisa šalju se uz svaku isporuku, bez obzira na druge postavke.
Prema zadanome, svaka isporuka uključuje tajnu za potpisivanje tvoje automatizacije u zaglavlju Authorization - pa alati poput n8n Header Auth rade odmah tako da zalijepiš tajnu kao vrijednost autentifikacije. Ako postaviš prilagođeno zaglavlje za autentifikaciju u postavkama, ono zamjenjuje ovu zadanu vrijednost. Možeš koristiti dva formata: Header-Name: value (šalje imenovano zaglavlje) ili običnu vrijednost (šalje je kao Authorization: <value>).
Svaka automatizacija ima svoju tajnu za potpisivanje, pa rotacija jedne ne utječe ni na jedan tvoj drugi webhook. Tajna se prikazuje u cijelosti samo kad prvi put stvoriš automatizaciju ili nakon što je rotiraš. Sve ostalo vrijeme prikazuje se samo pretpregled (whsec_...zadnja4). Da je zamijeniš novom, dodirni "Rotiraj tajnu" u postavkama automatizacije - time se generira novi HMAC ključ bez promjene URL-a ili zaglavlja za autentifikaciju. Stara tajna odmah prestaje raditi.
Prihvaćaju se samo HTTPS URL-ovi. HTTP, IP adrese i adrese privatne mreže odbijaju se.
Provjera potpisa webhooka
Svaka isporuka uključuje zaglavlje potpisa u obliku X-LP-Signature: sha256=<hex>. Primjer ispod pokazuje kako ga provjeriti u Pythonu.
Svaki je webhook potpisan pa možeš potvrditi da je zaista došao iz TellDonea. Potpis se izračunava kao:
HMAC-SHA256(signing_secret, timestamp + "." + raw_body)
Rezultat je heksadecimalno kodiran i ima prefiks sha256= u zaglavlju potpisa.
TellDone serijalizira JSON s razmacima nakon razdjelnika (npr. {"event": "note.created"}). Ako parsiraš i ponovno serijaliziraš tijelo, potpis se neće podudarati. Uvijek provjeravaj prema sirovim bajtovima tijela zahtjeva.
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");
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
// 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 ponovne reprodukcije (neobavezno)
Da spriječiš napade ponovnom reprodukcijom, provjeri je li 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
Uobičajene pogreške
| Pogreška | Rješenje |
|---|---|
| Korištenje parsiranog + ponovno serijaliziranog tijela | Koristi sirovo tijelo zahtjeva |
JSON.stringify() u JS-u (kompaktno, bez razmaka) | Koristi sirovo tijelo ili uskladi s razmacima u Pythonu |
| Zaboravljen prefiks vremenske oznake | Format sadržaja je timestamp + "." + body |
| Izravno uspoređivanje nizova | Koristi hmac.compare_digest ili timingSafeEqual |
Pravila ponovnog pokušaja
Ako tvoja krajnja točka zakaže, TellDone ponavlja svaku isporuku uz eksponencijalno odgađanje (nekoliko minuta, zatim dulji intervali):
| Pokušaj | Odgoda |
|---|---|
| 1. ponovni pokušaj | 30 sekundi |
| 2. ponovni pokušaj | 2 minute |
| 3. ponovni pokušaj | 15 minuta |
| 4. ponovni pokušaj | 1 sat |
| 5. ponovni pokušaj | 4 sata |
Nakon 5 neuspjelih pokušaja isporuka se označava kao mrtva. I dalje je možeš ručno ponoviti iz Zapisa isporuka.
Kako TellDone obrađuje različite odgovore:
- 2xx - uspješno isporučeno
- 4xx (osim 429) - odmah označeno mrtvim, bez ponovnog pokušaja (tvoja je krajnja točka izričito odbila podatke)
- 429 (Previše zahtjeva) - ponavlja, poštuje zaglavlje
Retry-After - 5xx ili istek vremena - ponavlja prema rasporedu iznad
Kad isporuke opetovano zakažu
Ne moraš motriti Zapis isporuka da bi znao kad je nešto pokvareno. TellDone prati uzastopne neuspjehe umjesto tebe i javlja se u dvije faze.
Nakon 3 neuspjeha: upozorenje u Pristigloj pošti
Nakon 3 uzastopne neuspjele isporuke TellDone stvara poruku u tvojoj Pristigloj pošti pod kategorijom "Neuspjeli webhookovi". Poruka imenuje pogođenu automatizaciju i vodi te izravno na Postavke > Integracije > Automatizacije > [neuspjela automatizacija] > Zapis isporuka da pregledaš odgovor i odlučiš što učiniti.
Upozorenja u Pristigloj pošti znače da za pokvarene automatizacije doznaješ iz oznake na ikoni aplikacije umjesto da ih otkriješ tjednima kasnije po nedostajućim podacima u svom odredišnom alatu.
Nakon 20 neuspjeha: automatsko onemogućavanje
Ako 20 uzastopnih isporuka za istu automatizaciju zakaže (brojeno nakon upozorenja u Pristigloj pošti), TellDone automatski isključuje automatizaciju da prestane pingati pokvarenu krajnju točku i da zaštiti tvoju mjesečnu kvotu isporuka. Ispravi problem na odredištu, zatim ponovno omogući automatizaciju iz Postavke > Integracije > Automatizacije.
Brojač uzastopnih neuspjeha vraća se na nulu pri sljedećoj uspješnoj isporuci.
Upravljanje webhookovima
- Pauziraj/nastavi - onemogući bilo koju automatizaciju bez brisanja, ponovno omogući bilo kad
- Zapis isporuka - pregledaj sve isporuke sa statusom, HTTP kodom i vremenom odgovora. Filtriraj po Isporučeno ili Greške. Dodirni bilo koju neuspjelu isporuku i odaberi "Ponovi" da je ponovno pošalješ bez čekanja na sljedeći zakazani pokušaj
- Test - dodirni "Test" da pošalješ ogledni sadržaj (s
"test": trueu tijelu) na svoju krajnju točku bez stvaranja stvarnog događaja. Testna slanja ne broje se u tvoju mjesečnu kvotu - Rotiraj tajnu - generiraj novu HMAC tajnu za potpisivanje bez promjene URL-a ili zaglavlja za autentifikaciju
- Uredi - ažuriraj URL, zaglavlje za autentifikaciju ili prekidače sadržaja (bilješke / audio / zadaci / događaji / izvještaji). Promjene vrijede odmah
- Izbriši - trajno uklanja automatizaciju i sve njezine zapise isporuka
Ograničenja isporuke
Isporuka webhooka ima dvije granice: mjesečnu kvotu (čvrsta granica, razlikuje se po planu) i satnu granicu protiv rafala (meka granica, ista na svim plaćenim planovima).
| Plan | Webhookovi | Mjesečne isporuke | Satni rafal |
|---|---|---|---|
| Free | 0 | 0 | - |
| Basic | 1 | 300 | 100 |
| Pro | 3 | 3.000 | 100 |
| Ultra | 10 | 15.000 | 100 |
Plan Ultra podržava i audio poveznice u sadržaju bilješki (istek nakon 24 sata).
Kako se granice ponašaju:
- Prekoračena mjesečna granica - isporuka se označava neuspjelom bez ponovnog pokušaja. Nove isporuke nastavljaju se 1. dan sljedećeg mjeseca kad se brojač ponovno postavi.
- Prekoračena satna granica rafala - isporuka se odgađa i ponavlja nakon otprilike 5 minuta, pa kratak rafal neće izgubiti podatke. Ovo je meka zaštita protiv rafala, a ne trajno odbijanje.
Testna slanja i ručne ponovne isporuke iz Zapisa isporuka ne broje se ni u jednu granicu.
Filtriranje testnih događaja
Kad dodirneš "Test", sadržaj uključuje "test": true na najvišoj razini. U svom alatu za automatizaciju možeš provjeriti to polje i preskočiti obradu kad je prisutno.
Vodiči za platforme
Za upute o postavi korak po korak s tvojim alatom za automatizaciju:
- Zapier - poveži TellDone s tisućama aplikacija pomoću Zapova
- Make - gradi vizualne scenarije automatizacije (nekad Integromat)
- n8n - koristi TellDone webhookove u samostalno hostanim ili oblak tijekovima rada
- Prilagođene krajnje točke - bilo koja usluga koja prihvaća HTTPS POST zahtjeve radi s TellDone webhookovima
Popularni slučajevi upotrebe
- Slanje zadataka u Google Sheet putem Zapiera
- Stvaranje Slack poruka iz bilješki putem Makea
- Bilježenje događaja u prilagođeni CRM putem n8n-a
- Sigurnosna kopija svih bilješki u pohranu u oblaku
- Prosljeđivanje izvještaja na nadzornu ploču tima
Pogledaj i
- Pristigla pošta i podrška - ako webhook opetovano zakaže, vidjet ćeš poruku u svojoj Pristigloj pošti
- Zapier - postava Zapiera korak po korak
- Make - postava Makea korak po korak
- n8n - postava n8n-a korak po korak
- Todoist - namjenska dvosmjerna sinkronizacija zadataka (bez potrebe za webhookovima)
- Notion - namjenska Notion integracija
- Prosljeđivanje e-pošte - primaj podatke o bilješkama e-poštom