Налаштування автоматичного імпорту лідів з Яндекс.Директ у Бітрікс24

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування автоматичного імпорту лідів з Яндекс.Директ у Бітрікс24
Проста
~1 робочий день
Часті питання

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування автоматичного імпорту лідів з Яндекс.Директ у Бітрікс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 та правил розподілу.