Перейти к основному содержимому

Вебхук-автоматизации

Basic и выше

Автоматизации доступны на Basic и выше. Basic: 1 автоматизация, Pro: 3, Ultra: 10. На Free в строке написано Обнови план, чтобы открыть Автоматизации.

Вебхук - это веб-адрес, который автоматически принимает данные. С помощью Автоматизаций TellDone отправляет на этот адрес каждую новую заметку вместе с её задачами и событиями, как только заметка готова, и каждый новый отчёт, как только отчёт готов, чтобы такие инструменты, как Zapier, Make или n8n, могли с ними работать. Каждая задача и каждое событие отправляются отдельной доставкой.

Что отправлять​

У каждой автоматизации свои настройки в разделе Что отправлять. Выбери один вариант или любое сочетание:

  • Заметка - вся обработанная заметка (название, расшифровка, резюме, тип, теги, приоритет, язык и дата создания)
  • Заметка + аудио - на плане Ultra добавляет к каждой доставке заметки ссылку на аудиофайл, действующую 24 часа. Оставь Заметка включённой: без неё заметки не отправляются
  • Задачи - одна доставка на каждую извлечённую задачу
  • События - одна доставка на каждое извлечённое событие календаря
  • Отчёты - одна доставка на каждый созданный ежедневный, еженедельный, ежемесячный или годовой отчёт (те типы отчётов, которые входят в твой план). Заглушки для спокойных дней и короткие отчёты за спокойные недели не отправляются

Это можно изменить в любое время в настройках автоматизации - изменения действуют только для новых доставок.

Когда отправлять​

Под выбором данных четыре отдельных переключателя определяют, какие изменения запускают доставку: Создание, Изменение, Выполнено и Удалено. Триггер работает только вместе с соответствующим переключателем данных над ним. Например, Выполнено отправляет выполненные задачи, только если включены Задачи.

Создание отправляется для заметок, которые TellDone делает из записи или текстовой заметки, и для задач и событий, найденных в них. Задачи и события, которые ты добавляешь вручную или через AI-ассистента, а также новые элементы из Дописать голосом не отправляются как Создание. Изменение, Выполнено и Удалено отправляются, когда ты меняешь элемент в приложении или через Дописать голосом. Изменения, сделанные Smart Context, AI-ассистентом или в Todoist, Notion либо Microsoft To Do, доставку не запускают.

Поле event каждой доставки называет произошедшее событие, например task.created, task.completed или calendar_event.updated.

Настройка вебхука​

Настройки автоматизаций для Zapier, Make и n8n

  1. Перейди в Настройки > Интеграции > Автоматизации
  2. Нажми Новая автоматизация

Настройка вебхука в новой автоматизации

  1. Введи название (например, «Мой вебхук Zapier»)
  2. Вставь URL вебхука из своего сервиса автоматизации
  3. Выбери, какие данные отправлять (Заметка, Заметка + аудио на Ultra, Задачи, События, Отчёты) и какие триггеры использовать (Создание, Изменение, Выполнено, Удалено)
  4. При желании добавь заголовок авторизации - токен, который отправляется в заголовке Authorization для защищённых адресов
  5. Нажми Сохранить
  6. Скопируй секрет подписи - он показывается целиком только при создании автоматизации или после его смены. Он нужен, чтобы проверять, что доставки действительно приходят от TellDone (см. Проверка подписи вебхуков)
  7. Нажми Тестовая отправка, чтобы отправить пример данных на твой адрес, не меняя ничего в твоих данных. Ты увидишь Успешно с HTTP-кодом и временем ответа или Ошибка с причиной. Тестовые отправки не попадают в журнал доставок

Что отправляется​

Каждая доставка - это JSON-объект с тремя полями: event (тип события), timestamp и data (само содержимое). В тестовые отправки также добавляется "test": true. Вот как выглядит каждый тип события.

Заметки (note.created)​

Содержит созданные AI название, полную расшифровку, резюме, тип заметки, теги, приоритет, язык и дату создания.

