FormFlow получает отправления, которые ваши собственные HTML-формы отправляют на URL FormFlow, фильтрует спам, сохраняет их и пересылает в настроенные вами места (например, во входящие или на адрес webhook). FormFlow не размещает ваш встроенный интерфейс и не решает, какие данные собирают ваши формы; на платных планах можно также использовать страницу, размещённую FormFlow.
реальная отправка — зелёный коридорбот — помечен во входящих, не доставлен, не учтёнотклонено вашими настройками — задержано и восстанавливаемо
Измените один атрибут. Готово к работе.
Укажите в атрибуте action вашей формы URL FormFlow — и всё готово. Никаких SDK, клиентских библиотек или настройки серверов. Работает со статического сайта, сервера или единичного вызова curl.
Опишите свою форму — Доступно на платных планах, если функция включена. Опишите, какие данные собирает эта форма или какой тест вы хотите составить. Перед созданием формы вы сможете проверить поля.
Импортировать схему формы — Таблица с вопросами · Проверьте импортированные поля
Вам даже не нужно вручную описывать поля. FormFlow определяет схему формы из её собственного трафика и генерирует доступную разметку (HTML, Blade, Vue или React), готовую к вставке. 18 типов полей — text, email, tel, url, number, textarea, select, checkbox, radio, multiselect, date, file, scale, rating, time, duration, grid, checkbox_grid — все поддерживаются схемой. Конструктор отображает форму рядом со списком полей прямо во время редактирования, на основе ещё не сохранённых настроек. Длинную форму можно разбить на шаги, которые при отключённом JavaScript превратятся в единую страницу. Для фрагментов HTML и Blade включите «Динамический рендеринг» при копировании, и форма будет автоматически следовать вашему списку полей — вставленная разметка останется резервной.
Она поставляется с готовыми стилями. Семь автономных таблиц стилей идут в комплекте с разметкой — ничего не нужно устанавливать или подключать — а также сопоставление классов Bootstrap для сайтов, где он уже загружен. Каждая тема соответствует единым стандартам: метки связаны с полями ввода, кликабельные области от 44px, видимый фокус и проверенная контрастность для каждого стиля.
<!-- Ваша существующая форма. Без JS и SDK. --><formmethod="POST"action="https://formflow.digital/api/v1/f/ab12x9"><inputname="email"type="email"required><textareaname="message"></textarea><button>Send</button></form>
# Или отправляйте POST отовсюдуcurl -X POST https://formflow.digital/api/v1/f/ab12x9 \
-d "email=jane@acme.dev" \
-d "message=Loved the demo"# → 200 OK · {"success":true,"id":"…"}
{{-- Сгенерировано с метками — доступно по умолчанию. --}}<formmethod="POST"action="https://formflow.digital/api/v1/f/ab12x9"><labelfor="email">Email</label><inputid="email"name="email"type="email"required><labelfor="message">Message</label><textareaid="message"name="message"></textarea><button>Send</button></form>
<!-- Вставьте в любой компонент. По-прежнему без SDK. --><template><formmethod="POST"action="https://formflow.digital/api/v1/f/ab12x9"><inputname="email"type="email"required/><textareaname="message"></textarea><button>Send</button></form></template>
// Нативное действие формы — без клиента и состояния.export default functionContact() {
return (
<formmethod="POST"action="https://formflow.digital/api/v1/f/ab12x9"><inputname="email"type="email"required/><textareaname="message"/><button>Send</button></form>
);
}
Одна и та же форма во всех стилях FormFlow/form-styles/minimal
Отрисовано тем же генератором, который создаёт ваш фрагмент кода — без отдельных маркетинговых копий.
Образец загружается в реальном времени из /form-styles/minimal. Если он остаётся пустым, этот маршрут недоступен отсюда — таблица стилей всё равно поставляется вместе с кодом.
Принимайте файлы. Забудьте о хранилище.
Объявите поле file, и ваша форма начнёт принимать загрузку изображений через стандартный multipart — без дополнительной настройки. Одно поле принимает до двадцати файлов одновременно, и вы сами выбираете допустимые форматы. FormFlow сохраняет их на закрытом диске и передаёт во входящие временную подписанную ссылку, поэтому вложения никогда не размещаются по постоянным публичным URL.
JPEG, PNG, WebP и GIF — формат SVG отклоняется, и каждый файл проверяется по сигнатуре (magic bytes), а не по расширению.
Ограничение по размеру в зависимости от тарифа при загрузке — 2 МБ на Starter Lite, 5 МБ на Starter, 25 МБ на Pro.
Хранится конфиденциально; во входящих отображается временная подписанная ссылка, а не встроенный тег <img>.
Прикреплённые файлыcontact-form · 2 объявлено
roof-damage.jpg
image/jpeg · 3.2 МБ · проверено
принято
meter-reading.png
image/png · 0.9 МБ · проверено
принято
подписанная ссылка · каждый файл/download/e7a1…?expires=1h
logo.svgотклонено · SVG запрещён
Красный коридорботы · помечены, не доставлены, не учтены
Фильтр, обучающийся на каждой форме.
Каждая форма получает собственную модель. Отправка оценивается в момент поступления, и каждое ваше исправление вердикта делает модель точнее. Оценка, причина, следующее действие — всё объясняется понятным языком с отчётом по эффективности для каждой формы. Попробуйте →
Обучить эту форму:Модель обновлена для этой формы.
входящиеcontact-form · ab12x9
Jane Okafor
Loved the demo — can we talk pricing this week?
0.02 · доставлено
promo-reply@bulk-seo.link
CHEAP backlinks + guaranteed SEO boost!!!
0.61 · сомнительно
buy-now-bot
🔥 crypto doubler, act now, limited spots
0.98 · спам
01
Honeypot
Скрытое поле, которое заполняют боты и никогда не видят люди. Не требует ресурсов, поэтому выполняется первым.
02
Модель для каждой формы
Наивная байесовская модель для каждой формы, обучаемая на ваших исправлениях. Новая форма заимствует базовые данные команды, поэтому фильтрация работает с самой первой отправки.
03
Turnstile
Опциональная проверка Cloudflare. При сбоях сервиса пропускает запросы — реальная отправка никогда не будет потеряна из-за проверки.
04
Строгая схема
Включите её, и поля, не объявленные в вашей форме, будут отклоняться сразу на входе. По умолчанию выключено.
Эти четыре этапа настроены для блокировки ботов. Но одна из проверок делает не только это: ваша строгая схема не отличает бота от покупателя, как и ваш список разрешённых источников или правила загрузки. Они отклоняют запросы строго по вашим указаниям — и отказ видит только браузер посетителя, а не вы.
Лид может пропасть в четырёх местах. И только одно из них — спам.
Остальные три случая происходят на вашей стороне, где ничто не сообщает об ошибке достаточно громко: отправитель думает, что всё отправлено, а ошибка так и не доходит до FormFlow. Поэтому каждый этап отслеживается отдельно, в порядке взаимодействия с ним.
Пока лид ещё не под угрозой: включите строгий режим, и сгенерированная FormFlow форма проверит каждое поле по реальным правилам сервера ещё до нажатия кнопки «Отправить» — те же правила, те же формулировки, никаких последствий. Это устраняет разрыв, с которым не справляется браузер: браузер проверяет required и type="email", но не кастомные правила валидации из конструктора — поэтому форма, прошедшая проверку браузера, всё ещё может быть отклонена сервером. Теперь ошибка выводится сразу, пока пользователь может её исправить. Причины остановок также подсчитываются.
Без побочных эффектов по контракту — без записей, списания квот, доставки или оценки спама.
В проверяемых параметрах (структура тела, источник, схема) результат полностью совпадает с реальной конечной точкой: автоматический тест отправляет одно и то же тело запроса в обе точки и сравнивает результат.
Она не проверяет ничего лишнего. Спам, Turnstile и поля файлов проверяются только при реальном POST-запросе, поэтому успешная предпроверка означает лишь «эта конфигурация принимает такие данные», а не то, что они будут сохранены.
Использует тот же лимит запросов, что и POST, с резервом, который может израсходовать только реальная отправка.
POST /api/v1/f/ab12x9/preflightнаглядный пример
Снимите фокус с поля, чтобы увидеть ответ конечной точки.
правило формы · min:20 для message · строгий режим включён
Не дошедшая отправка всё ещё может поступить.
До того, как данные достигли сервера: обрыв связи, слишком рано закрытая вкладка — и никто об этом не узнает, ведь пользователь уверен, что всё отправил, а у FormFlow нет ошибки для записи. Включите исходящую очередь браузера, и попытка сохранится и будет повторно отправлена при следующей загрузке страницы, поступив как обычная отправка — учтённая, доставленная и помеченная как спасённая в вашей панели. Поставляется с фрагментами HTML и Blade, скопированными с включённым динамическим рендерингом.
Включается отдельно для каждой формы, но недоступно для форм с полями файлов — загруженные файлы невозможно восстановить из локального хранилища.
Хранится на устройстве пользователя до 24 часов (не более 5 ожидающих попыток) и никогда не восстанавливается обратно в видимые поля формы.
Повторная попытка передаёт заголовок Idempotency-Key, по которому конечная точка формирует квитанцию, поэтому спасённый контакт сохраняется, учитывается и доставляется ровно один раз. Этот заголовок зафиксирован в контракте приёма, так что ваш собственный клиент также может его отправлять.
При сетевой ошибке или 5xx попытка остаётся в очереди до следующей загрузки страницы; при получении любого реального ответа от конечной точки она удаляется.
Просмотреть и восстановить
Отклонённая отправка не отбрасывается — она удерживается вместе с причиной и указанием проблемного поля. Затем FormFlow анализирует обе стороны трафика (принятые и отклонённые отправки) и вычисляет одно изменение настройки, которое восстановит максимум лидов. Изменение, которое привело бы к потере хотя бы одной уже принятой отправки, отбрасывается и никогда не предлагается.
Задержано · отклонённые отправкиcontact-form · последние 7 дней
dana@meridian.co
Quote for 40 units — my number is 0161 496 0000
отклонено · phone
t.okonkwo@brightside.dev
Can you invoice us? Reachable on 020 7946 0102
отклонено · phone
hello@fieldnotes.studio
Interested in the annual plan — call 0117 496 0999
отклонено · phone
было показано пользователюПоле phone не принимается этой формой.
312 отклонено за эту неделю · 40 принято
Рассчитано на основе вашего трафикапредложение
Принять phone — поле, отправляемое вашей формой, но не объявленное в схеме.
Восстановит
312 отклонённых
Потери
0 принятых
Протестировано на недавнем трафике этой формы — нескольких сотнях последних принятых и отклонённых ответов.
Смягчение правил, уже доказавшее безопасность на принятом трафике, может применяться автоматически без ожидания входа в систему, поэтому форма перестаёт терять лиды, даже когда за ней никто не следит. Функция остаётся выключенной, пока вы не включите её, и любое изменение, внесённое FormFlow автоматически, откатывается к вашим исходным настройкам, если реальный трафик не подтвердит его. При отсутствии подтверждений (зависшая очередь, сбой, отсутствие активности) происходит откат, поскольку путь назад сохраняется одновременно с применением изменения.
При внесении изменения на email приходит письмо с описанием изменения и количеством восстановленных лидов, а также ссылкой для восстановления прежних настроек. Восстановленные лиды заново оцениваются по действующим настройкам, учитываются и доставляются, как любые другие. Задним числом ничего не меняется.
А когда ломается сама форма, вас тоже никто не предупреждает.
Спустя долгое время после запуска HTML-код формы продолжает жить на вашем сайте — поэтому сломанная или изменённая форма перестаёт работать тихо, и ни одна ошибка не доходит до FormFlow. Информация о работоспособности вычисляется FormFlow на основе трафика и отправляется вам по почте при первом появлении сбоя.
Отказы — отклонение значительной доли собственного трафика. Сообщается вместо отсутствия активности, но никогда вместе с ним.
Отсутствие активности — резкое падение количества отправок по сравнению с базовым уровнем формы.
Смещение схемы — объявленное поле перестало поступать во входящем трафике.
Преждевременная остановка — поле, на котором пользователи постоянно спотыкаются, зафиксированное ещё до ухода со страницы.
От формы до результата.
Продукт — это весь путь данных. Направьте существующую HTML-форму на один URL: FormFlow сделает передачу, валидацию, восстановление и доставку прозрачными и понятными.
Сохраните привычный фронтенд. А FormFlow покажет, что происходит после отправки: поля могут следовать за текущей формой, отказы из-за настроек остаются восстанавливаемыми, а каждое место назначения гарантированно получает свои данные.
Размещённые страницы доступны на тарифах Starter Lite, Starter и Pro.
Списки участников доступны на тарифах Starter Lite, Starter и Pro с размещёнными страницами.
Динамический рендеринг
Включите опцию при копировании компонента HTML или Blade. Список полей будет динамически обновляться вслед за формой, в то время как вставленная разметка послужит надёжным резервом, а выбранный стиль сохранится.
Восстановление
Восстановление — это не обход правил и не повтор вебхука. FormFlow заново проверяет сохранённый отказ по действующим настройкам формы; только после этого он становится настоящей отправкой, учитывается в текущем лимите и проходит стандартный путь доставки.
Единая точка приёма
Токен формы выступает публичной точкой приёма. FormFlow принимает запрос, оценивает его, сохраняет отправку или отказ и фиксирует каждое последующее решение о доставке в рамках единого пути.
И отсчёт времени контролируем мы, а не браузер.
Прохождение (Sitting) начинается в момент отображения вопросов, а дедлайн фиксируется для места на основе длительности, действующей в эту секунду. Сервер приёма сравнивает время отправки с дедлайном с учётом небольшого скрытого льготного периода — таймер на странице считает до нуля.
Время старта записывается один раз. Повторный вход, очистка cookie, перезагрузка страницы или режим инкогнито — ничто не перезапустит таймер. Он идёт по реальному астрономическому времени, как на настоящем экзамене.
Уменьшение длительности во время прохождения теста тридцатью участниками не сократит время ни одному из них: новое ограничение применится только к тем, кто начнёт после изменения.
Ответы сохраняются даже после финального звонка. Форма с ограничением по времени отключает обязательность полей, поэтому сороковой вопрос, оставленный пустым, всё равно будет отправлен — в то время как незадекларированные поля по-прежнему отклоняются, сохраняя строгость схемы в вашу пользу.
По истечении дедлайна место считается использованным независимо от того, были ли отправлены данные, поэтому нельзя подсмотреть вопросы и вернуться завтра.
Один почтовый ящик с рассылкой по всем нужным адресам.
Читайте отправки в одном месте и отправляйте их по всем подключённым направлениям.
Подписанные вебхуки
Каждая отправка отправляется методом POST на вашу конечную точку с HMAC-подписью для верификации. Шесть попыток с экспоненциальной задержкой от десяти секунд до двух часов, и каждая попытка фиксируется в карточке отправки. Недоступная конечная точка отключается, а её владельцы получают письмо с последней ошибкой — неработающий URL не нагружает систему бесконечными повторами, и вы вовремя узнаете о проблеме.
Выберите формат тела запроса: собственный подписанный JSON от FormFlow или сообщение, отформатированное для каналов Slack. Формат определяет только структуру данных — подпись, повторные попытки и задержки работают одинаково, а URL, содержащий секретные токены, скрывается после сохранения.
Дайджест отправок
Одно еженедельное или ежемесячное письмо для всей команды со сводкой по всем формам — вместо писем на каждую отдельную отправку. Или отключите его, если вам достаточно входящих и вебхуков. Боты в дайджест никогда не попадают.
CSV · XLSX · JSON export
Экспортируйте все входящие прямо из панели. FormFlow сформирует файл в фоновой очереди и отправит вам временную подписанную ссылку (действует один час) — таблицы защищены от внедрения вредоносных формул (CSV-инъекций).
Подтверждение для отправителя
Автоматический ответ пользователю, заполнившему форму, отправляемый на указанный им email. Тема и текст настраиваются вами; ответы подставляются только в указанные плейсхолдеры в виде экранированного текста, и исходный payload никогда не копируется в письмо целиком. Отказавшиеся от рассылки больше не получают письма, а лимиты защищают от перерасхода при внезапном наплыве трафика. Доступно на платных тарифах.
Всё вышеперечисленное собирается в едином рабочем пространстве.
Настройка конечной точки занимает две минуты; панель управления — это то, что вы открываете в понедельник утром. Сначала она отвечает на главный вопрос: «Что требует моего внимания прямо сейчас?», отображая список актуальных событий с причинами и прямыми ссылками для действий. Никаких бессмысленных графиков: число само по себе не даёт ответа. Ниже входящие представлены в виде таблицы, а не дашборда: фильтруйте непрочитанные, отсекайте ботов, выбирайте диапазон дат, экспортируйте отфильтрованные данные и открывайте любую отправку для просмотра полной истории доставки.
acme · dashboard4 задачи требуют вашего внимания
Приближение к лимитуИспользовано 2 540 из 3 000 отправок за этот период.Проверить оплату
contact-formОтправки отклоняются.Открыть форму
contact-form — сбой вебхука3 неудачные доставки подряд, последняя 4 минуты назад.Открыть форму
webhookhttps://acme.dev/hooks/formflowдоставлено · попытка 2
webhookhttps://crm.acme.dev/intake502 Bad Gateway · повтор через 5 мин
digestеженедельно · 3 получателяв очереди
buy-now-bot
🔥 crypto doubler, act now, limited spots
0.98
Такая же таблица используется для журнала задержанных отправок — с указанием причин, проблемных полей и точных сообщений, показанных пользователю. Поэтому восстановление лида сводится к пониманию причины отказа и нажатию кнопки «Восстановить».
И выгружайте любые данные обратно.
Те же отправки по протоколу HTTP с токеном, созданным в панели: входящие, конкретную отправку по ID, ваши формы и журнал отказов. Постраничная навигация по курсору и фильтрация позволяют ночной синхронизации с вашим хранилищем или CRM запрашивать только изменения без необходимости открывать браузер.
Только для чтения по своей природе. Токен может содержать права submissions:read, refusals:read и forms:read — права на запись выдать невозможно, поскольку их не существует.
Показывается только один раз при создании и сохраняется в виде хеша с возможностью установки срока действия. FormFlow не сможет показать его снова, как и любой, кто получит доступ к базе данных.
Собственный минутный лимит, увеличивающийся на старших тарифах и изолированный от скорости приёма отправок формами — активная синхронизация никогда не заблокирует приём реального лида.
Платные тарифы. При запросе с токеном команды на тарифе Free возвращается ошибка management_api_unavailable вместо пустого списка, поэтому причина всегда очевидна.
Тарифоплата за принятые ответы · не за спам от ботов
Платите за принятые данные. А не за спам от ботов.
Спам фильтруется до тарификации. Тариф Free включает 100 отправок с жёстким лимитом; на платных тарифах действует прозрачная оплата превышений до достижения лимита расходов или защитного потолка. Вы получаете уведомления по почте при достижении 50%, 80% и 100% лимита, поэтому повышенная активность не станет неожиданностью в счёте.
Расчёты указаны в USD; Paddle конвертирует валюту и добавляет применимые налоги при оформлении.
На каждом тарифе, включая Free: неограниченное количество форм, спам-модель для каждой формы и её обучение, сохранённые для проверки отклонённые отправки, динамический рендеринг и восстановление из браузера, подписанные вебхуки, дайджест и экспорт в CSV · XLSX · JSON.
Также везде доступно: роли владельцев и участников с приглашениями по email, опциональная двухфакторная аутентификация, приостановка приёма для любой формы, полный журнал действий и хранение данных по GDPR (email и IP хранятся в виде хешей с ключом и удаляются по расписанию). Лимит Free сбрасывается каждого календарного месяца; платные тарифы — в дату расчётного периода. Цены адаптируются Paddle под ваш регион и могут включать налоги. См. нашу Политику возврата.
Направьте вашу первую форму на FormFlow.
Подключите форму за две минуты и наблюдайте за входящими ответами. Отдельный биллинг для каждой команды, а боты никогда не расходуют квоту. Без бэкенда и хостинга.