CRM и интеграции · PHP / Лендинги

KeyCRM Form Catcher — заявки с любого лендинга в KeyCRM

Версия
v1.2.0
Совместимость
PHP 7.4+ (любой хостинг), любой HTML-лендинг, WordPress 6.2+ с Contact Form 7
Платформа
PHP / Лендинги
KeyCRM Form Catcher — заявки с любого лендинга в KeyCRM

Что внутри

  • Любая HTML-форма начинает слать заявки в KeyCRM
  • Готовый плагин для WordPress + Contact Form 7 в комплекте
  • API-ключ хранится на сервере, в браузер не попадает
  • Копия заявки на email и в Telegram
  • Автоматически передаются UTM-метки, товар и артикул
  • Дубль-клик не создаёт вторую заявку в CRM
  • Бесплатный

KeyCRM Form Catcher — лёгкий form-catcher для сайтов и лендингов: любая HTML-форма начинает слать заявки прямо в KeyCRM. Для статичного лендинга это три файла — keycrm-catcher.php (серверный relay, который прячет API-ключ), keycrm-core.php (ядро) и keycrm-forms.js (биндится к формам), без CMS, composer-зависимостей и jQuery. Для WordPress в комплекте идёт готовый плагин для Contact Form 7 с тем же ядром, настройками в админке и журналом заявок.

Инструмент полностью бесплатный. Код открыт на GitHub: github.com/catcodestudio/keycrm-form-catcher. Нужен только API-ключ из вашего кабинета KeyCRM и хостинг с PHP.

Как это выглядит для покупателя

Демо-форма заявки, подключённая к KeyCRM через Form Catcher
Обычная HTML-форма лендинга: имя, телефон, email, комментарий. Посетитель ничего не замечает — после отправки видит сообщение успеха или редирект на страницу благодарности, а заявка уже в KeyCRM вместе с UTM-метками и страницей, с которой пришла.

Как это работает — шаг за шагом

  1. Посетитель заполняет форму на лендинге — достаточно добавить форме атрибут data-keycrm, и keycrm-forms.js перехватит её сам. В WordPress ничего добавлять не надо: плагин слушает сабмиты Contact Form 7.
  2. JS собирает данные: поля формы плюс page_url, referrer и все UTM-метки — добавляются автоматически.
  3. Запрос идёт на серверный relay keycrm-catcher.php — API-ключ живёт только на сервере и никогда не светится во фронтенде.
  4. Relay проверяет заявку: honeypot против ботов, rate-limit по IP, проверка Origin, валидация (телефон или email — обязателен) и защита от двойного сабмита.
  5. Заявка создаётся в KeyCRM — как заказ (POST /order, работает сразу даже в триале) или как карточка лида в воронке (POST /pipelines/cards). Стандартные UTM попадают в аналитику KeyCRM, referrer и страница — в комментарий менеджеру.
  6. Посетитель видит результат: сообщение из data-success или редирект из data-redirect; на форме срабатывают события keycrm:success / keycrm:error — удобно вешать аналитику.
  7. Копия заявки — на email и в Telegram, чтобы менеджер увидел её, даже не заходя в CRM.

WordPress + Contact Form 7

В архиве есть папка wordpress/catcode-form-leads-to-keycrm — это обычный плагин: закиньте её в wp-content/plugins/ и активируйте. Он работает на том же ядре, но данные берёт из Contact Form 7 и не требует никаких правок форм.

Настройки плагина: API-ключ KeyCRM, режим, источник заявок, дубль на email
Настройки → KeyCRM Form Catcher: ключ, режим (заказ или карточка лида), источник заявок списком прямо из вашего KeyCRM, дубли на email и в Telegram.
Таблица форм Contact Form 7 с типом заявки для каждой формы
Каждая форма CF7 — отдельная строка: включается или нет и какой «тип заявки» поедет в CRM, письмо и Telegram. Так менеджер сразу видит, это обратный звонок или покупка в 1 клик.
Журнал заявок: что ушло в KeyCRM, на почту и в Telegram
Журнал заявок: номер созданного заказа в KeyCRM, статусы письма и Telegram, а повторный сабмит видно отдельной строкой «дубль — в CRM не отправлено».
  • Роли полей — по типам тегов CF7, поэтому работают автоназвания вроде text-32, tel-635, email-278, которые CF7 ставит сам.
  • Подписи полей берутся из самой формы — менеджер видит «Город: Львов», а не «your-city: Львов».
  • Товар и артикул подтягиваются из поля product-id / product-sku или со страницы товара WooCommerce, на которой стоит форма.
  • Журнал заявок в админке: что ушло в CRM, на почту и в Telegram.
  • Хук catcode_lead_captured — его слушает наш плагин Telegram-уведомлений и шлёт сообщение собственным шаблоном.

Сколько стоит

Бесплатно, код открытый. Скачивайте с GitHub или кнопкой на этой странице — без тарифов и лимитов на количество заявок со стороны скрипта.

