Пять лет на Битрикс24, потом я начал писать свою CRM. Вот что из этого вышло

Пять лет на Битрикс24, потом я начал писать свою CRM. Вот что из этого вышло

Пять лет мы жили в Битрикс24. Штат - около 60 человек, оптовая торговля, 1С, полевые менеджеры, дебиторка, которую нельзя «закрыть сделкой». Я - разработчик внутри компании. Не интегратор на аутсорсе, не вендор Битрикс24 - человек, который каждый день видел, как система расходится с реальностью.

В какой-то момент Битрикс24 перестал быть инструментом и стал отдельной работой. Менеджеры продавали - в голове, в Excel, в мессенджерах. В Битрикс24 заносили «для отчёта». РОП собирал картину по отделу из выгрузок. 1С жила своей жизнью. Я смотрел на это и думал: мы платим за платформу, а компания платит за обход платформы.

Так началась СУП(Система управления продажами) - внутренняя система, которую я писал под конкретный бизнес, а не под «типовую воронку B2B». Это не стартап и не попытка продать продукт на рынок. Это мой личный эксперимент, который вырос в prod-систему на 60 сотрудников.

Расскажу честно: зачем, что ломалось, где я облажался и стоило ли оно того.

Пять лет Битрикс24: что работало и где сломалось

Первые годы всё было нормально. Коробка, воронка, задачи, мобилка - «все так делают», внедрение не выглядело безумием.

Но бизнес не вписывался в универсальную модель.

Дебиторка. ПДЗ - это не стадия сделки, а ежедневная рутина: звонки, обещания, комментарии, эскалации, иногда суды. В Битриксе это превращалось в кастомные поля, которые никто не заполняет, или в параллельный учёт в Excel. Я видел это каждый месяц.

1С. Две базы - База 1и «База 2». Клиенты, факт, сверки - источник правды в учёте, не в CRM. Каждая доработка - интегратор, сроки, бюджет. Я мог написать связку сам, но писать её внутрь чужой модели данных - больно и дорого.

60 человек - это уже не «поставил CRM и забыл». Разные роли: менеджеры, ассистенты, РОП, логисты, бухгалтерия, админы. Универсальные права и экраны для всех перестают работать. Люди начинают жить в своих инструментах.

Менеджер в поле. Ему нужен план на сегодня: кому звонить по долгу, куда ехать, какой бланк отправить. Не методология продаж, а рабочий стол на понедельник утром.

К пятому году картина была предсказуемой: CRM есть, но решения принимаются вне неё. Я устал чинить процессы костылями и начал думать - а что если написать то, что реально нужно?

«Давайте сделаем свою» - и почему это страшно

Когда разработчик внутри компании говорит «давайте свою CRM», все слышат «годы разработки и неизвестно что выйдет». И они правы.

Я не продавал идею как «убьём Битрикс24». Я продавал конкретику: план на день, дебиторка как операционный контур, бланк заказа клиенту по ссылке, нормальная связка с 1С - то, чего в коробке нет или оно стоит как отдельный проект.

Риски я понимал:

  • стану вечным владельцем продукта;
  • любой баг в пятницу - мой;
  • feature creep съест все свободные вечера;
  • команде придётся переучиваться.

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

С чего я начал (и почему не с «идеальной архитектуры»)

Первый принцип: не копировать Битрикс24, а закрыть ежедневную рутину менеджера.

MVP был приземлённым:

  • план-факт, задачи, клиенты;
  • дебиторка отдельным контуром;
  • дашборды для менеджера и РОПа;
  • справочники под реальную структуру: сети, сегменты, районы;
  • переключатель База 1/База 2 - потому что бизнес живёт в двух базах.

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

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

Потом пошли фичи, которые в коробочной CRM обычно либо отсутствуют, либо стоят как отдельный проект:

  • публичный бланк заказа - /order/:token, клиент без логина, согласия ПДн, MAX/Telegram;
  • план на день - дебиторка дня, встречи, воронка развития, сделки с датой следующего контакта;
  • наличка - движения по кассам, в том числе с водителями;
  • РКБ и АКБ - разные воронки под разные типы продаж;
  • табель - рабочий день в той же системе, где продажи.

Каждая фича - от конкретного раздражения, которое я слышал от коллег. Не из чеклиста «что должно быть в CRM».

Момент, когда пет-проект стал слишком большим

Самый нервный эпизод для меня как разработчика - миграция PocketBase → Supabase.

К этому моменту в системе уже тысячи клиентов, десятки связанных сущностей, файлы, права по ролям, боты и сервисы вокруг CRM. PocketBase отработал на старте, но для 60 сотрудников, RLS, нормального Postgres и единого контура для фронта и ботов - упёрлись в потолок.

