Настройка автоматического импорта лидов из VK Ads в Битрикс24

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка автоматического импорта лидов из VK Ads в Битрикс24
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка автоматического импорта лидов из VK Ads в Битрикс24

VK Lead Ads — основной инструмент лидогенерации ВКонтакте для B2C-сегмента. В отличие от Facebook, VK предоставляет несколько механизмов получения лидов: вебхуки через VK Callback API, Leads API для опроса, и прямую интеграцию через сервис VK Мини-приложений. Для автоматического попадания лидов в Битрикс24 оптимален вебхук через Callback API.

VK Callback API для лид-форм

В настройках сообщества ВКонтакте: «Управление → Работа с API → Callback API» — добавляется сервер с URL обработчика.

Верификация сервера:

$data = json_decode(file_get_contents('php://input'), true);

// Подтверждение сервера
if ($data['type'] === 'confirmation') {
    echo VK_CONFIRMATION_STRING; // строка из настроек Callback API
    exit;
}

// Верификация подписи
if ($data['secret'] !== VK_CALLBACK_SECRET) {
    http_response_code(403);
    exit;
}

Обработка нового лида (событие lead_forms_new):

if ($data['type'] === 'lead_forms_new') {
    $lead = $data['object'];

    $leadId   = $lead['lead_id'];
    $formId   = $lead['form_id'];
    $groupId  = $lead['group_id'];
    $userId   = $lead['user_id'];
    $adId     = $lead['ad_id']       ?? '';
    $utmData  = $lead['utm']         ?? [];

    // Ответы на поля формы
    $answers = $lead['answers'] ?? [];
    $fields  = [];
    foreach ($answers as $answer) {
        $fields[$answer['key']] = $answer['answer'] ?? '';
    }

    // Создаём лид в Битрикс24
    $this->createBitrix24Lead($leadId, $formId, $fields, $utmData, $adId);

    echo 'ok'; // VK ожидает строку 'ok' в ответе
    exit;
}

Получение полных данных через Leads API

Callback API для лид-форм передаёт ответы пользователя напрямую в answers. Однако для получения данных о самом пользователе (имя, телефон из профиля, если он дал разрешение) — дополнительный запрос к VK API:

public function enrichLeadWithUserData(int $userId, string $accessToken): array
{
    $response = $this->vkApi->call('users.get', [
        'user_ids' => $userId,
        'fields'   => 'photo_100,city',
    ]);

    $user = $response['response'][0] ?? [];
    return [
        'first_name' => $user['first_name'] ?? '',
        'last_name'  => $user['last_name']  ?? '',
        'vk_profile' => "https://vk.com/id{$userId}",
    ];
}

Маппинг полей VK Lead Forms в Битрикс24

VK использует стандартные ключи для типовых полей: first, last, name, phone, email. Кастомные вопросы имеют произвольные ключи, заданные при создании формы.

public function createBitrix24Lead(
    string $vkLeadId,
    int    $formId,
    array  $fields,
    array  $utm,
    string $adId
): void {
    // Стандартные поля
    $name  = trim(($fields['first'] ?? '') . ' ' . ($fields['last'] ?? ''))
          ?: ($fields['name'] ?? 'Лид из VK');
    $phone = $fields['phone'] ?? '';
    $email = $fields['email'] ?? '';

    $b24Fields = [
        'TITLE'             => 'VK Lead Ads: ' . date('d.m.Y H:i'),
        'NAME'              => $name,
        'PHONE'             => [['VALUE' => $phone, 'VALUE_TYPE' => 'MOBILE']],
        'EMAIL'             => [['VALUE' => $email, 'VALUE_TYPE' => 'WORK']],
        'SOURCE_ID'         => 'ADVERTISING',
        'SOURCE_DESCRIPTION' => 'VK Lead Ads',
        'UF_CRM_VK_LEAD_ID' => $vkLeadId,
        'UF_CRM_VK_FORM_ID' => $formId,
        'UF_CRM_VK_AD_ID'   => $adId,
        'UF_CRM_UTM_SOURCE'   => $utm['source']   ?? 'vk',
        'UF_CRM_UTM_CAMPAIGN' => $utm['campaign'] ?? '',
        'UF_CRM_UTM_MEDIUM'   => $utm['medium']   ?? 'cpc',
    ];

    // Кастомные поля формы — в комментарий
    $customFields = array_diff_key($fields, array_flip(['first','last','name','phone','email']));
    if (!empty($customFields)) {
        $b24Fields['COMMENTS'] = implode("\n", array_map(
            fn($k, $v) => "{$k}: {$v}",
            array_keys($customFields),
            array_values($customFields)
        ));
    }

    $this->b24->call('crm.lead.add', [
        'FIELDS' => $b24Fields,
        'PARAMS' => ['REGISTER_SONET_EVENT' => 'Y'],
    ]);
}

Несколько сообществ и форм

Если компания ведёт несколько сообществ ВКонтакте или использует множество лид-форм под разные продукты — каждому group_id и form_id можно поставить в соответствие конкретную воронку и ответственного в Битрикс24:

$routingConfig = [
    ['group_id' => 123456, 'form_id' => 111, 'pipeline_id' => 1, 'assigned_by' => 5],
    ['group_id' => 123456, 'form_id' => 222, 'pipeline_id' => 3, 'assigned_by' => 8],
    ['group_id' => 789012, 'form_id' => 333, 'pipeline_id' => 2, 'assigned_by' => 11],
];

Конфигурация хранится в таблице или JSON-файле, обновляется без деплоя.

Дедупликация и проверка по телефону

ВКонтакте пользователи иногда отправляют форму несколько раз. Дедупликация — по vk_lead_id (уникальный ID в VK), который сохраняем в пользовательское поле. Перед созданием:

$existing = $this->b24->call('crm.lead.list', [
    'filter' => ['UF_CRM_VK_LEAD_ID' => $vkLeadId],
]);
if (!empty($existing)) return; // уже создан

Состав работ

  • Настройка Callback API в сообществе ВКонтакте
  • Разработка обработчика: верификация, маппинг полей, создание лида
  • Пользовательские поля в Б24 для VK-атрибутов
  • Routing config для нескольких сообществ/форм
  • Дедупликация по vk_lead_id и телефону
  • Логирование ошибок, мониторинг доставки вебхуков

Сроки: 3–5 дней для одного сообщества. До 2 недель при сложном роутинге и множестве форм.