Схемы Что нового

CRM — продажи и заявки

Отдельными страницами: Salesbot, рекламные кампании, выезды, наряды и договор, дашборд продаж.

CRM (/admin/crm/) — нативный модуль работы с лидами и сделками: канбан-воронка с настраиваемыми стадиями, конструктор триггеров-автоматизаций, источники сделок, визуальный Salesbot, Задачи и Списки. Полностью интегрирован с биллингом: сделка знает клиента, тариф и адрес, эскалации уходят в Поддержку, диалоги может подхватывать AI-агент.

Модуль «CRM / Продажи» — на сайте продукта
Содержание раздела
Обучающее видео 4:19

Десять шагов работы с CRM: дашборд, приём заявок и источники, воронка, карточка сделки и перевод стадии, задачи и календарь, списки, конструктор воронок, рекламные кампании, обзвон и выезды, показатели. Экраны сняты на копии базы с выдуманными клиентами.

1920×1080 с озвучкой Скачать

Как устроен модуль

Дашборд продаж: выбор воронки, итоги периода с выгрузкой и показатели воронки
Дашборд продаж: выбор воронки, итоги периода с выгрузкой и показатели воронки

Все заявки — из мессенджеров, звонков, форм и почты — проходят через единую точку приёма: дедупликация по телефону, геокодирование адреса, привязка рекламной кампании по UTM, определение организации и воронки. Дальше сделка живёт в канбане, а конструктор автоматизирует рутину: задачи, SMS, документы, теги.