{
"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 доставки заметок могут также содержать ссылку на аудиозапись (audio_url, audio_format, duration_seconds). Ссылка перестаёт работать через 24 часа. Включается параметром Заметка + аудио в автоматизации.

Задачи (task.created)​

Одна доставка на каждую задачу. Заметка с 3 задачами отправляет 3 отдельные доставки.

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

События (calendar_event.created)​

Одна доставка на каждое событие календаря.

{
"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 и end указаны в UTC. start_local, end_local, start_date и end_date используют твой часовой пояс (timezone). Для события на весь день end_date - последний день события.

Отчёты (report.created)​

Отправляется, когда создан ежедневный, еженедельный, ежемесячный или годовой отчёт.

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

Безопасность​

Каждая доставка подписывается алгоритмом HMAC-SHA256 с секретом подписи твоей автоматизации. В каждую доставку включены такие заголовки:

  • X-LP-Signature - подпись HMAC-SHA256 (sha256=...)
  • X-LP-Timestamp - Unix-время, использованное для подписи
  • X-LP-Event - тип события (например, note.created, task.completed, calendar_event.updated, report.created)
  • X-LP-Delivery-Id - уникальный ID доставки (удобно для дедупликации)
  • User-Agent - всегда TellDone-Webhooks/1.0

TellDone отправляет заголовок Authorization, только если ты добавил заголовок авторизации в автоматизации. Можно использовать два формата: Header-Name: value отправляет заголовок с указанным именем, а просто значение отправляет Authorization: <value>. Твой секрет подписи никогда не отправляется в заголовке.

У каждой автоматизации свой секрет подписи, поэтому смена одного не влияет на другие твои вебхуки. Секрет показывается целиком только при создании автоматизации или после его смены. В остальное время виден только фрагмент (whsec_...last4). Чтобы заменить его новым, нажми Обновить секрет в настройках автоматизации - это создаст новый ключ HMAC, не меняя URL и заголовок авторизации. Старый секрет перестаёт работать сразу.

Принимаются только HTTPS-адреса с доменным именем. HTTP, IP-адреса (публичные и частные), адреса с именем пользователя или паролем и домены, которые указывают на адреса частных сетей, отклоняются. TellDone проверяет адрес заново при каждой отправке. Если проверка не проходит, например потому что домен в этот момент не определяется, доставка останавливается и не повторяется.

Проверка подписи вебхуков​

Каждый вебхук подписан, чтобы ты мог убедиться, что он действительно пришёл от TellDone. Подпись вычисляется так:

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

Результат кодируется в шестнадцатеричном виде и в заголовке подписи получает префикс sha256=.

Используй исходное тело запроса

TellDone сериализует JSON с пробелами после разделителей (например, {"event": "note.created"}). Если ты разберёшь тело и сериализуешь его заново, подпись не совпадёт. Всегда проверяй по исходным байтам тела запроса.

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

Защита от повторной отправки (необязательно)​

Чтобы защититься от атак повторной отправки, проверяй, что метка времени свежая:

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

Частые ошибки​

ОшибкаРешение
Используется разобранное и заново сериализованное телоИспользуй исходное тело запроса
JSON.stringify() в JS (компактный, без пробелов)Используй исходное тело запроса
Забыт префикс с меткой времениФормат данных: timestamp + "." + body
Строки сравниваются напрямуюИспользуй hmac.compare_digest или timingSafeEqual

Политика повторов​

Если твой адрес не отвечает, TellDone повторяет каждую доставку по такому расписанию:

ПопыткаЗадержка
1-й повтор30 секунд
2-й повтор2 минуты
3-й повтор15 минут
4-й повтор1 час
5-й повтор4 часа

Если и 5-й повтор не удался, доставка помечается как неудавшаяся и больше не повторяется. В приложении она отмечена красным крестиком. Ты всё равно можешь отправить её заново сам из полного журнала доставок: открой Все доставки (ссылка появляется, когда у автоматизации больше 5 доставок) и нажми Повторить у неудавшейся доставки. В коротком списке Последние доставки повтора нет.

Как TellDone обрабатывает разные ответы:

  • 2xx - доставлено успешно
  • 4xx (кроме 429) - сразу помечается как неудавшаяся и не повторяется (твой адрес явно отклонил данные)
  • 429 (Too Many Requests) - повтор через число секунд из Retry-After (60 секунд, если его нет). Эти повторы не ограничены пятью, но каждый из них входит в 20 неудач, после которых автоматизация отключается
  • 5xx или таймаут - повторы по расписанию выше

Если доставки постоянно не удаются​

Если доставки продолжают не удаваться, TellDone сообщает тебе об этом и в итоге отключает автоматизацию.

После 3 неудачных попыток: предупреждение во Входящих​

После 3 неудачных попыток подряд (повторы тоже считаются) TellDone отправляет сообщение в твои Входящие с заголовком Твоя автоматизация «Название» не работает, где в кавычках стоит название твоей автоматизации. Затем ты можешь открыть её в Настройки > Интеграции > Автоматизации, посмотреть её доставки и решить, что делать.

После 20 неудачных попыток: автоматическое отключение​

Автоматическое отключение

Если 20 попыток подряд не удаются для одной и той же автоматизации (повторы тоже считаются), TellDone отключает автоматизацию, чтобы она не продолжала отправлять данные на нерабочий адрес. Устрани проблему в своём инструменте автоматизации, затем снова включи переключатель Активна в Настройки > Интеграции > Автоматизации. Повторное включение не обнуляет счётчик неудач, поэтому, пока не пройдёт хотя бы одна доставка, одна неудачная попытка снова отключит её.

Считается каждая неудачная попытка, поэтому одна доставка, которая не удалась на всех 5 повторах, добавляет к счётчику 6. Поэтому автоматизация может отключиться примерно после 4 неудачных доставок. Счётчик обнуляется при следующей успешной доставке.

Управление вебхуками​

  • Активна - выключи этот переключатель, чтобы остановить автоматизацию, не удаляя её, и включи снова в любое время. Пока он выключен, ничего не отправляется: заметки и отчёты за это время позже не отправляются, а доставки, ожидающие повтора, отбрасываются
  • Доставки - Последние доставки показывают последние 5 со статусом, HTTP-кодом и временем ответа. Когда их становится больше, Все доставки открывают журнал за последние 30 дней, где можно фильтровать по Все, Доставлено или Ошибки и нажимать Повторить у неудавшейся доставки, чтобы отправить её заново, не дожидаясь следующего повтора по расписанию
  • Тестовая отправка - отправляет пример заметки (note.created с "test": true в теле) независимо от выбранных типов данных, не меняя ничего в твоих данных. Доступна после сохранения автоматизации. Тестовые отправки не входят в твой месячный лимит
  • Обновить секрет - создаёт новый секрет подписи HMAC, не меняя URL и заголовок авторизации
  • Изменить - обнови URL, заголовок авторизации, выбор данных (Заметка / Заметка + аудио / Задачи / События / Отчёты) или триггеры (Создание / Изменение / Выполнено / Удалено). Изменения вступают в силу сразу
  • Удалить автоматизацию - навсегда удаляет автоматизацию и все её журналы доставок

Статус каждой доставки показан значком:

ЗначокЗначение
Зелёная галочкаДоставлено
Жёлтые часыОжидает или отправляется
Красный треугольникНе удалось, TellDone повторит попытку
Красный крестикНе удалось, автоматических повторов больше нет

В полном журнале можно нажать Повторить у доставок с красным треугольником или красным крестиком.

Лимиты доставок​

Есть два лимита: месячный, который зависит от плана, и часовой, 100 доставок на любом платном плане, который защищает от внезапных всплесков.

ПланАвтоматизацииДоставок в месяцЧасовой лимит
Free00-
Basic1300100
Pro33 000100
Ultra1015 000100

Как ведут себя лимиты:

  • Месячный лимит исчерпан - доставка ждёт. Она отображается как неудавшаяся («Monthly webhook limit exceeded»), и TellDone пробует снова каждые 5 минут. Она уйдёт после сброса лимита в 00:00 UTC 1-го числа, если к этому времени ей не больше 30 дней. Доставки, отправленные после сброса, учитываются в новом месяце.
  • Часовой лимит исчерпан - доставка откладывается и повторяется примерно через 5 минут, поэтому короткий всплеск не приведёт к потере данных.

В месячный лимит входят только успешные доставки. В часовой лимит входит каждая попытка, включая повторы. Тестовые отправки не входят ни в один из лимитов.

Если ты меняешь план, твои автоматизации и их настройки сохраняются. На Free они перестают отправлять данные, и открыть их нельзя, пока ты не перейдёшь на платный план. На Basic автоматизации, которые у тебя уже были, продолжают отправлять данные в пределах 300 доставок в месяц, но добавить или включить больше одной нельзя.

Фильтрация тестовых событий​

Когда ты нажимаешь Тестовая отправка, в данные на верхнем уровне добавляется "test": true. В своём инструменте автоматизации можно проверять это поле и пропускать обработку, если оно есть.

Руководства по платформам​

Пошаговые инструкции для твоего инструмента автоматизации:

  • Zapier - подключи TellDone к тысячам приложений с помощью Zap
  • Make - собирай визуальные сценарии автоматизации (бывший Integromat)
  • n8n - используй вебхуки TellDone в рабочих процессах, развёрнутых у себя или в облаке
  • Свои эндпоинты - с вебхуками TellDone работает любой сервис, который принимает HTTPS POST-запросы

Идеи​

  • Отправляй задачи в Google Sheets через Zapier
  • Создавай сообщения в Slack из заметок через Make
  • Записывай события в собственную CRM через n8n
  • Делай резервную копию всех заметок в облачное хранилище
  • Пересылай отчёты на командную панель

Смотри также​

  • Входящие и поддержка - если вебхук постоянно не срабатывает, ты увидишь сообщение во Входящих
  • Zapier - пошаговая настройка Zapier
  • Make - пошаговая настройка Make
  • n8n - пошаговая настройка n8n
  • Todoist - отдельная двусторонняя синхронизация задач (вебхуки не нужны)
  • Notion - отдельная интеграция с Notion
  • Пересылка на email - получай данные заметок по почте