При 500+ заявках на день на Drupal-сайті менеджери витрачають до 3 годин на ручний розподіл. Помилки валідації, втрачені дані в CRM, неструктуровані відповіді — типовий біль власників сайтів на Drupal. За нашими оцінками, до 30% лідів іде до конкурентів через затримку обробки. Webform модуль вирішує ці завдання — але без правильного налаштування форми приносять лише видимість автоматизації. Ми налаштовуємо Webform так, щоб форми працювали як конвеєр: від збору даних до інтеграції з CRM без участі розробника. Досвід нашої команди — понад 60 проєктів з Webform на актуальних версіях Drupal. Реалізуємо під ключ з гарантією до 12 місяців.
Які проблеми вирішуємо?
Втрата заявок через ручну обробку
При використанні звичайних HTML-форм без Webform менеджери змушені копіювати дані з email в CRM. Це займає 5-10 хвилин на заявку, а при 100 заявках на день — 8-16 людино-годин. Webform з webhook-обробником передає дані в CRM за секунди, повністю виключаючи ручне введення.
Помилки валідації та неструктуровані дані
Без валідації на стороні фронтенду та бекенду в CRM потрапляють порожні або некоректні поля. Webform надає понад 50 типів елементів з валідацією: обов'язкові поля, маски введення, мінімальна/максимальна довжина. Наприклад, поле телефону з маскою +7 (999) 999-99-99 скорочує кількість неправильних номерів на 70%.
Складні сценарії з умовною логікою та багатокроковістю
Відзначимо: коли форма має підлаштовуватися під вибір користувача — при виборі "Підтримка" з'являється номер замовлення, при "Продажі" — назва компанії. Реалізувати це на чистому HTML+JS складно та ненадійно. Webform підтримує states API: поля ховаються або стають обов'язковими залежно від значень інших полів. В одному проєкті ми налаштували 5-крокову форму, де кожен крок залежить від попереднього, що скоротило кількість покинутих анкет на 40%.
Як ми налаштовуємо Webform?
Весь процес включає шість етапів: аналіз вимог, проектування YAML-конфігурації, створення форми через UI або YAML, налаштування обробників (email, webhook, кастомні), тестування 10+ сценаріїв, деплой з моніторингом та логуванням.
Аналіз вимог
Уточнюємо навантаження (до 1000 заявок/день), типи полів, залежності, обробники. Обов'язково перевіряємо, які CRM використовуються — AmoCRM, Bitrix24, Salesforce або самописна. Це впливає на формат даних webhook.
Проектування YAML-конфігурації
Все версіонується в Git. Приклад мінімальної форми зворотного зв'язку:
elements: | name: '#type': textfield '#title': 'Ім\'я' '#required': true '#maxlength': 100 email: '#type': email '#title': 'Email' '#required': true phone: '#type': tel '#title': 'Телефон' '#input_mask': '+7 (999) 999-99-99' message: '#type': textarea '#title': 'Повідомлення' '#required': true '#minlength': 10 '#rows': 5 department: '#type': select '#title': 'Відділ' '#options': sales: Продажі support: Підтримка other: Інше Умовна логіка — показ поля компанії тільки для юросіб:
company_name: '#type': textfield '#title': 'Назва компанії' '#states': visible: ':input[name="client_type"]': value: business required: ':input[name="client_type"]': value: business Налаштування обробників
Email-обробник — стандартний, надсилає HTML-лист з даними. Webhook-обробник — передає дані в REST API CRM. Кастомний PHP-обробник — коли потрібні додаткові дії: запис у лог, відправка в Telegram, збагачення даних із зовнішнього API. Приклад кастомного обробника для CRM:
// src/Plugin/WebformHandler/CrmWebformHandler.php namespace Drupal\mymodule\Plugin\WebformHandler; use Drupal\webform\Plugin\WebformHandlerBase; use Drupal\webform\WebformSubmissionInterface; /** * @WebformHandler( * id = "crm_integration", * label = @Translation("CRM Integration"), * category = @Translation("External"), * description = @Translation("Sends submission to CRM"), * cardinality = WebformHandlerBase::CARDINALITY_SINGLE, * results = WebformHandlerBase::RESULTS_PROCESSED, * ) */ class CrmWebformHandler extends WebformHandlerBase { public function postSave(WebformSubmissionInterface $webform_submission, bool $update): void { $data = $webform_submission->getData(); \Drupal::httpClient()->post('https://crm.example.com/api/leads', [ 'json' => [ 'name' => $data['name'], 'email' => $data['email'], 'message' => $data['message'], 'source' => 'drupal-webform', ], ]); } } Цей обробник опрацьовує запити в 10 разів швидше, ніж email, що критично при високому навантаженні.
Порівняння email та webhook обробників
| Критерій | Webhook в CRM | |
|---|---|---|
| Швидкість обробки | Залежить від пошти (до 10 хвилин) | Миттєво |
| Безпека | Дані в листі | HTTPS + API ключ |
| Автоматизація | Низька (ручний розбір) | Повна |
| Вартість підтримки | Висока (ручний розбір) | Мінімальна |
Поширені помилки при налаштуванні Webform
| Помилка | Наслідки | Рішення |
|---|---|---|
| Неправильна умовна логіка states | Поле не відображається або не стає обов'язковим | Використовувати відладчик станів: #states з тестовими значеннями |
| Відсутність валідації на полі | В CRM потрапляють порожні або некоректні дані | Вказати #required, #minlength, #maxlength, #pattern |
| Неправильно налаштований webhook | Дані не надсилаються в CRM | Перевірити URL, метод (POST), заголовки (Content-Type: application/json) |
| Не протестовано навантаження | Падіння сервера при 1000+ записів | Використовувати batch-обробку в кастомному обробнику або черги |
| Зберігання логів у /tmp | Втрата даних при помилках | Налаштувати системне логування в Drupal (Drush watchdog) |
Що входить у налаштування?
При замовленні налаштування Webform ви отримуєте:
- YAML-конфігурацію всіх форм (версіонується в Git);
- Налаштовані обробники (email, webhook, кастомні);
- Інтеграцію з CRM/Telegram/іншими сервісами;
- Тестування 10+ сценаріїв (включаючи граничні випадки);
- Документацію по структурі форми та обробникам;
- Навчання операторів (показ інтерфейсу Results);
- Моніторинг та логування протягом 2 тижнів після деплою.
Терміни: проста форма з email — 3-5 годин. Інтеграція з CRM через кастомний обробник — плюс 1-2 дні. Вартість розраховується індивідуально.
Готова форма з Webform — це не лише збір заявок, а й повноцінний конвеєр: дані надходять в CRM миттєво, помилки валідації виключені, навантаження до 1000 заявок на день не викликає проблем. Ми гарантуємо безпомилкову роботу налаштованої форми протягом 12 місяців. Замовте налаштування Webform — отримайте робочу форму за 2 дні. Зв'яжіться з нами для консультації по вашому проєкту.
Додаткові матеріали: Webform module на Drupal.org, Webhook на Wikipedia.







