Как мы превратили EspoCRM в собственную систему продаж, аналитики и автоматизации

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

Как мы превратили EspoCRM в собственную систему продаж, аналитики и автоматизации

Мы искали систему, которую можно не только настроить один раз, но и последовательно развивать под собственные процессы. В итоге остановились на EspoCRM и постепенно превратили её в единый центр коммерческой информации.

Теперь в ней хранятся не только клиенты и сделки, но и структура сотрудников контрагента, финансовая динамика, закупочные сигналы, вакансии, документы, напоминания и аналитика.

Почему EspoCRM

EspoCRM — open-source CRM, которую можно установить на собственный сервер. Она распространяется по лицензии AGPLv3, а self-hosted-версия не требует обязательной оплаты за каждого пользователя. Данные и бизнес-логика при этом остаются под контролем компании. 1175

В базовой конфигурации система закрывает стандартные задачи:

  • компании и контакты;
  • лиды и сделки;
  • звонки, встречи и задачи;
  • входящие и исходящие письма;
  • историю взаимодействия;
  • обращения;
  • маркетинговые кампании;
  • роли и права доступа;
  • клиентский портал.

Но для нас решающим преимуществом стала архитектура.

Через Entity Manager можно создавать собственные сущности, поля и связи. Более глубокая логика реализуется через PHP, JavaScript, metadata и REST API. Поэтому EspoCRM можно использовать не только как готовую CRM, но и как платформу для собственного бизнес-приложения.

Какие проблемы мы хотели решить

При анализе отзывов владельцев бизнеса и пользователей CRM постоянно повторяются одни и те же жалобы.

CRM не соответствует реальному процессу

Одна из самых частых проблем — компания вынуждена подстраивать продажи под логику программы, а не наоборот. Пользователи рассказывают, что после месяцев обучения сотрудники всё равно возвращаются в WhatsApp и таблицы, потому что привычный процесс не помещается в стандартную модель CRM. 1628

EspoCRM позволяет изменить модель без переписывания всей системы. Можно создать свои сущности, поля, связи, статусы и автоматические проверки.

Мы, например, добавили не только сделки, но и тендеры, вакансии, сигналы, финансовые показатели и организационную структуру сотрудников клиента.

Слишком много ручной работы

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

Поэтому мы автоматизировали заполнение реквизитов, расчёт последнего контакта, сбор внешних сигналов, напоминания и часть аналитики.

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

Высокая стоимость лицензий

По мере роста команды стоимость SaaS-CRM может резко увеличиваться. Пользователи жалуются, что функции, которые раньше входили в тариф, переходят в более дорогие пакеты, а почти любое расширение требует новой оплаты. 1626

У self-hosted EspoCRM нет обязательной платы за каждое рабочее место. Остаются затраты на сервер, настройку, сопровождение и при необходимости коммерческие расширения, но рост числа сотрудников не приводит автоматически к такому же росту ежемесячной подписки.

CRM живёт отдельно от коммуникаций

Если задачи находятся в CRM, переписка — в почте, напоминания — в календаре, а срочные вопросы — в Telegram, информация распадается на несколько систем.

Мы не стали заставлять сотрудников постоянно держать CRM открытой. Вместо этого вынесли важные события в привычный канал — Telegram? куда приходят оповещения, напоминания.

Данные быстро устаревают

CRM полезна только до тех пор, пока её данные актуальны. Если сотрудники не обновляют карточки, через несколько месяцев система превращается в архив.

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

Наш ответ — автоматическое обогащение, фоновые обновления и минимизация обязательного ручного ввода.

Как мы превратили EspoCRM в собственную систему продаж, аналитики и автоматизации

Как работает система

Основу составляют связанные бизнес-объекты.

Контрагент — компания, с которой мы работаем или планируем работать. В карточке хранятся реквизиты, отрасль, статус, ответственный, финансовые показатели, контакты, сделки, документы и история коммуникаций.

Контакт — конкретный сотрудник компании. У него есть должность, подразделение, телефон, почта, роль в принятии решения и связь с другими сотрудниками.

