Ana içeriğe geç

Webhook otomasyonları

Basic ve üstü

Otomasyonlar için Basic ve üstü gerekir. Basic: 1 otomasyon, Pro: 3, Ultra: 10. Free'de satır Otomasyonları açmak için yükselt gösterir.

Webhook, veriyi otomatik olarak alan bir web adresidir. Otomasyonlarla TellDone, her yeni notu görevleri ve etkinlikleriyle birlikte not hazır olur olmaz, her yeni raporu da rapor hazır olur olmaz bu adrese gönderir; böylece Zapier, Make ya da n8n gibi araçlar bunlar üzerinde işlem yapabilir. Her görev ve etkinlik ayrı bir gönderim olarak gönderilir.

Ne gönderileceğini seçme​

Her otomasyonun Ne gönderilecek altında kendi ayarları vardır. Birini ya da istediğin kombinasyonu seç:

  • Not - işlenmiş notun tamamı (başlık, transkript, özet, tür, etiketler, öncelik, dil ve oluşturulma tarihi)
  • Not + ses - Ultra planında her not gönderimine ses dosyasının 24 saatlik indirme bağlantısını ekler. Not'u açık tut: o olmadan hiçbir not gönderilmez
  • Görevler - çıkarılan her görev için bir gönderim
  • Etkinlikler - çıkarılan her takvim etkinliği için bir gönderim
  • Raporlar - oluşturulan her günlük, haftalık, aylık ya da yıllık rapor için bir gönderim (planına dahil olan rapor türleri). Sakin gün yer tutucuları ve kısa sakin hafta raporları gönderilmez

Bunları istediğin zaman otomasyonun ayarlarından değiştirebilirsin - değişiklikler yalnızca yeni gönderimlere uygulanır.

Ne zaman gönderileceğini seçme​

Veri seçeneklerinin altında dört ayrı anahtar hangi değişikliklerin gönderimi tetikleyeceğine karar verir: Oluşturuldu, Güncellendi, Tamamlandı ve Silindi. Bir tetikleyici yalnızca üstündeki ilgili veri anahtarıyla birlikte çalışır. Örneğin Tamamlandı, tamamlanan görevleri yalnızca Görevler açıksa gönderir.

Oluşturuldu, TellDone'un bir kayıttan ya da metin notundan oluşturduğu notlar ve bunlarda bulunan görevler ile etkinlikler için gönderilir. Elle ya da bir AI asistanıyla eklediğin görevler ve etkinlikler ile Sesle ekle'den gelen yeni öğeler Oluşturuldu olarak gönderilmez. Güncellendi, Tamamlandı ve Silindi, bir öğeyi uygulamada ya da Sesle ekle ile değiştirdiğinde gönderilir. Smart Context, bir AI asistanı ya da Todoist, Notion veya Microsoft To Do tarafından yapılan değişiklikler gönderim oluşturmaz.

Her gönderimin event alanı ne olduğunu belirtir, örneğin task.created, task.completed ya da calendar_event.updated.

Webhook kurma​

Zapier, Make ve n8n için otomasyon ayarları

  1. Ayarlar > Entegrasyonlar > Otomasyonlar bölümüne git
  2. Yeni otomasyon'a dokun

