Настройка автоматического распределения лидов в Битрикс24
Ручное распределение лидов — узкое место в большинстве отделов продаж. Руководитель тратит время на назначения, новые лиды лежат без ответа, пока он занят. Автоматическое распределение убирает человека из этой цепочки: лид появился → назначен нужному менеджеру → менеджер получил уведомление.
Встроенные инструменты распределения
Очередь распределения — самый простой вариант. Битрикс24 назначает лиды менеджерам по круговой схеме (round-robin). Настройка: CRM → Настройки → Распределение лидов → Очередь.
Параметры очереди:
- Список менеджеров в очереди и их порядок
- Рабочее время (лиды в нерабочее время назначаются дежурному или ставятся в накопитель)
- Исключения: лид не назначается менеджеру, если он в отпуске/командировке (интеграция с Отсутствиями)
Правила маршрутизации — более гибкий инструмент. Позволяет назначать лиды по условиям:
| Условие | Действие |
|---|---|
| Источник = «Сайт Москва» | Назначить менеджеру Иванову |
| Источник = «Холодный звонок» | В очередь «Холодные звонки» |
| Сумма > 500 000 ₽ | Назначить старшему менеджеру |
| Регион = «Краснодарский край» | Менеджеру Сидорову (региональный) |
| UTM_campaign = «vk_retarget» | В воронку «Ретаргетинг» |
Настройка: CRM → Настройки → Правила маршрутизации → Создать правило.
Распределение через роботов
Роботы в воронке лидов дают более тонкую настройку с условной логикой. Пример схемы:
Новый лид
└─► [Робот: Проверить поле "Регион"]
├─► Москва → [Робот: Назначить ответственного = Иванов]
├─► СПб → [Робот: Назначить ответственного = Петров]
└─► Другое → [Робот: Добавить в очередь "Регионы"]
Настройка роботов: CRM → Лиды → Стадия "Новый" → Автоматизация → Добавить робота → "Изменить ответственного".
Программное распределение через REST API
Для сложной логики — распределение по загрузке менеджера, по специализации, с учётом географии — используют REST API и вебхуки:
// Вебхук на создание лида
// URL: /local/rest/lead_routing.php
$leadData = json_decode(file_get_contents('php://input'), true);
$leadId = $leadData['data']['FIELDS_AFTER']['ID'];
// Получаем данные лида
$b24 = initBitrix24Client();
$lead = $b24->call('crm.lead.get', ['id' => $leadId]);
// Определяем ответственного по логике
$responsibleId = determineResponsible($lead['result']);
// Назначаем
$b24->call('crm.lead.update', [
'id' => $leadId,
'fields' => ['ASSIGNED_BY_ID' => $responsibleId],
]);
// Уведомляем менеджера
$b24->call('im.notify.personal.add', [
'USER_ID' => $responsibleId,
'MESSAGE' => 'Вам назначен новый лид: ' . $lead['result']['TITLE'],
]);
function determineResponsible(array $lead): int
{
// По источнику
if ($lead['SOURCE_ID'] === 'SITE_MOSCOW') {
return MOSCOW_MANAGER_ID;
}
// По загрузке (берём менеджера с наименьшим числом открытых лидов)
global $b24;
$managers = [MANAGER_1_ID, MANAGER_2_ID, MANAGER_3_ID];
$loads = [];
foreach ($managers as $managerId) {
$count = $b24->call('crm.lead.list', [
'filter' => ['ASSIGNED_BY_ID' => $managerId, 'STATUS_ID' => 'NEW'],
'select' => ['ID'],
])['total'];
$loads[$managerId] = $count;
}
asort($loads);
return array_key_first($loads);
}
Учёт рабочего времени
При распределении важно учитывать доступность менеджера. Битрикс24 предоставляет API для проверки рабочего времени и отсутствий:
// Проверяем, на месте ли менеджер
BX24.callMethod('timeman.timecontrol.report.list', {
filter: { USER_ID: managerId, STATUS: 'OPENED' },
}, result => {
const isOnline = result.total() > 0;
// Если не на месте — перенаправляем на дежурного
});
Сроки
| Конфигурация | Срок |
|---|---|
| Очередь round-robin + рабочее время | 0,5–1 день |
| Правила маршрутизации + роботы | 1–2 дня |
| Кастомная логика через REST + вебхуки | 3–6 дней |