Сделка описывает коммерческую возможность: этап, сумму, вероятность, продукт, сроки и участников со стороны клиента.

Активности объединяют звонки, встречи, задачи и письма. Они формируют хронологию отношений с компанией.

Кроме стандартных объектов, можно создавать собственные. Например, отдельно учитывать тендеры, вакансии, сигналы, проекты, договоры или оборудование.

В итоге пользователь видит не разрозненные записи, а единый контекст по клиенту.

Что мы добавили

Обогащение компаний по ИНН

Вместо ручного заполнения менеджер указывает ИНН и запускает обновление карточки.

CRM обращается к внешнему сервису и получает:

  • КПП и ОГРН;
  • полное и краткое наименование;
  • юридический адрес;
  • дату регистрации;
  • статус организации;
  • руководителя и его должность;
  • основной ОКВЭД;
  • отрасль;
  • численность сотрудников;
  • финансовые показатели;
  • отдельные признаки риска.

Данные записываются в обычные поля EspoCRM. Менеджеру не нужно переключаться между реестрами и переносить информацию вручную.

Также система показывает статус обогащения: когда был выполнен запрос, завершился ли он успешно и требуется ли повторная проверка.

Финансовая аналитика

Просто хранить последнюю выручку недостаточно. Нам важно видеть динамику.

В карточке контрагента отображаются:

  • выручка по годам;
  • прибыль или убыток;
  • численность персонала контрагента;
  • изменение показателей;
  • финансовые и регистрационные риски.

Рост оборота и численности может говорить о расширении бизнеса. Падение прибыли при растущей выручке, напротив, требует дополнительного анализа.

CRM превращает финансовые показатели из набора чисел в часть процесса квалификации клиента. Более того, можно ввести свой Скорин каждого контрагента - по опыту на рынке, по обороту, по финансовым показателям и т.д. Сделать расчет по формуле и по каждому контрагенту видеть его благонадежность, более того, регулярно обновлять Скорин на основе обновленных данных.

Организационная структура клиента

В сложных B2B-продажах одного поля «контактное лицо» недостаточно. В принятии решения могут участвовать руководители, инженеры, пользователи, снабжение, финансисты и юристы.

В карточку контакта мы добавили:

  • подразделение;
  • управленческий уровень;
  • роль в принятии решения;
  • признак ключевого контакта;
  • непосредственного руководителя;
  • список подчинённых.

Так в CRM постепенно формируется карта сотрудников контрагента.

При выборе руководителя список ограничивается сотрудниками той же компании. Дополнительная серверная проверка не позволяет сохранить некорректную связь.

В результате система отвечает не только на вопрос «с кем мы общаемся», но и показывает, кто реально влияет на решение.

Последний контакт

Одна из типичных проблем продаж — забытые отношения. Компания числится в базе, но никто не помнит, когда с ней общались в последний раз.

Мы добавили расчёт последнего взаимодействия для контакта и контрагента. Учитываются:

  • звонки;
  • встречи;
  • входящие письма;
  • исходящие письма;
  • коммуникации со всеми сотрудниками компании.

Если менеджер общался с инженером предприятия, эта активность влияет и на общий показатель контрагента.

Дополнительно рассчитывается количество дней без контакта. Это позволяет быстро находить компании, которым пора написать или позвонить.

Как мы превратили EspoCRM в собственную систему продаж, аналитики и автоматизации

Telegram-уведомления и напоминания

Не все сотрудники проводят рабочий день внутри CRM. Поэтому критичные события мы отправляем в Telegram.

В Telegram могут приходить:

  • новые обращения;
  • назначение ответственного;
  • задачи с приближающимся сроком;
  • просроченные задачи;
  • напоминания о звонках и встречах;
  • компании, с которыми давно не было контакта;
  • важные изменения статуса сделки;
  • новые тендерные или кадровые сигналы;
  • ошибки фоновых интеграций.

Уведомления можно персонализировать. Каждый менеджер получает сообщения только по своим клиентам, задачам и сделкам.

Например, утром сотруднику может прийти короткая подборка:

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