Yeni otomasyon webhook kurulumu

  1. Bir ad gir (örneğin "Zapier webhook'um")
  2. Otomasyon hizmetinden aldığın webhook URL'sini yapıştır
  3. Hangi verilerin gönderileceğini (Not, Ultra'da Not + ses, Görevler, Etkinlikler, Raporlar) ve hangi tetikleyicilerin kullanılacağını (Oluşturuldu, Güncellendi, Tamamlandı, Silindi) seç
  4. İsteğe bağlı olarak bir auth header ekle - güvenli uç noktalar için Authorization başlığı olarak gönderilen bir token
  5. Kaydet'e dokun
  6. İmzalama anahtarını kopyala - yalnızca otomasyonu ilk oluşturduğunda ya da anahtarı yenilediğinde tam olarak gösterilir. Gönderimlerin gerçekten TellDone'dan geldiğini kontrol etmek için ona ihtiyacın var (Webhook imzalarını doğrulama bölümüne bak)
  7. Verilerinde hiçbir şeyi değiştirmeden uç noktana örnek bir veri göndermek için Test gönder'e dokun. HTTP kodu ve yanıt süresiyle birlikte Başarılı ya da nedeniyle birlikte Hata görürsün. Test gönderimleri gönderim kaydında görünmez

Neler gönderilir​

Her gönderim üç alanlı bir JSON nesnesidir: event (olay türü), timestamp ve data (asıl içerik). Test gönderimleri ayrıca "test": true içerir. Her olay türünün nasıl göründüğü şöyle.

Notlar (note.created)​

AI tarafından oluşturulan başlığı, tam transkripti, özeti, not türünü, etiketleri, önceliği, dili ve oluşturulma tarihini içerir.

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

Ultra planında not gönderimleri kayda bir bağlantı da içerebilir (audio_url, audio_format, duration_seconds). Bağlantı 24 saat sonra geçerliliğini yitirir. Bunu otomasyondaki Not + ses seçeneğiyle aç.

Görevler (task.created)​

Görev başına bir gönderim. 3 görevli bir not 3 ayrı gönderim yollar.

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

Etkinlikler (calendar_event.created)​

Takvim etkinliği başına bir gönderim.

{
"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 ve end UTC cinsindendir. start_local, end_local, start_date ve end_date senin saat dilimini (timezone) kullanır. Tüm gün süren bir etkinlikte end_date, etkinliğin son günüdür.

Raporlar (report.created)​

Bir günlük, haftalık, aylık ya da yıllık rapor oluşturulduğunda gönderilir.

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

Güvenlik​

Her gönderim, otomasyonunun imzalama anahtarı kullanılarak HMAC-SHA256 ile imzalanır. Her gönderimle birlikte şu başlıklar gelir:

  • X-LP-Signature - HMAC-SHA256 imzası (sha256=...)
  • X-LP-Timestamp - imzalamada kullanılan Unix zaman damgası
  • X-LP-Event - olay türü (örneğin note.created, task.completed, calendar_event.updated, report.created)
  • X-LP-Delivery-Id - benzersiz gönderim kimliği (yinelenenleri ayıklamak için kullanışlı)
  • User-Agent - her zaman TellDone-Webhooks/1.0

TellDone, yalnızca otomasyonda bir auth header eklersen Authorization başlığı gönderir. İki biçim kullanabilirsin: Header-Name: value adlandırılmış bir başlık gönderir, düz bir değer ise Authorization: <value> gönderir. İmzalama anahtarın hiçbir zaman başlıkta gönderilmez.

Her otomasyonun kendi imzalama anahtarı vardır, bu yüzden birini yenilemek diğer webhook'larını etkilemez. Anahtar yalnızca otomasyonu ilk oluşturduğunda ya da yenilediğinde tam olarak gösterilir. Diğer zamanlarda yalnızca bir önizleme (whsec_...last4) gösterilir. Yenisiyle değiştirmek için otomasyon ayarlarında Anahtarı yenile'ye dokun - bu, URL'yi ya da auth header'ı değiştirmeden yeni bir HMAC anahtarı oluşturur. Eski anahtar hemen çalışmayı bırakır.

Yalnızca alan adı olan HTTPS URL'leri kabul edilir. HTTP, IP adresleri (genel ya da özel), kullanıcı adı veya parola içeren URL'ler ve özel ağ adreslerine işaret eden alan adları reddedilir. TellDone adresi her göndermede yeniden kontrol eder. Bu kontrol başarısız olursa, örneğin alan adı o anda çözümlenmiyorsa, gönderim durdurulur ve yeniden denenmez.

Webhook imzalarını doğrulama​

Her webhook, gerçekten TellDone'dan geldiğini doğrulayabilmen için imzalanır. İmza şöyle hesaplanır:

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

Sonuç hex olarak kodlanır ve imza başlığında başına sha256= eklenir.

Ham istek gövdesini kullan

TellDone JSON'u ayırıcılardan sonra boşluk koyarak serileştirir (örneğin {"event": "note.created"}). Gövdeyi ayrıştırıp yeniden serileştirirsen imza eşleşmez. Doğrulamayı her zaman istek gövdesinin ham baytları üzerinden yap.

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

Tekrar saldırısı koruması (isteğe bağlı)​

Tekrar saldırılarını önlemek için zaman damgasının yeni olduğunu kontrol et:

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

Sık yapılan hatalar​

HataÇözüm
Ayrıştırılıp yeniden serileştirilmiş gövdeyi kullanmakHam istek gövdesini kullan
JS'te JSON.stringify() (sıkıştırılmış, boşluksuz)Ham istek gövdesini kullan
Zaman damgası önekini unutmakVeri biçimi timestamp + "." + body şeklindedir
Metinleri doğrudan karşılaştırmakhmac.compare_digest ya da timingSafeEqual kullan

Yeniden deneme politikası​

Uç noktan başarısız olursa TellDone her gönderimi şu takvimle yeniden dener:

DenemeGecikme
1. yeniden deneme30 saniye
2. yeniden deneme2 dakika
3. yeniden deneme15 dakika
4. yeniden deneme1 saat
5. yeniden deneme4 saat

Beşinci yeniden deneme de başarısız olursa gönderim başarısız olarak işaretlenir ve bir daha denenmez. Uygulamada kırmızı bir çarpı gösterir. Yine de tam gönderim kaydından kendin yeniden gönderebilirsin: Tüm gönderimler'i aç (bağlantı, bir otomasyonun 5'ten fazla gönderimi olunca görünür) ve başarısız gönderimde Tekrar dene'ye dokun. Kısa Son gönderimler listesi yeniden deneme sunmaz.

TellDone farklı yanıtları şöyle ele alır:

  • 2xx - başarıyla gönderildi
  • 4xx (429 hariç) - hemen başarısız olarak işaretlenir ve yeniden denenmez (uç noktan veriyi açıkça reddetti)
  • 429 (Too Many Requests) - Retry-After içindeki saniye sayısı kadar sonra yeniden denenir (yoksa 60 saniye). Bu yeniden denemeler 5 ile sınırlı değildir, ancak her biri otomasyonu kapatan 20 başarısızlığa sayılır
  • 5xx ya da zaman aşımı - yukarıdaki takvimle yeniden denenir

Gönderimler tekrar tekrar başarısız olduğunda​

Gönderimler başarısız olmaya devam ederse TellDone sana haber verir ve sonunda otomasyonu kapatır.

3 başarısız denemeden sonra: Gelen Kutusu uyarısı​

Üst üste 3 başarısız denemeden sonra (yeniden denemeler de sayılır) TellDone Gelen Kutusu'na, tırnak içinde otomasyonunun adıyla birlikte “Ad” otomasyonun başarısız oluyor başlıklı bir mesaj gönderir. Ardından onu Ayarlar > Entegrasyonlar > Otomasyonlar içinde açabilir, gönderimlerini kontrol edebilir ve ne yapacağına karar verebilirsin.

20 başarısız denemeden sonra: Otomatik kapatma​

Otomatik kapatma

Aynı otomasyon için üst üste 20 deneme başarısız olursa (yeniden denemeler de sayılır) TellDone, çalışmayan bir adrese göndermeyi bırakması için otomasyonu kapatır. Sorunu otomasyon aracında düzelt, sonra Ayarlar > Entegrasyonlar > Otomasyonlar içinde Aktif anahtarını yeniden aç. Yeniden açmak başarısızlık sayacını sıfırlamaz, bu yüzden bir gönderim başarılı olana kadar tek bir başarısız deneme onu yeniden kapatır.

Her başarısız deneme sayılır, yani 5 yeniden denemenin hepsinde başarısız olan tek bir gönderim sayaca 6 ekler. Bu yüzden bir otomasyon yaklaşık 4 başarısız gönderimden sonra kendini kapatabilir. Sayaç, bir sonraki başarılı gönderimde sıfırlanır.

Webhook'ları yönetme​

  • Aktif - bir otomasyonu silmeden durdurmak için bu anahtarı kapat, istediğin zaman yeniden aç. Kapalıyken hiçbir şey gönderilmez: o sırada oluşan notlar ve raporlar sonradan gönderilmez, yeniden deneme bekleyen gönderimler atılır
  • Gönderimler - Son gönderimler son 5 gönderimi durumu, HTTP kodu ve yanıt süresiyle gösterir. Daha fazlası olunca Tüm gönderimler, son 30 günün kaydını açar; burada Hepsi, Gönderildi ya da Hatalar ile filtreleyebilir ve bir sonraki planlı yeniden denemeyi beklemeden yeniden göndermek için başarısız bir gönderimde Tekrar dene'ye dokunabilirsin
  • Test gönder - seçtiğin veri türleri ne olursa olsun örnek bir not gönderir (note.created, gövdede "test": true ile) ve verilerinde hiçbir şeyi değiştirmez. Otomasyon kaydedildikten sonra kullanılabilir. Test gönderimleri aylık sınırına sayılmaz
  • Anahtarı yenile - URL'yi ya da auth header'ı değiştirmeden yeni bir HMAC imzalama anahtarı oluştur
  • Düzenle - URL'yi, auth header'ı, veri seçimlerini (Not / Not + ses / Görevler / Etkinlikler / Raporlar) veya tetikleyicileri (Oluşturuldu / Güncellendi / Tamamlandı / Silindi) güncelle. Değişiklikler hemen geçerli olur
  • Otomasyonu sil - otomasyonu ve tüm gönderim kayıtlarını kalıcı olarak kaldırır

Her gönderim durumunu bir simgeyle gösterir:

SimgeAnlamı
Yeşil onayGönderildi
Sarı saatBekliyor ya da gönderiliyor
Kırmızı üçgenBaşarısız, TellDone yeniden deneyecek
Kırmızı çarpıBaşarısız, otomatik yeniden deneme yok

Tam kayıtta kırmızı üçgenli ya da kırmızı çarpılı gönderimlerde Tekrar dene'ye dokunabilirsin.

Gönderim sınırları​

İki sınır vardır: planına bağlı aylık bir sınır ve ani artışlara karşı koruyan, tüm ücretli planlarda saatte 100 gönderimlik bir saatlik sınır.

PlanOtomasyonlarAylık gönderimSaatlik sınır
Free00-
Basic1300100
Pro33.000100
Ultra1015.000100

Sınırlar nasıl davranır:

  • Aylık sınıra ulaşıldı - gönderim bekler. Başarısız olarak görünür ("Monthly webhook limit exceeded"), TellDone her 5 dakikada bir yeniden dener. Sınırın ayın 1'inde 00:00 UTC'de sıfırlanmasından sonra gönderilir, o zamana kadar 30 günden eski olmadıysa. Sıfırlamadan sonra gönderilenler yeni aya sayılır.
  • Saatlik sınıra ulaşıldı - gönderim ertelenir ve yaklaşık 5 dakika sonra yeniden denenir, böylece kısa bir yoğunlukta veri kaybolmaz.

Aylık sınıra yalnızca başarılı gönderimler sayılır. Saatlik sınır, yeniden denemeler dahil her denemeyi sayar. Test gönderimleri iki sınıra da sayılmaz.

Plan değiştirirsen otomasyonların ve ayarları korunur. Free'de göndermeyi bırakırlar ve yükseltene kadar onları açamazsın. Basic'te daha önce sahip olduğun otomasyonlar ayda 300 gönderim sınırı içinde göndermeye devam eder, ancak birden fazlasını ekleyemez ya da açamazsın.

Test olaylarını filtreleme​

Test gönder'e dokunduğunda veri en üst düzeyde "test": true içerir. Otomasyon aracında bu alanı kontrol edebilir ve varsa işlemeyi atlayabilirsin.

Platform kılavuzları​

Otomasyon aracın için adım adım kurulum talimatları:

  • Zapier - TellDone'u Zap'lerle binlerce uygulamaya bağla
  • Make - görsel otomasyon senaryoları kur (eski adıyla Integromat)
  • n8n - TellDone webhook'larını kendi sunucundaki ya da bulut iş akışlarında kullan
  • Özel uç noktalar - HTTPS POST isteklerini kabul eden her hizmet TellDone webhook'larıyla çalışır

Fikirler​

  • Zapier ile görevleri bir Google Sheet'e gönder
  • Make ile notlardan Slack mesajları oluştur
  • n8n ile etkinlikleri özel bir CRM'e kaydet
  • Tüm notları bulut depolamaya yedekle
  • Raporları bir ekip panosuna ilet

Ayrıca bak​

  • Gelen Kutusu ve destek - bir webhook tekrar tekrar başarısız olursa Gelen Kutusu'nda bir mesaj görürsün
  • Zapier - adım adım Zapier kurulumu
  • Make - adım adım Make kurulumu
  • n8n - adım adım n8n kurulumu
  • Todoist - özel iki yönlü görev eşitlemesi (webhook gerekmez)
  • Notion - özel Notion entegrasyonu
  • E-posta iletme - not verilerini e-postayla al