Настройка автоматического импорта лидов из Яндекс.Директ в Битрикс24
Заявки из лид-форм Яндекс.Директа оседают в личном кабинете Директа или в Яндекс.Метрике — и там остаются. Пока менеджер не зайдёт вручную и не перенесёт данные в CRM, лид «висит» без обработки. Потери очевидны: скорость реакции падает, часть заявок теряется при ручном переносе. Автоматический импорт устраняет человека из этой цепочки.
Механизм интеграции
Яндекс.Директ предоставляет два способа получать лиды: Leads API для лид-форм Директа и вебхук при настройке лид-формы. Для Битрикс24 используем вебхук — Яндекс отправляет POST-запрос на указанный URL сразу при заполнении формы.
Шаг 1. В личном кабинете Директа (Инструменты → Лид-формы) в настройках формы указывается URL вебхука:
https://ваш-сервер.ru/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 и правил распределения.







