Настройка автоматического импорта лидов из Яндекс.Директ в Битрикс24
Мы постоянно сталкиваемся с ситуацией, когда заявки из лид-форм Яндекс.Директа остаются в личном кабинете рекламного кабинета или в Метрике. Менеджеру приходится вручную переносить данные в CRM — лиды «виснут» часами, часть теряется при копировании. Автоматический импорт через вебхук или Leads API устраняет человека из цепочки и сокращает время реакции до секунд.
Работа вебхука из Яндекс.Директ
Яндекс.Директ отправляет 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 или таблице.
// 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.
$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 недель. Стоимость рассчитывается индивидуально после анализа ваших форм — свяжитесь для оценки проекта. Наш опыт: более 20 интеграций с Яндекс.Директом, 5 лет на рынке. Гарантируем отсутствие дублей и потерь лидов.
Получите консультацию по автоматизации импорта — пишите, и мы настроим бесшовную передачу заявок в Битрикс24.







