При 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.







