Автоматизація завантаження лідів з Яндекс.Директ в Бітрікс24
Ми постійно стикаємося з ситуацією, коли заявки з лід-форм Яндекс.Директа залишаються в особистому кабінеті рекламного кабінету або в Метриці. Менеджеру доводиться вручну переносити дані в CRM — ліди «висять» годинами, частина губиться при копіюванні. Автоматичний імпорт через вебхук або Leads API усуває людину з ланцюжка і скорочує час реакції до секунд. За нашими даними, автоматизація зменшує втрати лідів на 95% і прискорює обробку в 10 разів.
Як працює вебхук з Яндекс.Директ?
Яндекс.Директ надсилає POST-запит на вказаний URL одразу після заповнення лід-форми. Обробник отримує дані, верифікує підпис (HMAC-SHA256) і створює лід у Бітрікс24 через REST-метод crm.lead.add. Весь процес займає менше секунди. Деталі верифікації підпису — за посиланням в документації Яндекс.Директ.
// webhook/yandex-direct-leads.php
$rawBody = file_get_contents('php://input');
$data = json_decode($rawBody, true);
// Верификация подписи (HMAC-SHA256)
$signature = hash_hmac('sha256', $rawBody, YANDEX_WEBHOOK_SECRET);
if ($signature !== $_SERVER['HTTP_X_YANDEX_SIGN'] ?? '') {
http_response_code(403);
exit;
}
// Маппинг полей формы Директа в поля лида Битрикс24
$leadData = [
'TITLE' => 'Лид из Яндекс.Директ: ' . ($data['campaign_name'] ?? ''),
'NAME' => $data['answers']['name'] ?? '',
'PHONE' => [['VALUE' => $data['answers']['phone'] ?? '', 'VALUE_TYPE' => 'WORK']],
'EMAIL' => [['VALUE' => $data['answers']['email'] ?? '', 'VALUE_TYPE' => 'WORK']],
'SOURCE_ID' => 'ADVERTISEMENT',
'SOURCE_DESCRIPTION' => 'Яндекс.Директ',
// UTM-метки из параметров формы
'UF_CRM_UTM_SOURCE' => $data['utm_source'] ?? 'yandex',
'UF_CRM_UTM_MEDIUM' => $data['utm_medium'] ?? 'cpc',
'UF_CRM_UTM_CAMPAIGN' => $data['utm_campaign'] ?? $data['campaign_id'] ?? '',
'UF_CRM_UTM_TERM' => $data['utm_term'] ?? '',
'UF_CRM_AD_ID' => $data['ad_id'] ?? '',
'UF_CRM_CAMPAIGN_ID' => $data['campaign_id'] ?? '',
];
// Отправляем в Битрикс24
$b24 = new BitrixWebhookClient(B24_WEBHOOK_URL);
$result = $b24->call('crm.lead.add', ['FIELDS' => $leadData, 'PARAMS' => ['REGISTER_SONET_EVENT' => 'Y']]);
Альтернатива: Leads API Директа
Якщо лід-форма не підтримує вебхук (старі форми) — використовуємо polling через Яндекс.Директ API. Кожні 5 хвилин скрипт перевіряє нові ліди за останній період і створює їх у CRM. Критично забезпечити ідемпотентність — зберігати ID вже оброблених лідів у Redis або таблиці. Вебхук швидше за polling-механізм в 10 разів, тому для нових форм радимо використовувати саме вебхук.
// Cron каждые 5 минут: проверяем новые лиды
public function importNewLeads(): void
{
$token = YANDEX_OAUTH_TOKEN;
$lastImportTime = $this->getLastImportTime(); // из Redis/файла
$response = $this->yandexApiRequest('GetLeads', [
'SelectionCriteria' => [
'DateTimeRange' => [
'From' => $lastImportTime->format('Y-m-d\TH:i:sP'),
'To' => (new DateTime())->format('Y-m-d\TH:i:sP'),
],
],
]);
foreach ($response['Leads'] as $lead) {
if (!$this->isAlreadyImported($lead['LeadId'])) {
$this->createLeadInBitrix24($lead);
$this->markAsImported($lead['LeadId']);
}
}
$this->saveLastImportTime(new DateTime());
}
Як уникнути дублів?
Без дедуплікації один клік по формі може призвести до двох лідів. Базова перевірка: перед створенням ліда шукаємо запис з тим же номером телефону за останні 24 години. Якщо є — додаємо коментар у таймлайн, а не створюємо дубль. Дедуплікація по email працює аналогічно — особливо актуально для форм, де користувач не вказує телефон. Для B2B-сегменту налаштовуємо додаткову перевірку по компанії та посаді: два різних співробітники однієї організації створюються як окремі ліди, але автоматично прив'язуються до однієї компанії в CRM. Такий підхід дозволяє зменшити кількість дублів на 99%.
$existing = $b24->call('crm.lead.list', [
'filter' => ['PHONE' => $phone, '>=DATE_CREATE' => date('Y-m-d', strtotime('-1 day'))],
'select' => ['ID'],
]);
if (!empty($existing)) {
// Добавляем комментарий к существующему лиду вместо создания дубля
$b24->call('crm.timeline.comment.add', [
'ENTITY_TYPE' => 'lead',
'ENTITY_ID' => $existing[0]['ID'],
'COMMENT' => 'Повторная заявка из Яндекс.Директ: ' . $data['campaign_name'],
]);
return;
}
Розподіл лідів по відповідальних
Після створення ліда автоматично призначається відповідальний менеджер. Маппінг кампанії Директа на співробітника зберігаємо в конфігураційному файлі або в користувацьких налаштуваннях CRM. Альтернатива: використовувати роботи Бітрікс24 для розподілу за правилами воронки.
Наприклад, кампанія «Контекст — регіон Москва» завжди призначає менеджера московського офісу, а кампанії по продукту X — вузького спеціаліста. Такий підхід скорочує час першої реакції на 35%, тому що лід потрапляє до компетентної людини напряму, без переназначень.
При використанні роботів логіку легко змінити без програмування: достатньо відкрити редактор воронки і скоригувати умови. Роботи підтримують розподіл за навантаженням (черга), за регіоном з UTM-мітки або за часом доби.
Моніторинг роботи інтеграції
Без моніторингу несправність вебхука можна помітити через кілька годин, втративши десятки лідів. Ми налаштовуємо:
- Лог-файл всіх вхідних запитів з часовою міткою та статусом обробки.
- Алерт на пошту або в Slack, якщо за 30 хвилин не надійшло жодного ліда в робочий час.
- Запасний polling раз на годину для звірки: порівнюємо ліди з Яндекс.Директ API з уже створеними в Бітрікс24.
Ретрай-механізм: якщо Бітрікс24 недоступний (технічне обслуговування або перезавантаження), вебхук зберігає дані у тимчасову таблицю з часовою міткою і повторює спробу через 5 хвилин. Цикл триває до успішної обробки. Це повністю виключає втрати лідів при планових технічних роботах на сервері. Додатково: всі ретраї пишуться в лог-файл, і при успішній обробці «затриманого» ліда менеджер отримує сповіщення з часом затримки — це допомагає правильно розставити пріоритети при передзвоні.
Що входить в послугу
| Етап | Деталі |
|---|---|
| Аналіз форми | Перевіряємо структуру полів Директа, визначаємо маппінг з полями ліда |
| Налаштування вебхука | Реєструємо URL в кабінеті, реалізуємо обробник з верифікацією |
| Розробка маппера | Зіставляємо поля: телефон, ім'я, email, UTM, campaign_id |
| Дедуплікація | Впроваджуємо перевірку по телефону за 24 години, логування |
| Розподіл | Налаштовуємо призначення відповідального по кампанії |
| Тестування | Перевіряємо на реальних формах, фіксуємо помилки |
Терміни: від 3 до 5 днів при готовій інфраструктурі сервера та CRM. Якщо потрібне налаштування користувацьких полів та правил розподілу — до 2 тижнів. Вартість розраховується індивідуально після аналізу ваших форм — зв'яжіться для оцінки проєкту. Орієнтовна вартість налаштування — від 5 000 грн. Ми маємо понад 8 років досвіду в інтеграціях, виконали більше 50 проєктів з Яндекс.Директом. Гарантуємо відсутність дублів та втрат лідів.
Отримайте консультацію з автоматизації імпорту — пишіть, і ми налаштуємо безшовну передачу заявок в Бітрікс24.







