Граф Wiki

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

Содержание раздела

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

Все заявки — из мессенджеров, звонков, форм и почты — проходят через единую точку приёма: дедупликация по телефону, геокодирование адреса, привязка рекламной кампании по 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-агент»" --> AIDA["AI-агент AIDA"] 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 за пять минут:

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

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

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

CRM — воронка сделок с тегами и чипами

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

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

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

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

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

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

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

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вход в стадию → бот собирает недостающие данные

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Задачи

Задачи — просроченные, типы, результат

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

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

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

Списки — настройки таблицы и inline-редактор

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

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

Salesbot

Salesbot — канвас-редактор сценария

URL: /admin/crm/bots/ (CRM → Настройки → Salesbot). Визуальный конструктор чат-сценариев для входящих каналов: узлы перетаскиваются по канвасу, связи-ветки рисуются кликами по кружкам-выходам (ветки «Да/Нет» и «Другой ответ» подсвечены цветом). Бот отвечает клиенту до AI-агента и оператора.

flowchart TD
    IN["Входящее сообщение
Telegram / VK / MAX"] --> HOOK{"Salesbot"} HOOK -- "активный диалог" --> RUN["следующий шаг сценария"] HOOK -- "первый контакт
(канал в автозапуске)" --> START["стартовый узел"] HOOK -- "бот не назначен /
пауза 6 ч после диалога" --> AIDA["AI-агент"] AIDA -- "не справился" --> TK["Тикет оператору"] START --> RUN RUN --> B1["Сообщение с кнопками
(в Telegram — настоящие inline)"] RUN --> B2["Вопрос → сохранить ответ"] RUN --> B3{"Условие: слова /
рабочее время / телефон"} RUN --> B4["Лид в CRM
в воронку бота"] RUN --> B5["Передать AI-агенту"] RUN --> B6["Оператору: тикет-сводка
собранных данных"]
УзелЧто делает
Сообщениетекст + кнопки; у кнопки — синонимы для свободного текста («подключить, интернет»); ветка «Другой ответ» ловит нераспознанное
Вопросответ сохраняется: имя / телефон / адрес / любое доп. поле
Условиеключевые слова · рабочее время (часы) · «в ответе есть телефон»; ветки Да / Нет
Действиелюбое действие автоматизаций CRM (задача, SMS, теги…)
Лид в CRMсделка из собранных ответов — в воронку и организацию бота, через единую точку приёма (дедуп, геокод, SMS-подтверждение)
AI-агентпередача диалога AIDA; при сложном вопросе AI сам эскалирует оператору
Операторуэскалация: собранные данные уходят тикетом-сводкой в Поддержку
Переход / Стоппрыжок на другой шаг / завершение сценария

Пример — сценарий «Приём заявок» (стартовый шаблон):

  1. Приветствие с кнопками: Подключиться · Нет интернета · Оплата и баланс · Другой вопрос.
  2. «Подключиться» → адрес → имя → телефон (условие проверяет, что это телефон) → Лид в CRM → «Заявка принята 🎉».
  3. «Нет интернета» → условие «рабочее время 9–18»: днём — живая передача дежурному, ночью — бот записывает проблему и оформляет заявку на утро.
  4. «Оплата» → ссылка на личный кабинет + кнопка «Нужен оператор».
  5. «Другой вопрос» → передача AI-агенту.

В тулбаре редактора: каналы автозапуска (Telegram/VK/MAX), воронка для лидов, организация (multi-org: бот СмИТ не отвечает клиентам бота другой организации), тумблер «Включён» и «Тест» — симулятор диалога на живом движке, работающий и с несохранённым сценарием. После завершения диалога бот 6 часов не здоровается заново — клиент спокойно общается с AI или оператором.

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

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

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 (виджет «Сводка воронки»), далее — карточка сделки и карточка абонента.

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

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

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

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

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

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

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

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

Наряды монтажника

Наряды на монтаж

URL: /admin/crm/montazh/ — вид «Наряды» календаря (переключатель «Календарь | Наряды» на обеих страницах). Мобильный сценарий «мой наряд на день»: назначенные монтажи карточками — дата и окно времени, клиент, телефон одним касанием, адрес со ссылкой «маршрут», тариф и комментарий. Просроченный наряд помечается красным. Кнопка «Выполнено» переводит сделку в стадию «Подключено» её воронки прямо с телефона и оставляет системную заметку; «Перенести» сдвигает дату с причиной. Монтажник (группа installer) видит только свои наряды и не может закрыть чужой; менеджеру доступны все наряды и фильтр по монтажнику.

Дашборд и карта

URL: /admin/crm/. KPI, блок «На карте» — геопривязанные лиды и монтажи с фильтрами (диапазон дат / Все / Мои / Наблюдаю) и полноэкранным режимом. Тултип маркера: аватарка + Фамилия / Имя Отчество, телефон, стадия, адрес. Цвет маркера — по стадии сделки.

CRM — дашборд с картой

Рекламные кампании

URL: /admin/crm/campaigns/. Кампании и каналы с UTM-метками: линк-билдер + QR-код, привязка сделки к кампании по utm_campaign в момент приёма (единая точка всех каналов), дашборд CAC (стоимость привлечения).

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

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

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

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

Какие тарифы видны в сделке. В списке тарифа на вкладке «Подключение» показываются тарифы с флагом «CRM» (отмечается в карточке тарифа → «Статус и видимость»). Если ни один тариф не помечен — показываются все не архивные тарифы.

Вкладка Статистика — источник, счётчики, UTM-метки

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