KeyCRM Form Catcher — заявки з будь-якого лендінга у KeyCRM
Безкоштовний form-catcher: будь-яка HTML-форма лендінга шле заявки у KeyCRM з UTM-мітками, а для WordPress у комплекті плагін для Contact Form 7 з журналом заявок. API-ключ схований на сервері, є honeypot, rate-limit і захист від дубля.
Що включено в ліцензії
| Функція | Free |
|---|---|
| Будь-яка 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 годин у робочий час.
Купівля модуля
—