Home / Features / Webhooks
Нативные вебхуки

Вебхуки, которые действительно доставляют

JSON-payload с проверяемой подписью, доставка через очередь, экспоненциальные повторы и журнал доставки для каждой формы. Сделано для разработчиков — без посредника Zapier, который ест ваши данные.

Бесплатно на любом тарифе · Подпись HMAC · Повторы в очереди
POST /webhook
{
  "event": "submission.created",
  "delivery_id": "dlv_8aE2k",
  "timestamp": 1730723400,
  "form_id": "f_142",
  "submission_id": "s_9k3X",
  "fields": {
    "name": "Sarah Chen",
    "email": "[email protected]",
    "budget": 25000
  }
}

Что запускает вебхук

Настраиваете один раз для каждой формы. Мы доставляем при каждом релевантном событии.

submission.created

Новый ответ

Срабатывает в момент отправки формы, со всем payload, полями и метаданными.

payment.succeeded

Успешный платёж

Когда платёж Stripe, привязанный к ответу, успешен, вебхук содержит статус, сумму и валюту.

draft.resumed

Возврат к черновику

Когда респондент возвращается к сохранённому черновику (формы save-and-resume), можно получать уведомление для аналитики воронки.

Предсказуемый, версионированный, аккуратный JSON

Без сюрпризов. Один и тот же envelope в каждом событии. Типы полей сохраняются как есть.

{
  "event":         "submission.created",
  "delivery_id":   "dlv_8aE2kF1Ld9zQ",
  "timestamp":     1730723400,
  "form_id":       "f_142",
  "submission_id": "s_9k3XnPq72T",
  "fields": {
    "name":    "Sarah Chen",
    "email":   "[email protected]",
    "company": "Acme Corp",
    "budget":  25000,
    "message": "Looking for a form solution..."
  },
  "payment": {
    "status":   "succeeded",
    "amount":   2500,
    "currency": "usd"
  },
  "meta": {
    "ip":         "203.0.113.42",
    "user_agent": "Mozilla/5.0...",
    "locale":     "en"
  }
}

Подпись проверена, подделать нельзя

Каждый payload подписан HMAC-SHA256 от секрета вебхука вашей формы. Проверьте на своей стороне, прежде чем доверять данным.

Подпись HMAC-SHA256

Заголовок X-FormBuilder-Signature в каждом запросе. Считайте HMAC от сырого тела с вашим секретом и сравнивайте за константное время.

Секреты для каждой формы

У каждой формы свой секрет. Ротируйте в любой момент в настройках формы — старые payload остаются проверяемыми, пока вы не сгенерируете новый.

Только TLS

Принимаются только HTTPS-эндпоинты. Мы не отправляем на plaintext-URL, чтобы защитить данные при передаче.

Защита от replay

Каждый payload содержит timestamp и уникальный delivery ID. Отбрасывайте доставки старше 5 минут, чтобы предотвратить replay-атаки.

Проверка в 3 строках

Выберите свой стек. Шаблон один и тот же: HMAC от сырого тела с вашим секретом, сравнение с заголовком подписи.

const crypto = require('crypto');

function verify(rawBody, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}
function verify($rawBody, $signature, $secret) {
    $expected = hash_hmac('sha256', $rawBody, $secret);
    return hash_equals($expected, $signature);
}
import hmac, hashlib

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

Сделано для реального мира

Сети падают, эндпоинты тротлят, деплои случаются. Вебхуки ставятся в очередь, повторяются и показывают статус доставки.

Доставка через очередь

Ответы сразу возвращаются респонденту. Доставка вебхука идёт фоном через очередь — не блокирует форму.

Экспоненциальный backoff

Неудачные доставки повторяются с экспоненциальным backoff. Не лупим ваш эндпоинт, когда ему и так плохо.

Несколько повторных попыток

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

Журнал доставки

Каждая попытка записана — запрос, код ответа, фрагмент тела, timestamp. Сбои можно посмотреть в настройках формы.

Ключи идемпотентности

Каждая доставка содержит уникальный ID. Используйте как ключ идемпотентности, чтобы безопасно дедуплицировать повторы.

Запись в аудите

Изменения URL, ротация секретов и включение/выключение записываются в журнал аудита рабочего пространства.

Что строят на вебхуках

USE CASE 01

Синхронизация с собственным CRM

Отправляйте лиды в свою CRM с тем маппингом полей, какой ждёт ваша система.

USE CASE 02

Уведомления Slack / Discord

Помимо нативной интеграции со Slack, стройте свои потоки уведомлений с богатыми payload.

USE CASE 03

Бэкенд-обработка

Запускайте фоновые задачи, отправляйте транзакционные письма, валидируйте данные, синхронизируйте с хранилищем.

USE CASE 04

Альтернатива Zapier / Make

Не платите за middleware. Один вебхук может разойтись на любое количество внутренних сервисов.

Настройка за 4 шага

Настройте один раз — доставляйте всегда.

Откройте настройки формы

В панели откройте форму и перейдите в Интеграции → Вебхуки.

Добавьте URL эндпоинта

Вставьте HTTPS-URL, который будет принимать ответы. Перед сохранением мы проверяем, что эндпоинт отвечает.

Скопируйте секрет подписи

Каждой форме выдаётся уникальный секрет. Сохраните его на сервере и используйте для проверки входящих payload.

Отправьте тест

Отправьте тестовый ответ и проверьте журнал доставки. Убедитесь, что ваш эндпоинт вернул 2xx и проверка подписи прошла.

Частые вопросы

Вебхуки бесплатны?
Да. Вебхуки входят во все тарифы, включая бесплатный. Без оплаты за вызовы.
Как быстро идёт доставка?
Доставка через очередь обычно занимает секунды после отправки. Мы не блокируем ответ формы, поэтому респонденты сразу видят подтверждение.
Какова политика повторов?
Сбойные доставки (5xx, таймауты, ошибки соединения) повторяются с экспоненциальным backoff в несколько попыток в течение часов. После исчерпания попыток доставка помечается как неуспешная и попадает в журнал.
Можно несколько вебхуков на одну форму?
Да. Добавляйте сколько угодно эндпоинтов на одну форму. Каждый срабатывает независимо, со своим секретом и состоянием повторов.
Поддерживается IP allow-list?
Доставки вебхуков идут с устойчивого набора IP. Свяжитесь с поддержкой за актуальным списком, если ваш файрвол требует явного разрешения.
Как ротировать секрет подписи?
В настройках формы → вебхук → «Сгенерировать заново». Новый секрет вступает в силу со следующей доставки. Обновите эндпоинт на новый секрет до пересоздания.

Готовы подключать?

Нативные вебхуки. Бесплатно на любом тарифе.

Начать бесплатно