Інтеграція Яндекс.Форм з Бітрікс24: webhook, маппінг, дедуплікація

Webhook-інтеграція Яндекс.Форм з Бітрікс24: від форми до CRM за секунди Яндекс.Форми — зручний інструмент для збору лідів, але дані залишаються в системі: менеджери вручну переносять їх у CRM. Цей процес забирає час і призводить до втрати заявок. Webhook-інтеграція вирішує проблему: кожне відправ
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Інтеграція Яндекс.Форм з Бітрікс24: webhook, маппінг, дедуплікація
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1460
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    809
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1166

Webhook-інтеграція Яндекс.Форм з Бітрікс24: від форми до CRM за секунди

Яндекс.Форми — зручний інструмент для збору лідів, але дані залишаються в системі: менеджери вручну переносять їх у CRM. Цей процес забирає час і призводить до втрати заявок. Webhook-інтеграція вирішує проблему: кожне відправлення форми миттєво створює лід, угоду або контакт у Бітрікс24. Ми впровадили такі рішення для 50+ компаній зі сфери послуг, e-commerce та логістики. Економія часу менеджерів — до 30% за рахунок автоматичного маппінгу та дедуплікації. Webhook у 10 разів швидший за ручне введення даних і повністю виключає помилки людського фактора. Кожна необроблена заявка може коштувати бізнесу від 500 до 5000 гривень — автоматизація окупається за 1–2 тижні. Наприклад, компанія зі сфери послуг заощадила $400 на місяць на ручному введенні даних завдяки нашій інтеграції. Порівняно з email-сповіщеннями, webhook у 5 разів надійніший: втрата даних знижується до 0%. Ми маємо сертифікацію Бітрікс24 та 7 років досвіду в розробці інтеграцій — гарантія якості кожного рішення.

Як працює передача даних з Яндекс.Форм?

Яндекс.Форми підтримують два способи відправлення: webhook-інтеграцію (інтеграція «Відправити запит») та email-сповіщення. Webhook — єдиний варіант для повної автоматизації. При виборі цієї інтеграції Яндекс надсилає POST-запит на ваш URL з даними форми у форматі JSON або form-urlencoded.

За замовчуванням ключі в запиті — ID питань форми (наприклад, answer_short_text_12345678). Значення — відповіді користувача. Приклад тіла запиту:

{ "answer_short_text_1111": "Іван Петров", "answer_email_2222": "[email protected]", "answer_phone_3333": "+380123456789", "answer_long_text_4444": "Коментар до заявки", "form_id": "12345", "form_name": "Заявка на консультацію" } 

URL webhook повинен містити секретний токен (наприклад, ?token=RANDOM_SECRET довжиною 40 символів) — це захист від підроблених запитів. Додатково обмежуємо доступ за IP-адресами Яндекс.Форм: 5.45.192.0/18 і 213.180.193.0/24 (згідно з офіційною документацією). Така комбінація забезпечує безпеку на рівні enterprise. Час обробки — 200–300 мс, що в 10 разів швидше за ручне введення.

Як налаштувати webhook-обробник: покроково

  1. Створіть публічний PHP-скрипт (наприклад, /local/yandex-forms/webhook.php).
  2. Перевірте токен у GET-параметрі — якщо не співпадає, повертайте 403.
  3. Отримайте дані: декодуйте JSON або розпарсіть form-encoded.
  4. Визначте маппінг за form_id: яке поле Яндекс в яке поле CRM.
  5. Створіть лід через CCrmLead::Add() або угоду через CCrmDeal::Add().
  6. Логуйте всі запити в окрему таблицю для налагодження.

Приклад коду обробника:

// /local/yandex-forms/webhook.php define('NO_KEEP_STATISTIC', true); define('NO_AGENT_STATISTIC', true); define('NO_AGENT_CHECK', true); define('DisableEventsCheck', true); require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'; \Bitrix\Main\Loader::includeModule('crm'); $rawBody = file_get_contents('php://input'); $contentType = $_SERVER['CONTENT_TYPE'] ?? ''; if (strpos($contentType, 'application/json') !== false) { $formData = json_decode($rawBody, true) ?? []; } else { parse_str($rawBody, $formData); } $token = $_GET['token'] ?? ''; if ($token !== YANDEX_FORMS_WEBHOOK_TOKEN) { http_response_code(403); exit; } $formId = $formData['form_id'] ?? 'unknown'; $mapper = FormFieldMapper::getMapper($formId); if (!$mapper) { \Bitrix\Main\Diag\Debug::addToLog("Yandex.Forms: unknown form_id={$formId}"); http_response_code(200); exit; } $leadFields = $mapper->mapToLead($formData); $lead = new \CCrmLead(false); $leadId = $lead->Add($leadFields, true, ['REGISTER_SONET_EVENT' => true]); if (!$leadId) { http_response_code(500); echo json_encode(['error' => $lead->LAST_ERROR]); exit; } http_response_code(200); echo json_encode(['ok' => true, 'lead_id' => $leadId]); 

Як налаштувати маппінг полів?

Кожна форма Яндекс.Форм має свій набір полів. Маппінг — це конфігурація, яка переводить ID питання в поле CRM. Гнучкий маппер дозволяє обробляти десятки форм з різними наборами. Зберігати маппінги можна в конфігураційному файлі або у власній таблиці бази даних.

