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.
Как это выглядит для покупателя

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



- Роли полей — по типам тегов 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 или любого другого кода.
Как установить
- Скачайте
keycrm-form-catcher-1.2.0.zipи распакуйте. - Для лендинга: закиньте
keycrm-catcher.php,keycrm-core.phpиkeycrm-forms.jsв корень сайта (или любую удобную папку). - В
keycrm-catcher.phpвпишите API-ключ в константуKEYCRM_API_KEYи свои домены вKEYCRM_ALLOWED_ORIGINS. - Подключите
<script src="/keycrm-forms.js"></script>и добавьте форме атрибутdata-keycrm. - Для WordPress: скопируйте папку
wordpress/catcode-form-leads-to-keycrmвwp-content/plugins/, активируйте плагин и заполните «Настройки → KeyCRM Form Catcher». - Отправьте тестовую заявку — она появится в 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 — ответим в течение рабочего дня. Поможем с настройкой, совместимостью и активацией ключа.
Пока ни одного отзыва. Будь первым — ниже.
Оставить отзыв
Отзыв модерируется перед публикацией — обычно это занимает до 24 часов.
Пока вопросов нет. Спроси — мы ответим в течение 24 часов.
Задать вопрос
Обычно отвечаем в течение 24 часов в рабочее время.
Покупка модуля
—