Telegram в этой схеме не заменяет CRM. Он работает как оперативный слой: сообщает, что произошло и куда нужно перейти.

Это снижает риск, что задача потеряется просто потому, что сотрудник не открыл нужный раздел.

Надёжная отправка почты через relay

Почта — одна из самых проблемных частей любой CRM. После переноса сервера, изменения DNS или ограничений хостинг-провайдера исходящие письма могут внезапно перестать отправляться.

Отдельная проблема — блокировка исходящего порта 25. Провайдеры рекомендуют в таком случае использовать альтернативные порты 587 или 465 либо внешний SMTP relay. Также критично правильно настроить SPF, DKIM, DMARC и PTR. 1623

Мы используем почтовый relay как промежуточный слой между EspoCRM и почтовым сервисом.

CRM передаёт письмо relay-сервису, а тот занимается доставкой. Это даёт несколько преимуществ:

  • приложение не зависит от доступности порта 25;
  • смена сервера CRM не требует полностью переделывать почту;
  • проще контролировать авторизацию;
  • доступны отдельные логи доставки;
  • можно отслеживать отказы и ошибки;
  • меньше риск, что отправка «молча» перестанет работать;
  • почтовые настройки не привязаны жёстко к одному серверу.

Relay не гарантирует идеальную доставляемость сам по себе. Но он отделяет работу приложения от работы почтовой инфраструктуры и делает сбои заметнее.

Для бизнес-системы это важнее, чем кажется. Если CRM создаёт письмо, но клиент его не получает, автоматизация существует только формально.

Тендерные сигналы

Мы связываем с контрагентами сведения о закупках и тендерах.

Менеджер видит:

  • какие закупки обнаружены;
  • насколько они соответствуют нашим продуктам;
  • когда заканчивается приём заявок;
  • участвовала ли компания в похожих тендерах;
  • какое следующее действие назначено ответственному.

Цель — не собрать все закупки подряд, а выделить действительно полезные сигналы. Иначе система быстро превращается в источник информационного шума.

Вакансии как индикатор спроса

Публикуемые вакансии могут показать планы компании раньше официальной закупки.

Например:

  • набор инженеров АСУ ТП может указывать на автоматизацию;
  • поиск специалистов по обслуживанию — на расширение оборудования;
  • рост ИТ-команды — на новый цифровой проект;
  • массовый найм производственного персонала — на запуск площадки.

Мы подключили вакансии к контуру сигналов, добавили оценку релевантности и дедупликацию между источниками.

Важен не сам факт публикации вакансии, а ответ на вопрос: почему она может быть полезна отделу продаж.

ИИ-аналитика

Следующий слой — автоматическая подготовка краткой справки по компании.

Система может объединять:

  • реквизиты;
  • финансовую динамику;
  • новости;
  • отзывы;
  • вакансии;
  • тендеры;
  • продукты и проекты;
  • историю нашего взаимодействия.

На основании этих данных формируется бриф: чем занимается компания, что у неё происходит сейчас, какие потенциальные потребности можно предположить и с каким предложением лучше выходить.

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

Для заказчика важны потребности и проекты. Для посредника — с кем он работает и какие решения поставляет. Для конкурента — продукты, реализованные проекты и выигранные тендеры.

ИИ не заменяет менеджера. Он сокращает время подготовки и помогает увидеть связь между разрозненными фактами.

Документы без перегрузки сервера

Если хранить все договоры, коммерческие предложения, презентации, чертежи и архивы непосредственно на сервере CRM, диск со временем превращается в проблему.

Приложению нужно место для базы данных, кеша, журналов и обновлений. Большой файловый архив усложняет резервное копирование и восстановление.

Поэтому документы можно вынести в отдельное S3-совместимое объектное хранилище.

Схема выглядит так:

  1. Пользователь загружает документ через интерфейс EspoCRM.
  2. CRM сохраняет метаданные и связь с клиентом.
  3. Сам файл отправляется в S3.
  4. При скачивании CRM проверяет права и выдаёт доступ к объекту.
  5. Правила хранения и резервирования применяются на стороне хранилища.