flowchart LR
    subgraph CH["Каналы приёма"]
        TG["Telegram"]
        VK["VK"]
        MX["MAX"]
        MG["Звонок Mango
(голосовая почта)"] AI["AI-виджет / AI Voice"] WF["Веб-формы"] EM["Email / Поддержка"] end SB{"Salesbot
сценарий"} TG --> SB VK --> SB MX --> SB SB -- "узел «Лид в CRM»" --> IN SB -- "узел «AI-агент»" --> BOT["AI-агент"] SB -- "узел «Оператору»" --> SUP["Тикет Поддержки
со сводкой данных"] MG --> IN AI --> IN WF --> IN EM --> IN IN["Единая точка приёма:
дедуп · геокод · UTM · организация"] IN -- "настройки канала" --> SRC[("Источники сделок")] IN --> D["Сделка в воронке"] D -- "вход в стадию" --> AUTO["Триггеры-автоматизации
14 действий"] AUTO --> T["Задачи"] AUTO --> SMS["SMS / Email / Telegram"] AUTO --> DOC["PDF-документы"] AUTO --> TAGS["Теги"]
Права. Работа со сделками доступна всем пользователям модуля CRM. Редактирование конструктора (стадии, источники, доп. поля, боты, вид карточек) — только группам из настройки CRM_PIPELINE_ADMIN_GROUPS (по умолчанию: Директор, Старший менеджер, root); остальные видят эти разделы в режиме просмотра.

Организация по умолчанию

Каждая сделка привязана к организации. Точка приёма определяет её по каскаду: явно указанная организация → организация клиента → по тексту заявки (например, по названию компании) → по каналу-источнику. Если ничего не подошло — сделка привязывается к организации по умолчанию. Сделок «Без организации» в воронке не остаётся: это касается и пропущенных звонков Mango, и нераспознанных голосовых сообщений, у которых нет клиента.

Стадия «Неразобранное» и автораспределение

Пропущенные звонки и нераспознанные голосовые сообщения попадают в первую стадию воронки — «Неразобранное». Такие заявки автоматически распределяются между сэйлсами по очереди (round-robin): каждый новый лид достаётся следующему сотруднику из группы «Сэйлс». Одновременно на сделку ставится задача-звонок «Позвонить клиенту, узнать адрес и заполнить профиль» со сроком «сегодня».

Автораспределение включается настройкой CRM_UNSORTED_AUTODISTRIBUTE (по умолчанию включено). Круг сэйлсов берётся из групп CRM_SALES_GROUPS (Сэйлс, Старший сэйлс). Если ответственный у сделки уже назначен — она не перераспределяется.

Звонок из телефонии сам привязывается к открытой сделке звонящего. Кроме того, вкладка «Звонки» в карточке клиента при открытии связывает его звонки со сделками, чтобы разговоры были видны в ленте CRM. Как именно — выбирается в CRM → Настройки, строка «Звонки клиента в сделках»:

РежимЧто происходит
Ближайшая, даже закрытаязвонок привязывается к последней сделке, созданной до него, в том числе с отказом или «Подключено». Так было всегда — это значение по умолчанию
Только открытаязакрытые сделки не трогаются: в ленте отказанной сделки не появляются звонки клиента в Поддержку, а счётчики звонков CRM не растут за их счёт
Не привязыватьновые связи не создаются, уже сделанные остаются
Настройки CRM: расшифровка звонков и привязка звонков клиента к сделкам
Настройки CRM: расшифровка звонков и привязка звонков клиента к сделкам

Рядом — «Авто-транскрибация звонков»: запись звонка по сделке расшифровывается сама, а суть, адрес и договорённость о повторном контакте попадают в сделку. Каждый звонок разбирается один раз: забор звонков из телефонии каждые 20 минут видит его снова, но заново не расшифровывает и не дописывает в обращение Поддержки. Разобрать звонок повторно можно кнопкой «Транскрибировать» в ленте сделки.

Быстрый старт: от нуля до первого лида

Свежая инсталляция превращается в рабочую CRM за пять минут:

  1. Откройте Мастер настройки — шаг «Воронки» создаст стартовые воронки из пресетов (у новых инсталляций они уже созданы автоматически);
  2. На шаге «Каналы» включите источники приёма: формы сайта, Telegram/VK, голосовую почту; для формы скопируйте код вставки с токеном;
  3. Шаг «Команда» — включите распределение лидов по очереди между менеджерами;
  4. Отправьте тестовую заявку с сайта или добавьте лида через Импорт CSV — сделка появится в первой стадии канбана;
  5. Откройте сделку кликом — дровер покажет контакт, источник и UTM; двигайте сделку по полосе стадий до «Подключено», монтажнику назначайте наряд.

Воронка сделок (канбан)

URL: /admin/crm/deals/. Колонки — стадии воронки, карточка сделки показывает то, что настроено в «Виде карточки»: клиента и телефон, адрес, сумму, цветные теги, чипы источника/тарифа/монтажа, «дней в стадии», аватар ответственного.

Воронка сделок: колонки стадий и карточки
Воронка сделок: колонки стадий и карточки

Строка управления разделом — одна линия: выбор воронки, фильтры по ответственному и периоду, «Наблюдаю», панель «Фильтры», поиск и действия раздела. Когда места мало, подписи кнопок скрываются и остаются значки, поэтому доска начинается выше, а не после двух рядов управления.

Строка управления воронкой одной линией
Строка управления: воронка, фильтры, поиск и действия в одну линию
Карточка в канбане: следующий шаг, «ждёт ответа», источник, дата монтажа и ответственный
Карточка в канбане: следующий шаг, «ждёт ответа», источник, дата монтажа и ответственный

Пример: оператор ищет «Мира 10» → находит заявку по адресу → двойной клик открывает карточку → кнопка «Позвонить» → итог звонка фиксируется прямо в карточке («Дозвонился / Не дозвонился / Перезвонить») и попадает в таймлайн.

Импорт лидов из CSV

Импорт лидов из CSV
Импорт лидов из CSV

Кнопка «Импорт» в тулбаре канбана принимает файл или вставленный текст в формате Имя;Телефон;Комментарий (разделитель — точка с запятой, запятая или табуляция; до 500 строк за раз). Каждая строка проходит штатный приём лидов: дубли отсекаются, применяются теги источника и распределение ответственного; при выбранной недефолтной воронке лиды попадают в неё. После импорта — отчёт: создано / дублей / ошибок по строкам.

Конструктор воронок и стадий

URL: /admin/crm/settings/pipelines/ (CRM → Настройки → Воронки и стадии). Стадии — колонки слева направо, как в воронке: название, цвет, ключ, тип (В работе / Успех / Проигрыш), перестановка ←→, счётчик сделок. Изменения сразу применяются в канбане, карточке сделки, на карте и в дашборде.

Вероятность закрытия: у открытых стадий в шапке — поле «⚖ N %», вероятность что сделка с этой стадии дойдёт до подключения. Пусто — 50%; стадии «Успех» и «Проигрыш» фиксированы (100% / 0%). Используется для взвешенных сумм колонок канбана.

Жизненный цикл сделки

stateDiagram-v2
    direction LR
    [*] --> lead : лид из любого канала
    lead --> tariff : тариф выбран
    tariff --> install : Stage Gate — монтажник ИЛИ дата
    install --> connected : Успех ✅
    lead --> refused : Проигрыш ❌
    tariff --> refused
    install --> refused
    connected --> [*]
    refused --> [*]
    note right of lead
        триггеры «При входе в стадию»
        срабатывают и для нового лида
    end note
    note right of install
        «застряла N дней» — таймер-триггер
        по каждой стадии
    end note

Правила входа (Stage Gates)

Блокируют перенос сделки в стадию, пока условие не выполнено. Настраиваются чипами под каждой стадией:

ПравилоЧто проверяет
Назначен монтажнику сделки заполнен исполнитель
Указана дата монтажазаполнено поле «Дата монтажа»
Монтажник ИЛИ датахотя бы одно из двух
Есть контакт (телефон)у клиента указан телефон
Подтверждение оператораперенос требует явного «Да» в диалоге
🔒 Обязательные доп. полявсе доп. поля с признаком «Обязательно для стадии» заполнены (например, паспортные данные перед «Назначен монтаж»)

Триггеры-автоматизации

Кнопка «+ Добавить триггер» под стадией открывает галерею действий (как плитки). Триггер срабатывает «При входе в стадию» (в том числе при создании лида) или «Застряла в стадии N дней». В текстах работают плейсхолдеры {title} {name} {phone} {stage} {days} {id}.

ДействиеПример использования
Создать задачувход в «Новый лид» → задача «Перезвонить по «{title}»» на завтра
Telegram сотрудникузастряла в «Тариф выбран» 3 дня → пинг ответственному
SMS клиентувход в «Назначен монтаж» → «Монтаж {stage}, ждите звонка мастера»
Письмо клиентуприветственное письмо с презентацией тарифов
Смена стадииавто-перенос после выполнения условий (без цепной реакции)
Сменить ответственногоэскалация на старшего при простое
Примечание в сделкуслужебная отметка в таймлайн
Webhook (POST JSON)уведомить внешнюю систему
Завершить задачивход в «Подключено» → закрыть все открытые задачи
Создать сделкупосле подключения интернета → сделка на видеонаблюдение
Изменить полепроставить доп. поле «Согласие получено» = «да»
Сгенерировать документвход в «Договор» → PDF-договор ссылкой в таймлайн
Редактировать тегидобавить тег «Срочно» при застое
Запустить Salesbotвход в стадию → бот собирает недостающие данные

Вид карточки и раскладка

Типы задач воронки

Блок «Типы задач» в редакторе воронки
Типы задач настраиваются отдельно для каждой воронки

Слева в редакторе, над источниками, — блок «Типы задач»: что предлагает композер задач в карточке сделки этой воронки. У каждого типа своя подпись и цвет, тумблер выключает тип из предложения новым задачам (у прежних задач тип сохраняется), кнопка «Добавить тип» заводит свой.

Ключ типа общий для всей системы, поэтому календарь, отчёты и старые задачи продолжают его понимать, а подпись и значок берут из настройки воронки. Так монтажной воронке можно оставить «Выезд» и «Замер», а продажной — «Связаться» и «Встреча», не заводя отдельных справочников.

Редактор воронки: стадии, правила, триггеры и типы задач
Редактор воронки: стадии с правилами и триггерами, слева — источники и типы задач

Поле «Роутер» и Склад

Настройки CRM: связь поля «Роутер» со Складом
Настройки CRM: связь поля «Роутер» со Складом и выбор режимов

Переключатель «Связать поле „Роутер“ со Складом» в настройках CRM превращает текстовое поле сделки в список номенклатуры: категория «Роутеры», режим передачи «Продажа». Рядом выбор, какие роутеры предлагать — только продажу или продажу вместе с арендой; у арендных в списке видна месячная плата и пометка «аренда». Позиции ответственного хранения в список не попадают.

В списке у каждой модели показаны цена и остаток, поэтому менеджер не обещает клиенту то, чего нет на складе. Связь выключена, модуль Склада отключён или роутеры не заведены — поле остаётся обычным текстовым, как раньше.

Галерея «Из шаблона»

Галерея преднастроенных воронок
Галерея преднастроенных воронок

Кнопка «Из шаблона» открывает галерею готовых воронок провайдера: подключение интернета, продажи B2B, доп. продажи, возврат ушедших, видеонаблюдение. Пресет создаёт новую воронку со стадиями, правилами входа, триггерами и причинами отказа — существующие воронки и сделки не затрагиваются. Ниже встроенных пресетов подтягиваются рецепты с сервера лицензий — новые шаблоны появляются без обновления биллинга. У новых инсталляций с пустой CRM стартовый набор воронок создаётся автоматически при развёртывании.

Воронки и организации

Селектор воронок: бейдж организации перед названием
Селектор воронок: бейдж организации перед названием

Воронка принадлежит организации: у каждой компании свои стадии, правила перехода и триггеры. Селектор воронок в канбане показывает только воронки выбранной в шапке компании — если она одна, селектор не показывается вовсе. В режиме «Все организации» перед названием воронки стоит бейдж её компании.

Куда попадёт новый лид. Порядок такой: воронка, заданная у источника лида → воронка организации под тип сделки → общая воронка этого типа. Если организация не определилась, берётся организация по умолчанию. Благодаря этому заявка не остаётся вне воронок и не теряется на доске.

Общая воронка (без организации) остаётся видимой для компании, пока в ней есть её сделки: у сделки часто нет явной воронки, и она держится на совпадении типа. Как только сделки перенесены, общая воронка из списка уходит.

Источники сделок

Панель «Фильтры»: срезы со счётчиками
Панель «Фильтры»: источники, теги, тарифы и причины отказа со счётчиками

В панель попадает только то, по чему есть сделки: источники и теги с ненулевым счётчиком, причины отказа — встретившиеся больше одного раза (причину оператор вводит руками, и разовые опечатки занимали целый столбец). Счётчик — бейдж с числом; секции разложены по четырём колонкам, внутренней прокрутки у них нет.

CRM → Настройки → Источники сделок (панель вверху конструктора воронок). Источник — это запись, а не фиксированный канал: на один канал (Mango, AI-виджет, AI Voice, VK, Telegram, MAX, веб-форма, заявка из Поддержки) можно завести несколько источников — например «Лендинг тарифов» и «Форма подключения», или отдельные Telegram-источники для разных брендов. Кнопка «+ Источник» создаёт пользовательский источник.

Карточка источника

Все источники идут через единую точку приёма: дедуп, геокод адреса, UTM-кампании и организация работают одинаково везде; у каждой сделки сохраняется ссылка на источник — на ней строится аналитика.

Источники в каталоге виджетов

Источники лидов в каталоге виджетов
Источники лидов в каталоге виджетов

Виджеты приёма заявок (Mango, AI-виджет, AI Voice, веб-формы) показаны и в каталоге Настройки → Виджеты — секция «Источники лидов»: включение/выключение источника тумблером, переходы в настройки канала и в панель источников. Виджет «Лиды по источникам» на дашборде CRM показывает топ источников с конверсией; при мультиорганизации он учитывает доступные сотруднику организации и помечает источники-пары чипом организации.

Как подключить форму на сайт

Порядок один для любой формы: сначала воронка, потом источник с токеном, потом сама форма. Токен — то, что связывает форму с настройками: воронкой, этапом входа, организацией, тегами, распределением и окном дублей.

Что подключаемКуда уходит заявкаВключается настройкой
Готовый виджет заказа на чужом сайте/api/crm/lead/CRM_PUBLIC_LEAD_ENABLED
Своя вёрстка формы/api/crm/lead/CRM_PUBLIC_LEAD_ENABLED
Страница конструктора сайтов/l/submit/LANDING_ENABLED
AI-виджет (чат и голос)/api/ai/widget/lead/AI_WIDGET_ENABLED
Salesbot на сайте/api/crm/bot/<id>/канал «Виджет» у бота

Виджет заказа. В карточке источника — кнопка «Скопировать код вставки»: сниппет уже содержит ваш токен. Виджет сам подтянет тарифы, соберёт UTM-метки из адреса страницы и отправит заявку:

<script src="адрес вашей установки/static/js/order_widget.js"
        data-api="адрес вашей установки"
        data-token="ВАШ_ТОКЕН_ИСТОЧНИКА"
        data-auto-init></script>

Параметры: data-title, data-subtitle, data-color, data-button, data-tariff="0" (скрыть выбор тарифа), data-address="0" (скрыть адрес). Открыть форму из своей кнопки — SmitOrderWidget.openCentered(). Есть и готовая страница заказа без встраивания: /order.

Своя форма. Отправьте JSON — обязателен только телефон; остальные поля заполняют карточку (см. единый приём):

fetch('адрес вашей установки/api/crm/lead/', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    phone: '+7 917 000-11-22',
    name: 'Иванов Иван',
    address: 'г. Волгоград, ул. Мира, д. 10',
    comment: 'Звонить после 18:00',
    source: 'form',
    source_token: 'ВАШ_ТОКЕН_ИСТОЧНИКА',
    utm: { utm_source: 'yandex', utm_medium: 'cpc', utm_campaign: 'internet-vlg' }
  })
})

