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

Documentation Index

Fetch the complete documentation index at: https://docs.twenty.com/llms.txt

Use this file to discover all available pages before exploring further.

Twenty отправляет запрос HTTP POST на ваш URL каждый раз, когда запись создаётся, обновляется или удаляется. Поддерживаются все типы объектов, включая пользовательские объекты.

Создать вебхук

  1. Перейдите в Настройки → API и Вебхуки → Вебхуки
  2. Нажмите + Создать вебхук
  3. Введите URL вашего вебхука (должен быть общедоступным)
  4. Нажмите Сохранить
Вебхук активируется сразу и начинает отправлять уведомления.

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

Изменить: Нажмите на вебхук → Обновите URL → Сохранить Удалить: Нажмите на вебхук → Удалить → Подтвердить

События

Twenty отправляет вебхуки для следующих типов событий:
СобытиеПример
Запись созданаperson.created, company.created, note.created
Запись обновленаperson.updated, company.updated, opportunity.updated
Запись удаленаperson.deleted, company.deleted
Все типы событий отправляются на URL вашего вебхука. Фильтрация событий может быть добавлена в будущих версиях.

Формат полезной нагрузки

Каждый вебхук отправляет HTTP POST с телом JSON:
{
  "event": "person.created",
  "data": {
    "id": "abc12345",
    "firstName": "Alice",
    "lastName": "Doe",
    "email": "alice@example.com",
    "createdAt": "2025-02-10T15:30:45Z",
    "createdBy": "user_123"
  },
  "timestamp": "2025-02-10T15:30:50Z"
}
ПолеОписание
eventЧто произошло (например, person.created)
dataПолная запись, которая была создана/обновлена/удалена
timestampКогда произошло событие (UTC)
Ответьте со статусом HTTP 2xx (200-299), чтобы подтвердить получение. Ответы вне диапазона 2xx фиксируются как ошибки доставки.

Валидация вебхуков

Twenty подписывает каждый запрос вебхука для обеспечения безопасности. Проверяйте подписи, чтобы убедиться в подлинности запросов.

Заголовки

ЗаголовокОписание
X-Twenty-Webhook-SignatureПодпись HMAC SHA256
X-Twenty-Webhook-TimestampМетка времени запроса

Шаги проверки

  1. Получите метку времени из X-Twenty-Webhook-Timestamp
  2. Создайте строку: {timestamp}:{JSON payload}
  3. Вычислите HMAC SHA256, используя секрет вашего вебхука
  4. Сравните с X-Twenty-Webhook-Signature

Пример (Node.js)

const crypto = require("crypto");

const timestamp = req.headers["x-twenty-webhook-timestamp"];
const payload = JSON.stringify(req.body);
const secret = "your-webhook-secret";

const stringToSign = `${timestamp}:${payload}`;
const expectedSignature = crypto
  .createHmac("sha256", secret)
  .update(stringToSign)
  .digest("hex");

const receivedSignature = req.headers["x-twenty-webhook-signature"];
const isValid = crypto.timingSafeEqual(
  Buffer.from(expectedSignature, "hex"),
  Buffer.from(receivedSignature, "hex")
);

Вебхуки vs рабочие процессы

МетодНаправлениеСценарий использования
ВебхукиOUTАвтоматически уведомлять внешние системы о любом изменении записи
Рабочий процесс + HTTP-запросOUTОтправлять данные наружу с настраиваемой логикой (фильтры, преобразования)
Триггер вебхука в рабочем процессеINПолучать данные в Twenty из внешних систем
Для получения внешних данных см. Настройка триггера вебхука.