Зв'язатись
CRM та інтеграції · PHP / Лендінги

KeyCRM Form Catcher — заявки з будь-якого лендінга у KeyCRM

Безкоштовний form-catcher: будь-яка HTML-форма лендінга шле заявки у KeyCRM з UTM-мітками, а для WordPress у комплекті плагін для Contact Form 7 з журналом заявок. API-ключ схований на сервері, є honeypot, rate-limit і захист від дубля.

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

Що включено в ліцензії

Функція 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.

Як це виглядає для покупця

Демо-форма заявки, підключена до 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. Розкажіть про задачу — підготуємо оцінку.

Замовити кастомний модуль