Ответ — {"ok": true, "deal_id": 12345}. Если сработал контроль дублей, вернётся номер уже существующей сделки: для посетителя это по-прежнему «заявка принята», а в CRM вместо второй карточки появится примечание «Повторная заявка» со всеми новыми данными.

Три частые причины «форма отправилась, а лида нет». (1) Не включена настройка приёма — endpoint отвечает disabled. (2) Выключен тумблер источника — заявка отбрасывается намеренно. (3) Превышен лимит: 10 заявок с одного IP за 10 минут. Приём никогда не роняет форму: любая внутренняя ошибка пишется в журнал, а посетитель видит «спасибо» — поэтому после настройки отправьте тестовую заявку и убедитесь, что сделка появилась в канбане.

Организацию, воронку и этап источник задаёт сам, но заявка может указать их явно (organization_id, pipeline_id, stage) — явное указание приоритетнее настроек источника. Полный список полей заявки и рецепты подключения — во внутренней инструкции «Формы создают лиды в CRM» (раздел «Разработчикам» → Документация).

Единый приём: как заполняется карточка

Все каналы (веб-форма, AI-виджет чата и голоса, звонки Mango, голосовая почта, VK/Telegram/MAX, Email, Salesbot, импорт CSV) сходятся в одной функции приёма crm_intake. Она максимально заполняет карточку лида из того, что есть в обращении, и делает это одинаково для всех каналов:

