Налаштування автоматичного імпорту лідів з Яндекс.Директ у Бітрікс24
Заявки з лід-форм Яндекс.Директа осідають в особистому кабінеті Директа або в Яндекс.Метриці — і залишаються там. Поки менеджер не зайде вручну та не перенесе дані в CRM, лід «висить» без обробки. Втрати очевидні: швидкість реакції падає, частина заявок губиться при ручному перенесенні. Автоматичний імпорт виключає людину з цього ланцюжка.
Механізм інтеграції
Яндекс.Директ надає два способи отримувати ліди: Leads API для лід-форм Директа та вебхук при налаштуванні лід-форми. Для Бітрікс24 використовуємо вебхук — Яндекс надсилає POST-запит на вказану URL одразу при заповненні форми.
Крок 1. В особистому кабінеті Директа (Інструменти → Лід-форми) у налаштуваннях форми вказується URL вебхука:
https://ваш-сервер.com/webhook/yandex-direct-leads
Крок 2. Обробник вебхука створює лід у Бітрікс24 через REST API:
// 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:
// 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());
}
Ідемпотентність критична — один і той самий лід не повинен потрапити в CRM двічі. Зберігання вже імпортованих ID у таблиці або Redis.
Розподіл лідів
Після створення ліда — автоматичне призначення відповідального через правила Бітрікс24 (роботи та тригери воронки) або через REST при створенні:
'ASSIGNED_BY_ID' => $this->getResponsibleManager($data['campaign_id']),
Маппінг кампанії Директа на менеджера зберігається у конфігураційному файлі або в користувацьких налаштуваннях у Бітрікс24.
Дедублікація
Якщо користувач заповнив форму двічі — лід створюється двічі. Базова дедублікація: перед створенням ліда перевіряємо наявність ліда з тим самим номером телефону за останні 24 години:
$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;
}
Склад робіт
- Налаштування вебхука в кабінеті Директа або Leads API (OAuth, polling)
- Розробка обробника: верифікація, маппінг полів, створення ліда в Б24
- Збереження UTM-міток та параметрів кампанії в користувацьких полях
- Дедублікація за телефоном/email
- Авторозподіл відповідальних
- Тестування на реальних формах, журналювання помилок
Терміни: 3–5 днів за наявної інфраструктури. 1–2 тижні з урахуванням налаштування користувацьких полів Б24 та правил розподілу.







