Продукт +
Чат Виджеты Помощник Команды и роли База знаний Внутренние заметки
Тарифы
Ресурсы +
Журнал и база знаний Документация
Контакты Войти Начать бесплатно

Вебхуки

Нотифлоу шлет HTTP POST на ваш endpoint при каждом подписанном событии. Тело — JSON в UTF-8, подпись — HMAC-SHA256 секрета вебхука в заголовке X-Notiflow-Signature.

Настройка

Кабинет: Интеграции → Вебхуки → Создать. Секрет генерируется автоматически; показывается один раз — сохраните в хранилище.

Каталог событий

СобытиеКогда фируется
chat_newНовый диалог в поддержке
chat_messageСообщение от посетителя или оператора (без внутренних заметок)
chat_closedДиалог закрыт
contact_identifiedАнонимный посетитель идентифицирован через _nf('identify') или /v1/contacts
contact.score_tier_changedИзменился tier лида (cold → warm → hot)
widget_showВиджет показан посетителю
widget_clickКлик по CTA в виджете
widget_submitСабмит формы/квиза/NPS
ai_auto_replyAI-бот отправил авто-ответ
ai_summary_generatedСгенерирована сводка диалога

Проверка подписи

Подпись считается по сырому телу запроса (не по распарсенному JSON). Заголовок:

X-Notiflow-Signature: sha256=<hex>

Node.js

const crypto = require('crypto');

function verify(rawBody, header, secret) {
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(header),
    Buffer.from(expected)
  );
}

Python

import hmac, hashlib

def verify(raw_body: bytes, header: str, secret: str) -> bool:
    expected = 'sha256=' + hmac.new(
        secret.encode(), raw_body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(header, expected)

PHP

function verify(string $rawBody, string $header, string $secret): bool {
    $expected = 'sha256=' . hash_hmac('sha256', $rawBody, $secret);
    return hash_equals($expected, $header);
}
Ретраи. При HTTP ≥ 400 или таймауте делаем до 3 попыток с задержками 10 с / 60 с / 300 с. Ответ 2xx считаем доставкой.