Для старых или редко используемых документов можно добавить «холодный» уровень хранения. Туда перемещаются архивные файлы, которые должны сохраняться, но почти не открываются.

Такой подход позволяет:

  • не захламлять диск сервера;
  • отдельно масштабировать файлы;
  • хранить большие объёмы документов;
  • применять lifecycle-политики;
  • разграничивать оперативное и архивное хранение;
  • проще переносить или восстанавливать CRM;
  • независимо резервировать базу и файлы.

S3 — не замена резервной копии. Если пользователь удалит объект и политика хранения это разрешит, файл также может исчезнуть. Поэтому важны версионирование, правила retention и отдельный backup.

Резервное копирование

Self-hosted-система хороша только тогда, когда её можно восстановить.

У EspoCRM достаточно прозрачная структура: база данных, пользовательские файлы, конфигурация и кастомный код. Это позволяет построить понятную схему резервного копирования.

Мы разделяем резервирование на несколько уровней:

  • база данных;
  • пользовательские файлы;
  • конфигурация;
  • кастомизации;
  • документы в S3;
  • резервная копия перед каждым развёртыванием.

Код хранится в Git, поэтому его не нужно восстанавливать из случайной копии сервера.

Перед обновлением deploy-скрипт создаёт pre-deployment backup. Затем переносит изменения, очищает кеш, выполняет rebuild и запускает проверки. Старые архивы автоматически ротируются, чтобы не заполнять диск.

Дополнительно резервные копии можно отправлять в S3-хранилище и переводить старые версии в холодный класс. Тогда авария на сервере не уничтожит одновременно рабочую систему и её backup.

Главный принцип: резервная копия считается рабочей только после проверки восстановления.

Клиентский портал

Мы предусмотрели отдельный портал для клиентов и сотрудников компаний.

Через него можно:

  • выдавать доступ конкретным контактам;
  • передавать документы;
  • принимать файлы от клиента;
  • оставлять комментарии;
  • ограничивать видимость записей;
  • сохранять историю обмена.

Портал позволяет отказаться от хаотичной пересылки файлов в разных мессенджерах и почтовых цепочках.

Клиент видит только связанные с ним данные, а внутренняя часть CRM остаётся закрытой.

Автоматизация процессов

EspoCRM поддерживает автоматические действия: изменение записей по условиям, назначение ответственных, создание связанных записей, отправку писем и запуск интеграций через API.

Мы используем автоматизацию в нескольких сценариях:

  • обновление реквизитов по ИНН;
  • расчёт последнего контакта;
  • создание и обновление сигналов;
  • сбор внешних данных;
  • оценка рисков;
  • подготовка аналитических справок;
  • Telegram-напоминания;
  • контроль просроченных задач;
  • проверка организационной иерархии;
  • мониторинг ошибок интеграций.

Часть процессов работает по расписанию, часть запускается при изменении записи, а часть — вручную кнопкой.

Не каждую операцию нужно автоматизировать полностью. Фоновое обновление финансовых показателей удобно выполнять по расписанию, а дорогой ИИ-анализ — только для приоритетных компаний или по запросу пользователя.

Как мы выпускаем изменения

Open source даёт свободу менять систему, но без дисциплины эта свобода быстро превращается в набор файлов, вручную исправленных на сервере.

Поэтому мы отделили настройку через интерфейс от разработки.

В интерфейсе выполняются изменения, которыми должен управлять администратор:

  • расположение полей;
  • справочники;
  • права доступа;
  • пользовательские представления;
  • отдельные настройки.

Кодовые изменения хранятся в GitHub:

  • backend на PHP;
  • frontend на JavaScript;
  • metadata;
  • тесты;
  • deploy-скрипты;
  • GitHub Actions.

Каждое изменение проходит через отдельную ветку и pull request. CI проверяет синтаксис, JSON, связи metadata и бизнес-правила.

Продакшен работает в Docker. Перед обновлением скрипт:

  1. Проверяет выбранную версию.
  2. Создаёт резервную копию.
  3. Переносит только необходимые файлы.
  4. Сохраняет настройки, которыми управляет экземпляр CRM.
  5. Очищает кеш.
  6. Выполняет rebuild.
  7. Запускает smoke-проверки.
  8. Ротирует старые резервные копии.

