Настройка автоматического импорта лидов из 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 недель при сложном роутинге и множестве форм.







