Почему хаотичное распределение заявок убивает конверсию
Возьмём реальную картину из B2B-отдела продаж: менеджер А ведёт 40 лидов в день, менеджер Б закрывает 10. Продукт один, скрипты одни, CRM одна. Конверсия у А, скажем, 12%, у Б, 31%. Руководитель смотрит на это и делает вывод, что Б просто лучше продаёт. Но вопрос не в таланте. Вопрос в том, что перегруженный менеджер физически не может обработать заявку за первые 5 минут.
Исследования скорости реакции на B2B-запросы стабильно показывают: чем быстрее первый контакт, тем выше шанс конверсии. И здесь Excel с ручным распределением становится настоящим убийцей воронки, потому что пока руководитель записывает в таблицу, кому отдать заявку, проходит 20 минут, потом ещё 40 минут на то, чтобы менеджер вообще увидел запись. Лид уже разговаривает с конкурентом.
Устные договорённости работают ещё хуже. "Миша, возьми этого, он из Казани" - это не роутинг, это лотерея. Заявки теряются на стыке смен, в мессенджерах, в забытых стикерах на мониторе. Никто не несёт ответственности за конкретный лид, потому что непонятно, кто его вообще принял.
Но главная проблема даже не в скорости и не в потерях. Она в логике распределения. Большинство компаний роутят заявки по одному параметру: кто сейчас свободен. Это кажется справедливым, но на практике означает, что ваш лучший менеджер получает столько же лидов, сколько новичок на испытательном сроке. Или меньше, потому что он дольше закрывает сложные сделки.
Когда распределение начинает строиться на данных о выручке конкретного менеджера, картина меняется. Горячие, дорогие лиды идут к тем, кто исторически закрывает такие сделки. Холодный трафик с нижней части воронки уходит тем, кто хорош на коротких циклах. Новичок получает лиды, где цена ошибки ниже. Это не дискриминация. Это элементарная математика: нужно максимизировать выручку с каждой заявки, а не просто равномерно распределить нагрузку.

Без системы приоритизации до 60% горячих лидов теряются ещё до первого звонка менеджера.
Что такое скоринг лидов и как он устроен в Bitrix24
Скоринг лида, это числовая оценка, которая показывает, насколько конкретный контакт похож на вашего покупателя. Никаких субъективных "горячий/холодный". Только цифра: 90 баллов из 100, и менеджер берёт трубку первым.
Оценка складывается из атрибутов. Источник трафика: лид с Яндекс Директа получает +20 баллов, с органики, +10. Должность: "Директор" или "Владелец" в поле Job Title дают +30, "Менеджер", +10. Бюджет: если в поле "Бюджет" стоит сумма больше 500 000 рублей, добавляем ещё +40. Поведение на сайте, посещение страницы с ценами или скачивание прайса, ещё +15. Итого один лид может набрать 90+ баллов ещё до первого звонка.
В Bitrix24 под это нет отдельного модуля с красивой кнопкой "Запустить скоринг". Но инструменты есть, просто собирать нужно самому. Кстати, тот же принцип накопления атрибутов отлично работает в связке с внешними сервисами: 7 интеграций Bitrix24 для ускорения отдела продаж показывают, какие подключения дают наибольший прирост скорости реакции на лид.
Ручной скоринг, самый простой вариант. Создаёте пользовательское числовое поле в карточке лида, называете его "Скоринг", и менеджер проставляет балл вручную после квалификации. Это работает в маленьких командах, где 20-30 лидов в неделю. При 200 лидах уже ломается: люди забывают, занижают, завышают.
Автоматический скоринг строится на роботах и триггерах внутри воронки. Робот срабатывает при смене стадии или заполнении поля, смотрит на условие и обновляет числовое поле. Например: если поле "Должность" содержит "Директор", прибавить 30 к текущему значению поля UF_CRM_SCORING. Это уже нормальный автомат без единой строчки кода.
Если нужно больше гибкости или вы подтягиваете данные из внешних систем (например, с сайта через веб-хуки), поле обновляется через REST API:
// Обновление поля скоринга через crm.lead.update
// UF_CRM_SCORING — пользовательское числовое поле в карточке лида
{
"id": 123,
"fields": {
"UF_CRM_SCORING": 90
}
}
Здесь id, это идентификатор лида в вашей CRM, UF_CRM_SCORING, системное имя поля, которое вы задаёте при создании. Bitrix24 автоматически добавляет префикс UF_CRM_ ко всем пользовательским полям лидов.
Базовая архитектура выходит такая: поле-накопитель в карточке, набор роботов с условиями по атрибутам, и фильтр в списке лидов, который показывает менеджерам только тех, кто набрал, скажем, 60 баллов и выше. Фильтр сохраняете как "Горячие лиды", и у команды появляется готовый рабочий список без ручной сортировки.

