Как мы превратили EspoCRM в собственную систему продаж, аналитики и автоматизации
CRM может быть дорогой, перегруженной и неудобной для менеджеров. В результате сотрудники снова возвращаются к таблицам, Telegram и личным заметкам.
Мы искали систему, которую можно не только настроить один раз, но и последовательно развивать под собственные процессы. В итоге остановились на 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 требует много неоплачиваемой административной работы. Пользователи отмечают, что ключевые специалисты постепенно перестают вносить информацию, после чего качество данных ухудшается, а система воспринимается как бесполезная.
Наш ответ — автоматическое обогащение, фоновые обновления и минимизация обязательного ручного ввода.
Как работает система
Основу составляют связанные бизнес-объекты.
Контрагент — компания, с которой мы работаем или планируем работать. В карточке хранятся реквизиты, отрасль, статус, ответственный, финансовые показатели, контакты, сделки, документы и история коммуникаций.
Контакт — конкретный сотрудник компании. У него есть должность, подразделение, телефон, почта, роль в принятии решения и связь с другими сотрудниками.
Сделка описывает коммерческую возможность: этап, сумму, вероятность, продукт, сроки и участников со стороны клиента.
Активности объединяют звонки, встречи, задачи и письма. Они формируют хронологию отношений с компанией.
Кроме стандартных объектов, можно создавать собственные. Например, отдельно учитывать тендеры, вакансии, сигналы, проекты, договоры или оборудование.
В итоге пользователь видит не разрозненные записи, а единый контекст по клиенту.
Что мы добавили
Обогащение компаний по ИНН
Вместо ручного заполнения менеджер указывает ИНН и запускает обновление карточки.
CRM обращается к внешнему сервису и получает:
- КПП и ОГРН;
- полное и краткое наименование;
- юридический адрес;
- дату регистрации;
- статус организации;
- руководителя и его должность;
- основной ОКВЭД;
- отрасль;
- численность сотрудников;
- финансовые показатели;
- отдельные признаки риска.
Данные записываются в обычные поля EspoCRM. Менеджеру не нужно переключаться между реестрами и переносить информацию вручную.
Также система показывает статус обогащения: когда был выполнен запрос, завершился ли он успешно и требуется ли повторная проверка.
Финансовая аналитика
Просто хранить последнюю выручку недостаточно. Нам важно видеть динамику.
В карточке контрагента отображаются:
- выручка по годам;
- прибыль или убыток;
- численность персонала контрагента;
- изменение показателей;
- финансовые и регистрационные риски.
Рост оборота и численности может говорить о расширении бизнеса. Падение прибыли при растущей выручке, напротив, требует дополнительного анализа.
CRM превращает финансовые показатели из набора чисел в часть процесса квалификации клиента. Более того, можно ввести свой Скорин каждого контрагента - по опыту на рынке, по обороту, по финансовым показателям и т.д. Сделать расчет по формуле и по каждому контрагенту видеть его благонадежность, более того, регулярно обновлять Скорин на основе обновленных данных.
Организационная структура клиента
В сложных B2B-продажах одного поля «контактное лицо» недостаточно. В принятии решения могут участвовать руководители, инженеры, пользователи, снабжение, финансисты и юристы.
В карточку контакта мы добавили:
- подразделение;
- управленческий уровень;
- роль в принятии решения;
- признак ключевого контакта;
- непосредственного руководителя;
- список подчинённых.
Так в CRM постепенно формируется карта сотрудников контрагента.
При выборе руководителя список ограничивается сотрудниками той же компании. Дополнительная серверная проверка не позволяет сохранить некорректную связь.
В результате система отвечает не только на вопрос «с кем мы общаемся», но и показывает, кто реально влияет на решение.
Последний контакт
Одна из типичных проблем продаж — забытые отношения. Компания числится в базе, но никто не помнит, когда с ней общались в последний раз.
Мы добавили расчёт последнего взаимодействия для контакта и контрагента. Учитываются:
- звонки;
- встречи;
- входящие письма;
- исходящие письма;
- коммуникации со всеми сотрудниками компании.
Если менеджер общался с инженером предприятия, эта активность влияет и на общий показатель контрагента.
Дополнительно рассчитывается количество дней без контакта. Это позволяет быстро находить компании, которым пора написать или позвонить.
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-совместимое объектное хранилище.
Схема выглядит так:
- Пользователь загружает документ через интерфейс EspoCRM.
- CRM сохраняет метаданные и связь с клиентом.
- Сам файл отправляется в S3.
- При скачивании CRM проверяет права и выдаёт доступ к объекту.
- Правила хранения и резервирования применяются на стороне хранилища.
Для старых или редко используемых документов можно добавить «холодный» уровень хранения. Туда перемещаются архивные файлы, которые должны сохраняться, но почти не открываются.
Такой подход позволяет:
- не захламлять диск сервера;
- отдельно масштабировать файлы;
- хранить большие объёмы документов;
- применять 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. Перед обновлением скрипт:
- Проверяет выбранную версию.
- Создаёт резервную копию.
- Переносит только необходимые файлы.
- Сохраняет настройки, которыми управляет экземпляр CRM.
- Очищает кеш.
- Выполняет rebuild.
- Запускает smoke-проверки.
- Ротирует старые резервные копии.
Такой процесс защищает систему от случайных изменений и позволяет понять, какая версия сейчас работает на сервере.
Чем 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 — обращайтесь. Расскажу о нашем опыте и проконсультирую, с какой конфигурации лучше начать.