Отправляйте Отправки на вебхук и повторяйте то, что пропустил приёмник
Добавьте в Форму конечную точку вебхука, проверьте подпись на приёмнике и воспользуйтесь «Повторить неудачные доставки» после сбоя. Что FormFlow повторяет сам и чего не отправит заново.
Эта статья переведена машинным способом. Читать оригинал на английском

Вебхук отправляет каждую принятую Отправку на принадлежащий вам URL в течение нескольких секунд, так что лид может попасть в вашу CRM или в ваш собственный код, не дожидаясь сводки по email. Вебхуки есть в FormFlow начиная с v1.0.0. В этом руководстве добавляется конечная точка, показано, что получает ваш приёмник и как это проверить, а затем разобрано самое важное в день, когда приёмник недоступен: что FormFlow повторяет сам и как отправить остальное заново с помощью «Повторить неудачные доставки».
Что вам понадобится
Приёмник под вашим контролем, который принимает POST с телом JSON. Его адрес должен быть https и разрешаться только в публичные адреса. Панель отклоняет всё остальное при сохранении, поэтому адрес localhost не подойдёт, и для проверки обычно используют туннель.
Добавьте конечную точку
Откройте Форму в панели и перейдите на вкладку «Доставка».
В разделе «Конечные точки вебхуков» нажмите «Добавить конечную точку».
Оставьте в «Отправлять как» вариант «FormFlow JSON (с подписью)». Другой вариант, «Сообщение в Slack», принимает URL входящего вебхука Slack.
Вставьте адрес вашего приёмника в «URL конечной точки» и оставьте «Доставка» включённой.
Сохраните Форму. Уведомление «Скопируйте секреты подписи вебхуков сейчас» показывает URL и секрет каждой новой конечной точки. Оно остаётся на экране, пока вы его не закроете, и сообщает, что секреты больше не показываются. Сохраните секрет в своём менеджере секретов. Чтобы получить новый, удалите конечную точку и добавьте её снова.
Нажмите «Отправить тест» в строке конечной точки. Вы получите «Тестовое сообщение доставлено» или «Не удалось доставить тестовое сообщение» с собственным текстом ошибки вашего приёмника. Сначала строка должна быть сохранена, а кнопка ограничена 20 тестовыми доставками в час.
Затем отправьте настоящую Отправку и откройте её в панели. В её таблице «Запросы на доставку» перечислен каждый получатель, которому причитается эта Отправка, со статусом «В ожидании», «Арендовано», «Доставлено» или «Завершено с ошибкой», числом попыток, ID доставки и последней ошибкой.
Что получает ваш приёмник
Один POST на каждую Отправку, не являющуюся спамом. Тело — небольшой документ JSON, и вместе с ним приходят три заголовка. Вот его структура с условными значениями:
{
"id": "SUBMISSION_UUID",
"form": { "id": "FORM_UUID", "name": "Contact Us" },
"submitted_at": "2026-10-08T09:00:00+00:00",
"data": { "name": "Ada Lovelace", "email": "ada@example.com" }
}X-FormFlow-Timestamp — время попытки в секундах.
X-FormFlow-Signature-256 — это sha256= и затем HMAC-SHA256 от метки времени, точки и исходного тела, с ключом в виде секрета конечной точки.
X-FormFlow-Delivery-Id идентифицирует доставку. При каждом повторе он остаётся тем же.
Проверяйте подпись, прежде чем доверять запросу, — по исходному телу, а не по перекодированной копии. Версия на PHP в том виде, в каком её даёт документация API FormFlow:
function formflow_verify(string $rawBody, string $timestamp, string $signature, string $secret): bool
{
if (abs(time() - (int) $timestamp) > 300) {
return false;
}
$expected = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $rawBody, $secret);
return hash_equals($expected, $signature);
}
Что FormFlow повторяет сам
FormFlow ждёт ответа до 10 секунд. Любой ответ 2xx считается доставленным. Тайм-аут, обрыв соединения, ответ 408, 429 или 5xx повторяются — всего до шести попыток, с паузами в 10 секунд, 1 минуту, 5 минут, 30 минут и 2 часа между ними. Любой другой ответ, включая 3xx или 4xx, считается окончательным отказом и автоматически не повторяется. FormFlow не следует за перенаправлениями, поэтому конечная точка, отвечающая перенаправлением, считается неудачной. Укажите для конечной точки её окончательный адрес.
Если конечная точка продолжает просить повтор и попытки заканчиваются, FormFlow выключает для неё «Доставку» и сообщает владельцам Команды по email. Доставка, у которой попытки закончились, отображается как «Завершено с ошибкой». Панель управления также продолжает показывать вебхук с выключенной пересылкой вместе с серией его сбоев, пока какая-нибудь доставка не пройдёт успешно.
Повторите то, что пропустил приёмник
До v1.33 для каждой пропущенной Отправки требовалось своё «Повторить сейчас». Теперь одно нажатие охватывает конечную точку. Релиз описан в Списке изменений. Порядок важен:
Сначала исправьте приёмник. Каждая неудачная доставка получает ещё одну попытку, поэтому повтор на всё ещё неисправный приёмник просто снова провалится.
На вкладке «Доставка» проверьте переключатель «Доставка» у конечной точки. Если FormFlow его выключил, включите и сохраните Форму. Повтор для выключенной конечной точки отклоняется с сообщением «Включите «Доставка» и сохраните форму, затем повторите.»
Нажмите «Повторить неудачные доставки» в строке конечной точки и подтвердите. В диалоге сказано, что каждая неудачная доставка, которую ещё можно отправить, снова ставится в очередь с исходным ID доставки и исходными данными.
Уведомление сообщает, сколько доставок поставлено в очередь. Одно нажатие ставит в очередь не более 500. Если остались ещё, там сказано нажать снова.
Откройте Отправку и проверьте её таблицу «Запросы на доставку». Число попыток выросло, а статус должен дойти до «Доставлено».
Если вы меняете URL, секрет или формат конечной точки, она начинает с чистого листа. Доставки, сделанные до изменения, не отправляются повторно, а начиная с v1.35.1 панель управления больше не засчитывает старые сбои против нового адреса. Если выключить и включить конечную точку, ничего не меняя, её история сбоев сохраняется.
Ограничения, о которых стоит знать
Новая конечная точка получает только те Отправки, которые поступили после её настройки. Те, что у вас уже есть, ей не отправляются.
Спам не пересылается.
«Повторить неудачные доставки» отправляет заново только те доставки, которые ещё можно отправить, и только на конечную точку в её нынешнем виде.
Доставка происходит как минимум один раз. Ваш приёмник должен терпимо относиться к повторам.