Каждый атрибут лида получает числовой вес, и итоговый балл собирается автоматически при заполнении карточки.
Роботы и триггеры Bitrix24: автоматический расчёт балла лида
Роботы в воронке лидов запускаются на конкретной стадии. Схема простая: лид попал на стадию "Квалификация", запустился робот, проверил, заполнено ли поле "Должность", и если да, прибавил 10 к полю "Скоринг". Таких роботов можно навесить несколько: один проверяет должность, другой, размер компании, третий реагирует на триггер.
Триггеры здесь интереснее, чем кажутся. "Открыто письмо" и "Перешёл по ссылке" работают прямо в Bitrix24 без подключения внешних сервисов. Лид открыл письмо с коммерческим предложением, триггер сработал, запустил робота, робот выставил +5 к скорингу. Это поведенческая составляющая, и она даёт хороший сигнал о намерении.
Но вот где ломается большинство настроек: роботы не умеют складывать числа нативно. Буквально нет такой операции. Ты не можешь написать в роботе "Скоринг = Скоринг + 10". Робот умеет только записать конкретное значение в поле, а не прибавить к существующему.
Обходной путь: бизнес-процесс.
Создаёшь отдельный БП "Обновить скоринг". Внутри блок "Изменить документ", в котором указываешь формулу суммирования через синтаксис шаблонов полей. Выглядит примерно так: значение поля "Скоринг" берётся как переменная, к ней прибавляется нужная дельта, результат пишется обратно в то же поле. Это работает, но требует аккуратности: если два робота запустят этот БП одновременно по разным триггерам, возникнет гонка записей и одно из изменений потеряется. Решение простое: ставить задержку в 2-3 секунды на второй запуск или делать единый пересчёт по всем полям сразу.
Про точки запуска пересчёта: два момента, которые нельзя пропускать. Первый, создание лида. Как только лид появился в системе, сразу считаем базовый балл по статическим полям: источник, канал, UTM-метка, заполненность контактных данных. Второй момент важнее: каждое изменение ключевых полей. Изменился размер компании с "до 10 человек" на "50-200", пересчёт. Добавилась должность, пересчёт. Для этого в настройках бизнес-процесса выбираешь условие запуска "При изменении" и указываешь конкретные поля, а не "при любом изменении документа": иначе БП будет стартовать даже когда менеджер случайно кликнул по лиду.
Итоговая архитектура выходит такой: триггеры и роботы отвечают за обнаружение события, а бизнес-процесс делает фактический пересчёт числа. Разделение ответственности, которое потом легко дебажить.
Сегментация лидов по баллу: горячие, тёплые, холодные
Порог 70+ баллов означает, что лид готов к звонку прямо сейчас. 40-69 - это тёплая зона, где человек интересуется, но ещё не готов к сделке. Всё, что ниже 40 - холодный контакт, которому нужно время и контент. Эти цифры не взяты из головы: они выводятся из ретроспективного анализа, когда смотришь на закрытые сделки и видишь, на каком балле лид в среднем принимал решение о встрече.
Технически разделить сегменты в Битрикс24 несложно. В смарт-фильтрах списка лидов создаёшь три сохранённых фильтра по полю "Балл лида", и менеджеры видят нужный сегмент одним кликом. Никакой ручной сортировки, никакого "открой Excel и покрась строки".
Но визуализация - это только полдела. Реальная автоматизация начинается, когда робот в воронке лидов сам проставляет тег или меняет статус при достижении порога. Настраивается через условие в триггере: балл перешёл 70 - лид получает тег "Горячий" и уходит в отдельную воронку к топ-менеджерам. Балл опустился обратно (да, такое бывает, если активность затихла) - статус пересчитывается автоматически.
Воронки для разных сегментов должны быть физически разными. Горячие лиды - короткая воронка с быстрым касанием: звонок в течение 15 минут, коммерческое предложение в тот же день. Холодные - длинная цепочка email-прогрева на 4-6 недель, где ты постепенно добираешь баллы за открытия писем и переходы. Когда холодный лид дорастает до тёплого, робот переводит его в соответствующую воронку сам.
Пороги надо пересматривать. Раз в квартал берёшь отчёт: сколько лидов из каждого сегмента реально конвертировались в сделку. Если горячие конвертируются в 60% случаев - всё хорошо. Если в 20% - порог завышен, менеджеры тратят время на лидов, которые ещё не дозрели, и надо двигать границу вверх. Обратная ситуация: если холодные конвертируются в 15%, а тёплые всего в 18% - сегменты плохо разделены, нужно пересматривать веса отдельных критериев. Конкретные цифры конверсии за квартал - единственный аргумент для изменения порогов. Не ощущения продавцов, не интуиция, а данные.