Cutover - отдельный проект: финальный перенос, smoke-тесты, план отката, ночь, когда всё должно встать с первого раза. Я помню это не как «технический апгрейд», а как момент, когда понимаешь: ты уже не пишешь утилиту, ты отвечаешь за инфраструктуру отдела продаж.

После миграции CRM жила на prod как рабочий инструмент, а не как «эксперимент разработчика».

Что я смог сделать только потому, что писал сам

Вот что для меня было главным доводом «своё лучше коробки»:

Лента клиента - звонки, история, бланки, дебиторка в одной хронологии. Не пять вкладок, не «собери картину сам».

Публичный контур - клиент делает действие без логина в CRM: бланк, согласия, статус доставки через MAX. Менеджер отправил ссылку - система зафиксировала.

Телефония - входящий → push → карточка. Комментарии обратно в АТС. Звонок внутри CRM, а не «где-то рядом».

AI-помощник - RAG по регламентам плюс инструменты с правами пользователя: задачи, дебиторка, табель. Не чат ради хайпа, а сокращение «а куда нажать / что у меня по долгам».

Мотивация, тикеты, база знаний - всё в одном контуре, потому что так живёт компания на 60 человек.

Я не кодировал «CRM вообще». Я кодировал понедельник конкретных людей, с которыми работаю в одном офисе.

Тёмная сторона: что никто не рассказывает на конференциях

Если вы разработчик и думаете «напишу CRM для своей компании» - вот что я узнал на своей шкуре.

Ты становишься product owner навсегда. Даже если формально это «внутренний проект». Кнопка «а можно вот здесь» - к тебе. Баг перед закрытием месяца - к тебе.

Feature creep неизбежен. Начал с плана на день - закончил ботами в MAX, телефонией, AI, бэкапами, demo-контуром для обучения. Каждая фича оправдана. В сумме - платформа.

Onboarding - твоя проблема. Документация, туры, demo-база. «Сами разберутся» не работает даже с хорошим UI. На 60 человек это отдельная работа.

Производительность - не опция. Менеджер открывает CRM с телефона в машине. Тысячи строк в админке. Ленивая загрузка и виртуализация - не «оптимизация ради красоты», а условие, чтобы тебя не ненавидели.

Миграции - боль. Любая смена бэкенда - недели подготовки и один стрессовый день. Я прошёл через это один раз и не хочу повторять без веской причины.

Своя CRM дешевле Битрикс24, если считать только лицензии. Если считать моё время - математика другая. И я это принял осознанно.

Кому имеет смысл повторять мой путь

Имеет смысл, если:

  • в компании нетиповые процессы: опт, 1С, полевые менеджеры, несколько баз учёта;
  • есть разработчик (или маленькая команда), который будет жить с продуктом годами;
  • боль от «обхода CRM» измеряется потерянными продажами и хаосом, а не только подпиской;
  • руководство готово терпеть переходный период - месяцы, не недели.

Не имеет смысла, если:

  • 10-15 человек и стандартная воронка;
  • нет человека, который будет поддерживать систему после первого релиза;
  • нужен результат за месяц - берите коробку;
  • в компании нет дисциплины данных - своя CRM перенесёт хаос в твой код, но не вылечит.

Что бы я сказал себе пять лет назад

Не «не берите Битрикс24» - для многих он нормален.

А вот это:

  1. Считайте часы вне CRM, а не стоимость лицензий. Если команда живёт в Excel и чатах - коробка уже проиграла, просто вы ещё платите за неё.
  2. Начинайте с одного экрана, который менеджер откроет каждое утро. У меня это был план на день. Не архитектура - экран.
  3. Не стройте идеальный бэкенд сразу. PocketBase → Supabase - нормальный путь, если честно признать, когда упёрлись в потолок.
  4. Готовьтесь быть владельцем продукта, а не только писать код. На 60 сотрудников CRM - это уже не репозиторий на GitHub, это часть операционки компании.

Вместо вывода

Пять лет Битрикс24 научили меня, как не должен выглядеть рабочий день отдела продаж. CRM - мой ответ на это: система, заточенная под людей, с которыми я работаю, под 1С, под дебиторку, под бланки в мессенджерах, под 60 сотрудников.

Я не «победил» Битрикс. Я перестал писать обходные пути чужой платформы и начал писать свою.

Если вы на той же развилке - разработчик внутри бизнеса или техдир, который устал от интеграторов - напишите в комментариях, что разобрать: с чего начать, как не утонуть в feature creep, как перевести 60 человек на новую систему без бунта. Отвечу по делу, из своего опыта.

Автор - разработчик внутренней CRM. Пять лет на Битрикс24, ~60 сотрудников в компании, стек: React, Supabase, боты, 1С.

11