Один движок вместо зоопарка подписок

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

Александр МазинАлександр Мазин AI-инженер · автоматизация бизнеса Опубликовано
Спутанные кабели к пяти блокам слева и один монолитный блок справа

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

Я собрал всё это внутри одной системы - той же, где лежит контент моего сайта. Расскажу, как это выглядит, что действительно стало проще, и честно - когда так делать не стоит.

Что было и что стало

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

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

Главный выигрыш не в экономии на подписках, хотя она есть. Он в том, что у клиента одна карточка. Не "контакт в CRM, подписчик в рассылке и пользователь в боте, которых надо как-то сопоставлять", а одна запись, к которой привязано всё.

Как это устроено внутри

Несколько решений, которые оказались важнее остальных.

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

Звучит избыточно, пока не случается первый сбой. Тогда выясняется, что вы точно знаете, кому дошло, кому нет и почему, можете повторить только неудавшиеся и не рискуете отправить всё заново. Ещё это защищает от классической аварии, когда одно битое сообщение встаёт в голову очереди и намертво блокирует остальные, - у каждого сообщения своя судьба.

Никаких производных полей. У рассылки нет счётчика "отправлено". Прогресс считается по доставкам, каждый раз заново. Так же со статусом человека в воронке: он не хранится, а выводится из истории.

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

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

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

Что это дало на практике

Самый показательный пример - публикация статьи. Я перевожу статью в статус "опубликована". Дальше без моего участия: встроенный ИИ-помощник формулирует сюжет обложки, задание уходит в очередь картинок, генератор рисует, файл прикрепляется к статье, статья расходится по внешним площадкам, я получаю уведомление о результате.

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

Когда так делать не надо

Честная часть, без которой рассказ получится рекламным.

Если у вас есть команда. Разделение по инструментам - это ещё и разделение ответственности. Маркетолог в своём сервисе рассылок никого не сломает. Тот же маркетолог в общем движке может сломать многое.

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

Если у вас нет инженера. Это конструктор, а не готовый продукт. Собрать очередь с диспетчером и сторожем - работа на несколько дней, а поддерживать её потом придётся самому. Пять подписок стоят денег, но не требуют вашего времени.

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

Что забрать себе

  • Считайте не стоимость подписок, а стоимость рассинхронизации. Обычно она больше.
  • Очередь из отдельных сообщений вместо одной большой задачи - самое дешёвое решение, которое окупается на первом же сбое.
  • Не храните то, что можно посчитать. Счётчики врут.
  • Разделите настройки на "правит человек" и "правит инженер" и держите их в разных местах.
  • Единый движок - это выбор в пользу контроля и против удобства делегирования. Если делегировать некому, выбор очевиден. Если есть кому - подумайте дважды.

Новые разборы - на почту

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

Александр Мазин

Александр Мазин

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