Цветовая шкала позволяет менеджеру за секунду понять приоритет лида, не читая всю карточку.
Роутинг по выручке: логика назначения ответственного
Стандартный round-robin плох одним: он игнорирует, что менеджеры закрывают сделки с разным средним чеком. Горячий лид с бюджетом 2 млн попадает к человеку, который последние три месяца работал с чеками по 80к, и сделка умирает не из-за продукта, а из-за несовпадения контекста.
Принцип, который я использую: лид уходит менеджеру с наибольшим средним чеком закрытых сделок за последние 90 дней. Окно в 90 дней хорошо работает как отправная точка. Годовая метрика сглаживает сезонность и не отражает актуальную форму менеджера, а месячная слишком шумная, особенно при небольшом объёме сделок. Конкретное окно стоит подбирать под свой цикл продаж.
Где хранить метрику. Bitrix24 не пересчитывает этот показатель автоматически, так что нужно выбрать один из двух путей. Первый: кастомное поле в профиле пользователя (тип "число"), которое обновляет внешний скрипт по расписанию, раз в сутки через REST API методом user.update. Второй: внешняя таблица (Google Sheets или собственная БД), к которой бизнес-процесс обращается через webhook. Первый вариант проще в поддержке, второй гибче, если нужна история изменений или несколько метрик одновременно. Про конкретные подводные камни при двусторонней синхронизации CRM и Google Sheets стоит почитать отдельно: часть проблем с гонкой записей одинаковы независимо от CRM.
Алгоритм роутинга по сегментам лида. Я делю входящие на три категории и назначаю разную логику для каждой.
Горячий лид (заполнил форму с бюджетом выше порога, или пришёл по реферальной ссылке, или повторный контакт) получает менеджера с LTV-метрикой выше заданного X. X выставляется вручную под каждый продукт: для B2B SaaS это обычно средний чек топ-30% команды. Тёплый лид (органика, контент, вебинар) распределяется в равномерную очередь среди менеджеров с метрикой выше медианы. Холодный (массовые рассылки, скрейпинг, нецелевые формы) уходит в автоответ с квалификационной анкетой, и живой менеджер подключается только после ответа.
Реализация в бизнес-процессе. В дизайнере бизнес-процессов Bitrix24 нужен блок "Выбор пользователя" с условием по кастомному полю. Логика выглядит так: система берёт значение поля avg_check_90d у всех менеджеров с активным статусом, сортирует по убыванию, и первый в списке получает назначение. Если несколько менеджеров с одинаковой метрикой, добавляю вторичную сортировку по количеству открытых сделок: кому меньше нагружен, тому и идёт лид.
Fallback при недоступности. Это место, где большинство реализаций ломается. Менеджер уходит в отпуск, бизнес-процесс пытается назначить его, молчит, и лид висит без ответа 48 часов. Решение: перед назначением проверяю поле "Недоступен до" в профиле пользователя. Если дата актуальна, алгоритм берёт следующего по метрике. Перегрузку я определяю порогом: если у менеджера больше 15 открытых сделок в статусах "Переговоры" и "КП отправлено", он исключается из выборки горячих лидов и попадает только в очередь тёплых. Цифра 15, ориентир для цикла продаж длиной 2-4 недели; под конкретную команду её нужно откалибровать.
Метрику среднего чека стоит показывать менеджерам в их личном дашборде. Когда люди видят, что от этого числа зависит качество входящих лидов, они начинают осознаннее относиться к тому, какие сделки берут в работу.