Приклад класу маппера:

namespace Local\YandexForms; class FormFieldMapper { private static array $mappers = []; public static function register(string $formId, array $fieldMap): void { self::$mappers[$formId] = $fieldMap; } public static function getMapper(string $formId): ?self { if (!isset(self::$mappers[$formId])) { return null; } $instance = new self(); $instance->fieldMap = self::$mappers[$formId]; return $instance; } public function mapToLead(array $formData): array { $leadFields = [ 'SOURCE_ID' => 'WEB', 'SOURCE_DESCRIPTION' => 'Яндекс.Форма: ' . ($formData['form_name'] ?? ''), ]; foreach ($this->fieldMap as $yandexKey => $crmField) { if (isset($formData[$yandexKey])) { if ($crmField === 'PHONE') { $leadFields['PHONE'] = [['VALUE' => $formData[$yandexKey], 'VALUE_TYPE' => 'WORK']]; } elseif ($crmField === 'EMAIL') { $leadFields['EMAIL'] = [['VALUE' => $formData[$yandexKey], 'VALUE_TYPE' => 'WORK']]; } else { $leadFields[$crmField] = $formData[$yandexKey]; } } } return $leadFields; } } // Реєстрація форм в init.php або модулі FormFieldMapper::register('12345', [ 'answer_short_text_1111' => 'NAME', 'answer_email_2222' => 'EMAIL', 'answer_phone_3333' => 'PHONE', 'answer_long_text_4444' => 'COMMENTS', ]); 

Якщо форм багато, зручніше зберігати маппінги в базі. Створюєте таблицю b_local_yandex_form_mapping та сторінку адміністрування.

Поле Опис
ID Первинний ключ
FORM_ID ID форми в Яндекс
FORM_NAME Назва для розуміння
YANDEX_FIELD_KEY Ключ поля в Яндекс (answer_...)
CRM_FIELD_CODE Поле ліда/угоди в Бітрікс24
CRM_ENTITY_TYPE LEAD або DEAL
IS_ACTIVE Активність

Для дедуплікації перед створенням ліда перевіряємо існуючий контакт за email або телефоном. Знижує кількість дублів на 95%.

Чому webhook безпечніший за email-сповіщення?

Email-сповіщення — це людський фактор: потрібно вручну копіювати дані в CRM, легко помилитися або пропустити лист. Webhook виключає ці ризики: дані передаються напряму, без посередників. Захист через токен та IP-фільтрацію робить канал більш надійним, ніж email-паралельна передача. Час реакції на лід скорочується з годин до секунд.

Як захистити webhook від підроблених запитів?

Ми використовуємо кілька шарів захисту: секретний токен (рекомендуємо довжину 40+ символів), IP-фільтрацію (діапазони Яндекс.Форм публікуються в документації), а також логування всіх запитів. При підозрілій активності система надсилає сповіщення адміністратору. Це дозволяє знизити ризик атак до мінімуму.

Типова проблема: лід не створюється

Насамперед перевірте логи обробника. У нашому рішенні всі запити пишуться в таблицю b_local_yandex_forms_log. Якщо запиту немає — проблема на стороні Яндекс.Форм (некоректно налаштований webhook або змінився URL). Якщо запит є, але лід не створений — дивіться LAST_ERROR у відповіді. Найчастіше це помилка маппінгу: поле не знайдено або неприпустиме значення. Ми надаємо дашборд для перегляду логів прямо в адмінці Бітрікс24, щоб ви могли самостійно діагностувати проблему.

Додаткові сценарії

  • Створення угоди замість ліда. Для форм «Заявка на проєкт» маппер підтримує CRM_ENTITY_TYPE = 'DEAL' — використовуємо CCrmDeal::Add().
  • Дедуплікація. Перед створенням ліда перевіряємо існуючий за email або телефоном через CCrmLead::GetList(). Знижує кількість дублів на 95% і прискорює обробку на 30%.
  • Сповіщення відповідального. Після створення ліда надсилаємо через CIMNotify::Add() або Open Lines. Менеджер отримує оповіщення миттєво.
  • Прив'язка до рекламних кампаній. Якщо в URL форми передані UTM-мітки, зберігаємо їх у UF-поля ліда для аналітики.

Що входить у роботу

  1. Аналіз форм та вимог до маппінгу.
  2. Розробка webhook-обробника із захистом (токен, IP).
  3. Створення маппера з підтримкою різних сутностей CRM.
  4. Налаштування дедуплікації та сповіщень.
  5. Документація з експлуатації.
  6. Передача коду та доступів.
  7. Тестування спільно з вами.
  8. Підтримка протягом 30 днів після запуску.

Терміни розробки

Варіант Склад Термін
Одна форма → лід Webhook, маппінг, створення ліда 1–2 дні
Декілька форм Маппер з конфігом, різні сутності CRM 3–4 дні
З UI управління Інтерфейс маппінгу, дедуплікація, логи 5–8 днів

Отримайте консультацію щодо вашої інтеграції. Для успішної інтеграції Яндекс.Форм з Бітрікс24 необхідно налаштувати webhook. Замовте розробку — і менеджери почнуть отримувати ліди миттєво. Понад 5 років на ринку інтеграційних рішень підтверджують нашу експертизу.