Технические требования

  • PHP 7.4+ с расширением cURL — подойдёт любой хостинг
  • Любой HTML-лендинг — CMS не нужна
  • Для WordPress-плагина — WordPress 6.2+ и Contact Form 7
  • API-ключ KeyCRM — кабинет KeyCRM → Настройки → API
  • Для режима карточки лида — созданная воронка в KeyCRM (Лиды → Воронки) и её ID

Что под капотом

  • API-ключ только на сервере — фронтенд общается с relay, а не с KeyCRM напрямую; ключ невозможно вытащить из кода страницы.
  • Honeypot-поле: человек его не видит, бот заполняет. Непустое — тихий фейковый success, бот не узнает, что его поймали.
  • Rate-limit по IP — максимум 10 заявок с одного IP в час (настраивается константой), счётчики в системном temp.
  • Origin/CORS-проверка — впишите свои домены в KEYCRM_ALLOWED_ORIGINS, и relay будет отклонять запросы с чужих сайтов.
  • Защита от дубля — повторная заявка с тем же содержимым в течение 5 минут не создаёт вторую карточку в CRM и не шлёт второе письмо. В WordPress лок атомарный, поэтому даже несколько одновременных сабмитов дают ровно одну заявку. Если CRM ответила ошибкой, лок снимается — повторная попытка клиента не потеряется.
  • Relay принимает обычный POST (form-encoded или JSON) — слать можно не только через keycrm-forms.js, но и из кастомного fetch или любого другого кода.

Как установить

  1. Скачайте keycrm-form-catcher-1.2.0.zip и распакуйте.
  2. Для лендинга: закиньте keycrm-catcher.php, keycrm-core.php и keycrm-forms.js в корень сайта (или любую удобную папку).
  3. В keycrm-catcher.php впишите API-ключ в константу KEYCRM_API_KEY и свои домены в KEYCRM_ALLOWED_ORIGINS.
  4. Подключите <script src="/keycrm-forms.js"></script> и добавьте форме атрибут data-keycrm.
  5. Для WordPress: скопируйте папку wordpress/catcode-form-leads-to-keycrm в wp-content/plugins/, активируйте плагин и заполните «Настройки → KeyCRM Form Catcher».
  6. Отправьте тестовую заявку — она появится в KeyCRM. Рабочий пример для лендинга есть в файле example.html.

История версий

1.2.0 — август 2026
Защита от двойного сабмита (в WordPress — атомарный лок, поэтому даже параллельные запросы дают одну заявку; при ошибке CRM лок снимается). Плагин не шлёт заявку в CRM, если сабмит CF7 прервал другой плагин. Подписи полей берутся из формы, а не из технических названий. Понятная ошибка, когда API-ключ не задан. Ядро вынесено в отдельный keycrm-core.php, общий для relay и плагина. Удаление плагина убирает таблицу и опции. Англоязычный интерфейс с украинским переводом.
1.1.0 — июль 2026
Дубль заявки на email и в Telegram, тип заявки для каждой формы, артикул товара, плагин для WordPress + Contact Form 7 с журналом заявок в админке.
1.0.0 — июль 2026
Первый публичный релиз: relay + JS-виджет, два режима (заказ / карточка лида), автосбор UTM, honeypot, rate-limit по IP, Origin/CORS-проверка, события keycrm:success / keycrm:error, пример example.html.

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

Надо ли переделывать мою форму?

Нет. На лендинге достаточно добавить атрибут data-keycrm существующей форме — скрипт сам соберёт поля name, phone, email, comment, product и любые utm_*. В WordPress формы Contact Form 7 работают как есть.

Чем отличаются режимы «заказ» и «карточка лида»?

Режим order (по умолчанию) создаёт заказ и работает сразу без настроек в CRM — источник создастся автоматически. Режим card создаёт карточку лида в воронке — нужно создать воронку в KeyCRM и вписать её ID.

Не украдут ли мой API-ключ?

Нет. Ключ хранится только на сервере — в PHP-файле relay или в настройках WordPress. В браузер он не попадает никогда.

Что со спамом от ботов?

Три уровня защиты: honeypot-поле (бот получает фейковый success), rate-limit по IP и проверка Origin. Плюс валидация: заявка без телефона или email не принимается. В WordPress антиспам остаётся за Contact Form 7 и Akismet.

А если клиент дважды нажмёт кнопку?

Вторая заявка распознаётся как дубль: CRM не дёргается, второе письмо не идёт, в журнале строка помечена «дубль». Окно — 5 минут.

Можно ли слать заявки из Contact Form 7 или собственного JS?

Да. Для Contact Form 7 в комплекте есть готовый плагин. Relay также принимает обычный POST (form-encoded или JSON) из любого источника.

Увижу ли я, откуда пришла заявка?

Да. UTM-метки передаются в поле marketing (видно в аналитике KeyCRM), а страница и referrer добавляются в комментарий менеджеру.

Вопросы по модулю?

Пишите в Telegram — ответим в течение рабочего дня. Поможем с настройкой, совместимостью и активацией ключа.

@catcode_support

Не тот вариант, что искали?

Мы делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.

Заказать кастомный модуль