flowchart TB
    CH["Каналы: веб-форма, AI-виджет, голос и голосовая почта,
звонки Mango, VK, Telegram, MAX, Email, Salesbot, CSV"] --> INTAKE["crm_intake — единая точка приёма"] INTAKE --> R1 subgraph R1 [" "] direction LR C1["Контакт:
имя, телефоны, e-mail"] ~~~ C2["Юрлицо по ИНН
из DaData"] ~~~ C3["Адрес → дом
и координаты"] ~~~ C4["Тариф и доп. услуги
в «Итого»"] end R1 --> R2 subgraph R2 [" "] direction LR C5["UTM → кампания"] ~~~ C6["Организация, источник,
дедуп, ответственный"] ~~~ C7["Распознанное AI:
подсказка с цитатой"] end R2 --> DEAL[("Сделка в CRM,
карточка заполнена")] style R1 fill:none,stroke:none style R2 fill:none,stroke:none

Что распознал AI — подсказка, а не значение

Часть полей заявки берётся не из формы, а из свободного текста: адрес — из расшифровки звонка или голосового сообщения, имя и тариф — из письма. Распознавание ошибается, а ошибка в поле выглядит как обычное значение, и проверять его никто не станет. Поэтому действует правило: значение пишется в сделку, только когда источник надёжный, остальное становится подсказкой оператору с цитатой.

Что естьЧто происходит
Дом найден точно и уже есть в справочнике адресовадрес записывается в сделку
Дом найден точно, но в справочнике его нетадрес записывается с пометкой «проверьте», чтобы заявка сразу была на карте
Адрес распознан только до улицы или городаподсказка, поле не трогается
Имя или тариф, которых нет в тексте дословноподсказка
Телефон есть у нескольких клиентов или имя в заявке другоеклиент не привязывается, подсказка на каждого кандидата
Цитаты из источника нетничего не сохраняется

В карточке сделки подсказки собраны в блок «Проверьте данные из обращения»: поле, значение, откуда взято и когда, дословная цитата. «Принять» записывает значение, «Отклонить» убирает подсказку; адрес с пометкой «проверьте» при отказе снимается со сделки, если оператор его не менял. В канбане у такой сделки видно «N на проверку». Подсказки старше 14 дней в карточке не показываются.

Совпал телефон, но имя другое; адрес из звонка — с цитатой
Совпал телефон, но имя другое; адрес из звонка — с цитатой
flowchart TB
    SRC["Звонок, голосовое, письмо"] --> AI["AI извлекает поля"]
    AI --> Q{"Источник надёжный?"}
    Q -->|"дом найден точно"| W["Записано в сделку"]
    Q -->|"до улицы, догадка,
несколько клиентов"| S["Подсказка с цитатой"] Q -->|"цитаты нет"| X["Не сохраняется"] S --> OP{"Оператор"} OP -->|"Принять"| W OP -->|"Отклонить"| D["Подсказка закрыта"]

Доп. поля сделок

Доп. поля — панель групп
Доп. поля — панель групп

URL: /admin/crm/userfields/. Панель групп слева (как разделы анкеты), поля выбранной группы справа — с порядком ↑↓ и добавлением «+ поле в группу».

Свойство поляЗачем
ТипТекст / Число / Дата / Список (варианты) / Да-Нет / Многострочный
Группасекция в карточке сделки: «Договор — физ. лицо», «UTM и рекламные метки»…
Тип клиентафиз / юр — поле показывается только своему сегменту
Воронка и организацияпусто = все; иначе поле видно только сделкам этой воронки/организации
🔒 Обязательно для стадииStage Gate: без заполнения сделка не перейдёт в указанную (и последующие) стадию
В списке / в превьюколонка в «Списках» / показ в карточке-модалке

Пример: группа «Договор — физ. лицо» содержит паспортные поля с 🔒 «Назначен монтаж» — менеджер физически не сможет назначить монтаж, пока не заполнит паспорт; для юр. лиц действует своя группа с ИНН/КПП.

Задачи

Задачи: шапка с кнопкой «+ Задача» и строка фильтров
Шапка раздела: название, справка и главная кнопка; ниже одна строка фильтров

Задачи, «Списки», кампании, наряды и Salesbot устроены одинаково: сверху название раздела со справкой и главной кнопкой, ниже одна строка фильтров — срезы слева, поиск и выбор колонок справа, дальше таблица до краёв карточки. На телефоне поиск и «+» стоят в одну строку, фильтры — парами по 44 px, а строки таблицы превращаются в карточки с подписями.

URL: /admin/crm/tasks/ (CRM → Задачи). Единый список задач по всем сделкам:

Пример потока: триггер «Новый лид → Создать задачу „Перезвонить“» ставит задачу автоматически; утром менеджер открывает чип «Сегодня», обзванивает список, закрывает задачи с результатами — вся история остаётся в таймлайнах сделок.

Задачи из договорённостей в звонке

Если в звонке по сделке клиент сам назвал срок — «перезвоните после 15-го», «в октябре вернусь, тогда и подключим», — разбор звонка ставит задачу ответственному на этот день к 10:00. В задаче остаются слова клиента: «из звонка: «…»». Срок, который назвал оператор, и фраза, которой нет в расшифровке, задачу не создают.

Когда срок наступает, задача сама проходит перепроверку (раз в час):

Итог виден в карточке задачи и системным примечанием в ленте. Клиенту перепроверка ничего не отправляет — звонит оператор. Если AI не ответил, проход повторяется; после трёх попыток итог пишется списком событий. Выключатель — настройка CRM_AI_FOLLOWUPS, ручной проход — manage.py crm_followup_recheck --run.

Задачи из звонков: слова клиента и итог перепроверки
Задачи из звонков: слова клиента и итог перепроверки
flowchart TB
    C["Разбор звонка:
клиент назвал срок"] --> T["Задача на этот день
со словами клиента"] T --> DUE["Срок наступил"] DUE --> Q{"Сделка закрыта?"} Q -->|"да"| CL["Задача закрыта:
звонить не нужно"] Q -->|"нет"| F{"Что было после
договорённости?"} F -->|"ничего"| K1["Итог: договорённость
в силе"] F -->|"звонки, примечания"| K2["Итог от AI:
что учесть перед звонком"]

Списки (контакты)

Списки: счётчик показанных контактов, фильтры и поиск
Шапка «Списков»: «показано N из M», панель фильтров, ответственный и поиск

В шапке — сколько контактов показано из всех подходящих («показано 50 из 3 708»): таблица догружается при прокрутке, и число сразу говорит, сколько ещё впереди.

URL: /admin/crm/contacts/ (CRM → Списки). Все клиенты CRM одной таблицей:

Пример: маркетологу нужен срез по UTM — включает колонки «UTM source» и «UTM campaign» в настройках таблицы и выгружает картину по источникам без отчётов.

Виджеты-плагины

Виджеты — каталог с сервера лицензий
Виджеты — каталог с сервера лицензий

URL: /admin/settings/widgets/ (Настройки → Виджеты). Каталог загружаемых расширений: новый виджет публикуется на сервере лицензий и появляется у всех инсталляций без обновления биллинга, с фильтрацией по тарифному плану.

sequenceDiagram
    participant A as Администратор СмИТ
    participant L as Сервер лицензий
    participant B as Биллинг клиента
    participant P as Страница (дашборд CRM)
    A->>L: загрузка zip-пакета виджета
    B->>L: каталог по лицензионному ключу
    L-->>B: список виджетов тарифа (+SHA-256)
    B->>L: скачать пакет
    B->>B: сверка SHA-256, распаковка
только фронтовых файлов P->>B: страница с точкой монтирования B-->>P: widget.js + контейнер P->>P: SmitWidget.register() → рендер

Пакет — zip с манифестом и фронтовым кодом (серверный код в v1 не исполняется):

{
  "slug": "funnel-summary",
  "name": "Сводка воронки",
  "version": "1.0.0",
  "entry": "widget.js",
  "description": "Счётчики сделок по стадиям — прямо на дашборде CRM."
}
// widget.js — контейнер уже в DOM, settings — из настроек установки
window.SmitWidget.register('funnel-summary', function (el, settings) {
  fetch('/admin/crm/deals/json/?type=' + (settings.type || 'internet'))
    .then(r => r.json())
    .then(d => { el.innerHTML = /* счётчики по d.counts */; });
});

На плитке каталога: версия, размер, точка монтирования, кнопки Установить / Обновить / Удалить и тумблер вкл/выкл. Первая точка монтирования — дашборд CRM (виджет «Сводка воронки»), далее — карточка сделки и карточка клиента.

Версия, окно виджета и автообновление

Плитка виджета показывает бейдж версии справа от названия (зелёный — установлен и включён, жёлтый — доступно обновление, серый — доступен в каталоге). Клик по названию или обложке открывает окно виджета — по структуре как у окна модуля: сводка в две колонки (слева обложка и «Разработчик», справа категория и компактное описание), вкладки «Возможности» / «Как это работает» / «Скриншоты» / «История версий» и блок «Зависит от модуля» (данные — из расширенного каталога сервера лицензий). Отдельной кнопки «Подробнее» больше нет.

Обновление по умолчанию ручное: у виджета с более новой версией в каталоге появляется кнопка «Обновить». Тумблер «Автообновление виджетов» в тулбаре (WIDGET_AUTO_UPDATE_ENABLED, по умолчанию OFF) включает ежесуточное авто-обновление всех установленных виджетов. Аналогичный тумблер «Автообновление модулей» — на /admin/settings/modules/ (MODULE_AUTO_UPDATE_ENABLED), там же версия модуля показана бейджем рядом с названием. Полное описание политики версионности и автообновления — в разделе СОРМ → Версионность и обновления.

Точки монтирования и стандартные виджеты

Виджет «Лицензия и модули»
Виджет «Лицензия и модули»

Встроенные карточки «Быстрый доступ»

Шесть карточек в карточке клиента (Аудит, Услуги и бонусы, Операции, Обращения, Сообщения, Сессии) — тоже виджеты: в каталоге они показаны в секции «Встроенные карточки» и включаются/выключаются тумблером для всех сотрудников сразу. Удалить встроенную карточку нельзя — только выключить; персональная видимость из настроек профиля продолжает действовать поверх.

Карточка клиента с виджетами
Карточка клиента с виджетами

Виджет «Рекламные кампании»

Точка монтирования — дашборд CRM, стоит сразу под воронкой по организациям. За 30 дней: топ-3 кампании по заявкам, сделки, выручка и окупаемость, снизу итог по всем. Суммы коротко («403,5К»), точное значение — в подсказке. ROI считается только у кампаний с заявками. Клик по названию открывает дашборд кампании.

Виджет «Salesbot»

Отвечает на один вопрос — работают боты или молчат: диалоги за 30 дней, сколько дошло до заявки и какая доля. У каждого бота отметка «включён». Ссылка ведёт в конструктор сценариев.

Виджет «Организации: сводка»

Точка монтирования — дашборд CRM. Показывает, как распределены сделки между компаниями: всего, новые за 30 дней, в работе, выиграно и конверсия. Каждая строка помечена единым бейджем организации. При одной организации виджет скрывается сам. Устанавливается из каталога на странице /admin/settings/widgets/.

Мастер настройки

Мастер настройки CRM
Мастер настройки CRM

URL: /admin/crm/setup/ (CRM → Настройки → Мастер настройки). Пять шагов приводят CRM в боевое состояние: воронки из пресетов, каналы приёма заявок, команда и распределение лидов, AI-бот Поддержки, рекомендованные виджеты — каждый шаг применяется одной кнопкой и пишет только в существующие настройки. Чеклист «Готовность CRM» из шести живых проверок (есть воронка, работает источник, настроено распределение, включён бот, пришёл свежий лид, установлен виджет) обновляется после каждого шага.

Карточка сделки (полноэкранный дровер)

Карточка сделки: источник заявки, последнее касание, лента событий
Карточка сделки: источник заявки, последнее касание и лента с историей

Под именем клиента — две служебные строки, по которым состояние сделки видно без перехода по вкладкам: источник заявки с датой («Чат на сайте · 15.09.2026») и последнее касание со счётчиками («последнее касание 15.09.2026 · 3 звонка · 2 примечания»). Если касаний не было — так и написано: это данные, а не пропуск.

Лента: сообщения, звонки и история сделки

Лента сделки: примечания, звонки и системные события
Лента сделки: примечания, звонки и системные события одной хронологией

В ленту сведены примечания, звонки с расшифровкой, задачи и история сделки: «Сделка создана», «Стадия: Неразобранное → Назначен монтаж», «Ответственный: …», «Документ: …». Источник истории — аудит CRM, ключи стадий переводятся подписями воронки. Подряд идущие одинаковые события одного автора (шесть правок полей за минуту при заполнении формы) сворачиваются в одну строку со счётчиком, чтобы лента оставалась читаемой.

Срезы над лентой — «Все», «Примечания», «Звонки», «События»: последний оставляет только системные строки, когда нужно понять, кто и когда двигал сделку. Поиск по ленте ищет и по тексту событий.

Вкладка «Подключение»

Вкладка «Подключение»: монтаж, монтажник, роутер, тариф и суммы
Вкладка «Подключение»: монтаж с временем, роутер из Склада, суммы

«Монтаж назначен» — одно поле с датой и временем. Быстрые кнопки «Сегодня / Завтра / Послезавтра / Через неделю» ставят дату, время выбирается рядом; дата уходит в поле монтажа, время — в окно монтажа, поэтому наряд монтажника и календарь получают точный интервал. Если монтажник в это время уже занят другой сделкой, карточка спросит подтверждение и покажет, кем занят слот, — раньше такой ответ сервера терялся молча.

Выбор даты и времени монтажа
Выбор даты и времени монтажа: быстрые кнопки и точное время

«Квартира» — отдельное поле рядом с адресом: справочник адресов хранит только дома. Квартира видна в шапке карточки («…, д 61, кв 12») и в данных для договора, подставляется в окно «Создать абонента». Заявки с сайта, из звонков и писем заполняют её сами — из адреса заявки; при создании сделки и лида вручную квартира берётся из выбранной подсказки адреса.

Вкладка «Подключение»: адрес и квартира отдельными полями
Вкладка «Подключение»: адрес и квартира отдельными полями
Почему так. Раньше геокодер заводил в справочник адрес целиком, вместе с квартирой, и переименовывал уже существующий дом адресом последней заявки — у соседей в карточке оказывалась чужая квартира. 16.09.2026 такие записи вычищены: квартира перенесена в сделки (из текста заявки) и клиентам, подробнее.

«Роутер» выбирается из номенклатуры Склада: категория «Роутеры», режим передачи «Продажа» (при желании — и «Аренда»). В списке сразу видны цена и остаток, поэтому менеджер не обещает клиенту модель, которой нет. Пока модуль Склада выключен или роутеры не заведены, поле остаётся обычным текстовым, и связь со Складом ничего не ломает.

Список роутеров из Склада с ценой и остатком
Роутер выбирается из Склада: цена и остаток видны в списке
Итого без абонплаты. Пока тариф не выбран, месячная плата в сумму не входит, и «Итого» помечается «без абонплаты» — сумма не выдаётся за окончательную. Если в названии сделки указана скорость, а тариф пуст, карточка говорит об этом прямо у поля тарифа.

Перевод стадии: что произойдёт

Клик по стадии — и на полосе карточки, и в окне «Перевести в стадию» — сначала показывает, что именно изменится: сама смена стадии, автоматизации (SMS клиенту, задача монтажнику, письмо, webhook), попадание монтажа в календарь. Если перевод невозможен, вместо этого выводится список того, что нужно заполнить.

Подтверждение перевода стадии со списком изменений
Перед переводом видно, что изменится и какие автоматизации сработают
flowchart TD
    C["Клик по стадии"] --> P["Предпросмотр на сервере
(ничего не меняет)"] P --> G{"Правила входа
в стадию"} G -- "не хватает данных" --> STOP["Список незаполненного:
монтажник, дата, паспорт, договор"] G -- "правила пройдены" --> W["Окно подтверждения:
стадия A → B, автоматизации,
календарь монтажа"] W -- "Отмена" --> X["Ничего не изменилось"] W -- "Перевести" --> S["Стадия сохранена"] S --> A["Автоматизации стадии"] S --> H["Запись в историю сделки
(видна в ленте)"] A --> T["Задача"] A --> M["SMS / письмо / Telegram"] A --> D["Документ"]

Стадии в боковой панели лида

Так же работает боковая панель лида, которая открывается с дашборда, карты, календаря, задач и списков.

Боковая панель лида: стадии в цветах воронки
Бейдж стадии и чипы стадий в цветах воронки; недоступная стадия — полупрозрачная
Окно «Нельзя перевести»
Перевод невозможен: что заполнить
Окно «Перевести в стадию» со списком последствий
Перевод возможен: что изменится

Откуда карточка берёт данные

flowchart LR
    AUD[("Аудит CRM")] --> FEED["Лента: история сделки"]
    NOTES[("Примечания и звонки")] --> FEED
    NOTES --> TOUCH["Строка последнего касания"]
    SRC[("Источник заявки")] --> HEAD["Шапка карточки"]
    STOCK[("Склад: роутеры
категория «Роутеры», режим «Продажа»")] --> CONN["Вкладка «Подключение»"] TAR[("Тарифы с флагом CRM")] --> CONN ZONE[("Зоны покрытия")] --> NEAR["Виджет «Рядом с адресом»"] USERS[("Клиенты в доме")] --> NEAR

Виджет «Рядом с адресом» отвечает по-разному на «нет данных» и «нет подключений»: у дома без координат радиус не считается и так и написано, а ноль подключений сопровождается пояснением. Там же — зона покрытия с технологией и время, когда расчёт выполнен.

Одинарный клик по карточке канбана открывает сделку дровером на весь экран. Слева — «паспорт сделки»: полоса-прогресс стадий (клик по сегменту переводит сделку), контакт с телефонами и адресом, параметры, клиент биллинга, обращения в Поддержку, мини-карта адреса и виджеты точки «Карточка сделки». Справа — лента: суть заявки, активность, задачи и композер внизу.

Вкладки левой панели:

Под контактом — блок «Проверьте данные из обращения» (что туда попадает) и ссылка «Не связываться…»: запрет на рекламу, звонки робота или на всё сразу для телефона сделки, клиента и контакта. Запрет действует во всех каналах — подробнее в разделе «Стоп-лист».

«Не связываться»: текущий запрет и выбор области
«Не связываться»: текущий запрет и выбор области
Какие тарифы видны в сделке. В списке тарифа на вкладке «Подключение» показываются тарифы с флагом «CRM» (отмечается в карточке тарифа → «Статус и видимость»). Если ни один тариф не помечен — показываются все не архивные тарифы. Сам селект тарифа — единый компонент SmitTariffSelect (обложка + скорость + цена).
Формирование договора. Кнопка «Сформировать договор» не активна, пока не заполнены необходимые поля (тариф, адрес, контакт) — при наведении тултип поясняет, чего не хватает. Перед генерацией показывается модалка подтверждения со сводкой данных, чтобы договор не ушёл с ошибками. Кнопка «Создать клиента» из сделки доступна только на выигранной стадии.
Единые компоненты в дровере. Селектор ответственного и монтажника — ProfileSelect (аватар + Фамилия И.О. + группы); кнопка «Наблюдать» — SmitWatchButton (иконка + счётчик, зелёный фон в активном состоянии); телефоны — SmitPhone с click-to-call; i-иконки справки в заголовках — SmitHelpIcon. Полоса-прогресс стадий учитывает правила воронки (запрет пропуска/движения назад, цвета стадий).
Вкладка Статистика — источник, счётчики, UTM-метки
Вкладка Статистика — источник, счётчики, UTM-метки

Задачи в ленте — карточками: видно, до какого времени и для кого поставлена задача; поле «Добавить результат» и кнопку «Выполнить» видит только ответственный. Задача, поставленная по словам клиента в звонке, показывает цитату и итог перепроверки (подробнее). Новая задача из композера требует дату/время и ответственного. Дубли: если у клиента есть другие открытые сделки с тем же телефоном, над лентой появляется плашка «Возможные дубли» — кнопка «Объединить» переносит заметки, задачи, звонки и теги в текущую сделку (id: дубль удаляется, в сделке остаётся системная заметка). Прямые ссылки вида /admin/crm/deals/<id>/ автоматически открывают канбан с этим дровером.