Такой процесс защищает систему от случайных изменений и позволяет понять, какая версия сейчас работает на сервере.

Чем EspoCRM хороша

Контроль над данными

Self-hosted-развёртывание позволяет хранить клиентскую базу на собственной инфраструктуре и самостоятельно управлять доступом, резервированием и обновлениями.

Нет обязательной платы за каждого пользователя

В open-source-версии нет помесячной лицензии на каждое рабочее место. При росте команды увеличиваются прежде всего инфраструктурные расходы и стоимость сопровождения, а не число лицензий.

Некоторые официальные расширения и продвинутые функции приобретаются отдельно, но базовая система остаётся открытой.

Можно адаптировать CRM под процесс

Большую часть модели можно собрать через Entity Manager: создать сущности, поля и связи.

Когда возможностей интерфейса становится недостаточно, можно перейти к metadata, обработчикам, hooks и API, не изменяя ядро приложения.

Есть REST API

CRM можно связывать с сайтом, почтой, Telegram, внешними реестрами, аналитикой, объектным хранилищем и собственными приложениями.

Система растёт постепенно

Необязательно сразу проектировать идеальную CRM. Можно начать с минимальной структуры:

  • компании;
  • контакты;
  • сделки;
  • задачи;
  • источники;
  • история коммуникаций.

Затем добавлять следующий слой: квалификацию, документы, тендеры, сигналы, портал и аналитику.

Главное — не создавать поля «на всякий случай». Каждое поле должно влиять на решение, фильтр, отчёт или автоматическое действие.

Где есть сложности

EspoCRM нельзя назвать системой, которую достаточно установить и забыть.

Self-hosted-развёртывание требует:

  • обновлений;
  • резервного копирования;
  • мониторинга;
  • защиты сервера;
  • настройки почты;
  • контроля фоновых заданий;
  • проверки свободного места;
  • тестирования восстановления.

Глубокая кастомизация требует понимания PHP, JavaScript, metadata и архитектуры EspoCRM.

Часть продвинутых инструментов Workflow, BPM и отчётности поставляется в коммерческих расширениях.

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

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

Кому подойдёт EspoCRM

EspoCRM особенно интересна компаниям, которым:

  • нужна CRM на собственной инфраструктуре;
  • важен контроль над клиентскими данными;
  • не подходит оплата за каждого сотрудника;
  • требуется нестандартная модель продаж;
  • нужны собственные сущности и связи;
  • планируются интеграции с внешними сервисами;
  • важно подключить Telegram, почту и API;
  • требуется отдельное хранение документов;
  • есть ресурс на администрирование или разработку.

Если нужен полностью готовый облачный продукт без технического участия, SaaS-CRM может оказаться проще.

Но если CRM должна стать частью собственной информационной системы, а не просто таблицей сделок, EspoCRM даёт хороший баланс между готовым продуктом и платформой разработки.

Что получилось

В нашей конфигурации EspoCRM уже не ограничивается учётом клиентов.

Она объединяет:

  • коммерческую историю;
  • реквизиты и финансовые показатели;
  • структуру сотрудников контрагента;
  • даты последних коммуникаций;
  • Telegram-напоминания;
  • почту через устойчивый relay;
  • тендеры и закупочные сигналы;
  • вакансии;
  • риски;
  • документы в S3;
  • холодное архивное хранение;
  • клиентский портал;
  • ИИ-брифы;
  • резервное копирование;
  • контролируемый выпуск обновлений.

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

Именно в этом мы видим смысл CRM: не хранить как можно больше информации, а вовремя отвечать менеджеру на три вопроса — что происходит у клиента, почему это важно и что делать дальше.

Если вам интересно внедрение EspoCRM, проектирование структуры, интеграции, автоматизация или перенос существующего процесса в self-hosted CRM — обращайтесь. Расскажу о нашем опыте и проконсультирую, с какой конфигурации лучше начать.

11