Горячие лиды автоматически уходят к менеджерам с наибольшей конверсией по аналогичным сделкам.
REST API Bitrix24: программный роутинг для сложных правил
Встроенные бизнес-процессы Bitrix24 справляются с линейной логикой: если лид из Москвы, назначить Иванова. Но когда появляется мультикритериальный роутинг, учёт геолокации по IP, интеграция со сторонней ML-моделью скоринга, бизнес-процессы превращаются в спагетти из условий. Проще написать скрипт.
Базовый сценарий выглядит так: внешняя система считает скоринговый балл, записывает его в пользовательское поле UF_CRM_SCORING, а webhook-обработчик на основе этого балла назначает ответственного менеджера. Два метода покрывают 80% таких задач.
Назначить ответственного:
POST https://your-domain.bitrix24.ru/rest/crm.lead.update
{
"id": 456,
"fields": {
"ASSIGNED_BY_ID": 42,
"UF_CRM_SCORING": 85
}
}
Выбрать лиды с баллом выше порога:
GET /rest/crm.lead.list?filter[>UF_CRM_SCORING]=70&select[]=ID&select[]=ASSIGNED_BY_ID
Фильтр >UF_CRM_SCORING работает как числовое сравнение для полей типа "Число". Можно комбинировать с filter[ASSIGNED_BY_ID]=0, чтобы отбирать только необработанные лиды без ответственного.
Простой PHP-обработчик для входящего webhook выглядит примерно так:
<?php
$data = json_decode(file_get_contents('php://input'), true);
$leadId = $data['data']['FIELDS']['ID'];
// Получаем данные лида
$lead = callBitrix('crm.lead.get', ['id' => $leadId]);
$score = (int)$lead['result']['UF_CRM_SCORING'];
$region = $lead['result']['UF_CRM_REGION'];
// Роутинг по комбинации скора и региона
$assignedId = resolveManager($score, $region);
// Назначаем ответственного
callBitrix('crm.lead.update', [
'id' => $leadId,
'fields' => ['ASSIGNED_BY_ID' => $assignedId]
]);
function resolveManager(int $score, string $region): int {
if ($score >= 80 && $region === 'msk') return 42; // старший менеджер
if ($score >= 60) return 17; // средний приоритет
return 5; // дежурный
}
function callBitrix(string $method, array $params): array {
$url = 'https://your-domain.bitrix24.ru/rest/YOUR_WEBHOOK/' . $method;
// ... curl-запрос
}
Функция resolveManager здесь намеренно простая. На практике туда можно поставить запрос к внешней CRM-аналитике или round-robin по загруженности менеджеров. Если хочется вынести логику роутинга в отдельный оркестратор, автоматизация заказов через n8n показывает рабочую схему: внешний обработчик принимает событие, выбирает исполнителя по правилам и возвращает результат в CRM.
Теперь про ограничения, которые бьют по рукам при массовой обработке. Облачный Bitrix24 ограничивает частоту REST-запросов, и при обработке сотен лидов подряд вы упрётесь в этот лимит. Точные параметры зависят от тарифа и конфигурации, поэтому стоит свериться с актуальной документацией Bitrix24. Два способа снизить нагрузку: батчинг через метод batch (до 50 команд за один вызов) и параллельные потоки с разными webhook-токенами. Метод batch особенно полезен, 50 обновлений уходят одним запросом.
POST /rest/batch
{
"halt": 0,
"cmd": {
"lead1": "crm.lead.update?id=101&fields[ASSIGNED_BY_ID]=42",
"lead2": "crm.lead.update?id=102&fields[ASSIGNED_BY_ID]=17",
...
}
}
Ещё одна практическая деталь: поле UF_CRM_SCORING надо создать вручную в настройках CRM как поле типа "Число". Тип важен: числовой фильтр через > корректно работает только для полей с числовым типом данных. Если создать поле как строку, сравнение будет лексикографическим, и "9" окажется больше "80".
Этот подход хорошо масштабируется именно потому, что логика роутинга живёт вне Bitrix24. Обновился алгоритм скоринга, добавился новый регион, изменились правила распределения нагрузки между менеджерами, всё это правится в одном скрипте без входа в конструктор бизнес-процессов.
Интеграция с источниками: как данные о лиде влияют на балл до первого звонка
Большинство команд начинают скоринг с момента, когда менеджер уже поговорил с лидом. Это поздно. К тому моменту, как лид попадает в CRM, о нём уже есть данные, по которым можно выставить предварительный балл и расставить приоритеты очереди обработки.
Разберу конкретные источники и что из них тянуть.
Формы на сайте. Самый богатый источник контекста. CRM-формы Bitrix24 умеют передавать UTM-параметры прямо в поля лида при создании. Настраивается это через маппинг скрытых полей формы: в форму добавляешь скрытые поля utm_source, utm_campaign, utm_content, значения подставляются из URL через JavaScript при загрузке страницы, и на выходе лид уже несёт метки трафика как атрибуты записи. После этого робот при создании лида проверяет поле utm_campaign: если значение enterprise, добавляет +30 баллов к полю скоринга. Никакого ручного труда, никакого "потом разберёмся откуда пришёл".
Страница конверсии тоже атрибут. Лид с формы /pricing/enterprise и лид с формы /blog/chto-takoe-crm это разные по весу лиды, даже если заполнили одинаковые поля.
Мессенджеры и открытые линии. Bitrix24 открытые линии передают источник обращения в карточку лида: ВКонтакте, Telegram, WhatsApp, чат на сайте. Источник сам по себе сигнал. В B2B-сегменте Telegram-обращение в рабочее время по продуктовому вопросу статистически горячее, чем форма обратного звонка поздно вечером. Это вшивается в логику робота как дополнительное условие.
Яндекс.Метрика через webhooks. Это чуть сложнее, но окупается. Метрика умеет отправлять данные о поведении пользователя во внешние системы через цели и API. Схема: цель в Метрике срабатывает при глубине просмотра от 5 страниц или времени на сайте от 3 минут, webhook отправляет запрос с Client ID, по Client ID ищем совпадение с полем в лиде (если лид уже создан через форму) и обновляем поле "поведенческий балл". Да, это требует хранить Client ID в поле лида при заполнении формы. Но один раз настроил и получаешь автоматическое обогащение записи до звонка.
Входящие звонки. Если на линии настроено IVR с маршрутизацией по направлениям (например, "нажмите 1 для отдела продаж корпоративным клиентам, нажмите 2 для малого бизнеса"), метка выбранного пункта меню передаётся в карточку лида через интеграцию телефонии с Bitrix24. Лид, который сам набрал и выбрал





