Все модули

Web Form Receiver

Приём заявок с публичных лендингов в Lead с reCAPTCHA, honeypot, rate limit и дедупликацией.

Возможности

Что умеет модуль

Публичный endpoint без авторизации

POST /WebForm и GET /WebFormConfig с noAuth: true; conf-endpoint отдаёт только публичные настройки капчи.

Origin whitelist с масками

OriginMatcher сверяет HTTP Origin с шаблонами вида https://*.crmp.kz; * становится regex [^/]+, не пропускает поддельный URL.

Honeypot + reCAPTCHA

Скрытое поле website отбрасывает ботов; reCAPTCHA через Integration WebFormCaptcha и siteverify-API.

Sliding-window rate limit

WebFormRateLimit с composite-индексом ipAddress+createdAt; ScheduledJob CleanupWebFormRateLimit ежедневно в 03:00.

Дедупликация в Note

При совпадении email или phone заявка пишется Note в ленту существующего Lead — без фрагментации истории клиента.

UTM и аналитический контекст

yamClientId, gid, utmSource/Medium/Campaign/LandingPage, referrer, siteSessionId; пишутся в Lead через hasAttribute + всегда в description.

Переносимость

Не добавляет полей в Lead, не меняет enum source, не трогает layout — работает одинаково на любой инсталляции.

Модуль BPM2B Web Form Receiver принимает формы со статических лендингов (типично — Astro) и создаёт Lead в платформе BPM2B. Из коробки — шесть слоёв защиты (Origin whitelist, honeypot, валидация, reCAPTCHA, rate limit, дедупликация), сохранение полного аналитического контекста и аккуратная работа с дубликатами без фрагментации истории клиента.

Основные функциональные возможности:

  • Два публичных endpoint без авторизации: POST /WebForm (приём заявки) и GET /WebFormConfig (публичная часть настроек капчи без секретного ключа); регистрируются с noAuth: true в routes.json.
  • Origin whitelist с масками: OriginMatcher сверяет HTTP-заголовок Origin со списком масок из metadata (app.webFormReceiver.allowedOriginPatterns); * в маске превращается в regex [^/]+ — не пропустит хитрый https://evil.com/?x=crmp.kz.
  • Honeypot и валидация: скрытое поле (по умолчанию website) отбрасывает заполненные ботами формы; обязательны email, sourceSiteCode, name.
  • reCAPTCHA через Integration: сущность Integration WebFormCaptcha хранит captchaType (none / recaptcha), siteKey, secretKey; verify через https://www.google.com/recaptcha/api/siteverify; HTTP-вызовы идут через ApiRequest из bpm2bApiLog для логирования.
  • Sliding-window rate limit: отдельная сущность WebFormRateLimit с составным индексом ipAddress + createdAt; параметры rateLimit.windowMinutes и rateLimit.maxRequests в metadata; ScheduledJob CleanupWebFormRateLimit ежедневно в 03:00 удаляет записи старше cleanupOlderThanHours.
  • Дедупликация без фрагментации: при совпадении emailAddress ИЛИ phoneNumber новая заявка не создаёт второй Lead — вместо этого публикуется Note (type=Post) в ленту существующего Lead с JSON-дампом payload.
  • Сохранение аналитического контекста: UTM-метки, yamClientId (Яндекс.Метрика), gid (GA-cookie), referrer, siteSessionId — пишутся в поля Lead через hasAttribute (если поле существует на конкретной инсталляции) и всегда сохраняются в description как JSON.
  • Переносимость: модуль не добавляет аналитические поля сам, не меняет enum Lead.source (всегда «Web Site») и не трогает layout — на чистой инсталляции аналитика просто не записывается, зато всегда лежит в description.

Модуль предназначен для случаев, когда лендинги живут отдельно от платформы (например, Astro-сайты на CDN), а заявки должны попадать в CRM как штатные Lead-ы — с защитой от ботов и накоплением аналитики. Зависит от bpm2bApiLog (логирование внешних HTTP-запросов к siteverify).

Совместимо с платформой версии 9.1.0+
Связаться

Готовы автоматизировать процессы?

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

Email
info@bpm2b.ru
Москва
+7 (499) 113-22-35
Россия
8 (800) 551-91-16
Компания
ООО «Адм Про»

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