Интеграция CRM и Telegram: как связать базу клиентов с мессенджером
В 2024 году я переносил операционку с AmoCRM на собственную PostgreSQL-базу. Первое, что сделал — прокинул уведомления о новых подписчиках в Telegram. Настройка заняла 2 часа. За следующие 6 месяцев бот из «уведомителя» превратился в основной рабочий инструмент: приём оплат, смена статусов, история клиента, напоминания — всё через чат. AmoCRM открывал раз в месяц для экспорта данных. Остальное время браузер не нужен.
Интеграция CRM и Telegram — это не одна настройка, а спектр решений. На простом конце: вебхук из CRM отправляет сообщение в Telegram-чат команды при каждом новом лиде. Настраивается за 1-2 дня, не требует кода. На сложном конце: Telegram-бот полностью заменяет CRM-интерфейс — менеджер принимает лиды, меняет статусы, общается с клиентами без браузера. Это 2-4 недели разработки и от 100 000 рублей вложений. Разрыв в сложности и стоимости — но и в полученной ценности тоже.
Ниже — детальный разбор обоих уровней: как они работают технически, когда какой из них уместен, и конкретный кейс из Solar Automation, где Telegram-бот обслуживает 100 активных подписчиков без CRM в браузере.
Две модели интеграции: уведомления против операций
Уведомительная модель. CRM отправляет события в Telegram. Telegram получает и показывает — обратной связи в CRM нет. Менеджер видит уведомление в чате и открывает CRM, чтобы работать с лидом дальше.
Что уведомляет:
- Новая заявка с сайта или LP — немедленное уведомление с именем, телефоном, источником
- Смена статуса сделки — когда лид переходит в «Квалифицирован», «Оплачено», «Отказ»
- Просроченная задача — напоминание ответственному менеджеру
- Еженедельный KPI-дайджест — конверсия, средний чек, воронка по стадиям
- Превышение SLA — «лид висит без ответа 30 минут»
Преимущество: простота. Вся интеграция — это 1 вебхук из CRM + бот в Telegram. Для AmoCRM и HubSpot есть готовые шаблоны в n8n и Make — настройка без кода за несколько часов. Недостаток: менеджер всё равно переключается между Telegram и CRM. Telegram — только оповещалка.
Операционная модель. Telegram становится интерфейсом для работы с CRM. Менеджер не открывает браузер — всё через бота.
Что менеджер делает в Telegram:
- Видит карточку нового лида с кнопками: «Принять», «Отклонить», «Перенести», «Передать коллеге»
- Нажимает «Принять» — CRM обновляется, клиент получает автоответ, задача ставится в расписание
- Пишет команду боту
/client +79001234567— бот подтягивает карточку из CRM: история, стадия, сумма, последний контакт - Закрывает сделку кнопкой — CRM обновляется, выставляется счёт, отправляется финальное письмо клиенту
Это двусторонняя интеграция: Telegram читает из CRM и пишет в CRM. Требует разработки, но убирает постоянное переключение контекста. Для менеджера, который обрабатывает 20-50 лидов в день, это экономит 40-60 минут.
Как устроена интеграция технически: три компонента
Любая Telegram-CRM интеграция — это три блока, которые работают вместе.
Блок 1: CRM с API или вебхуками
CRM должна уметь отправлять HTTP POST на ваш URL при наступлении событий. Это вебхук — автоматическое уведомление с JSON-данными о том, что изменилось.
AmoCRM: вебхуки настраиваются в «Настройки → Интеграции → Вебхуки». Поддерживает события: добавление сделки, смена статуса, добавление контакта, создание задачи. REST API хорошо документирован, есть OAuth 2.0. Для уведомительной модели — готовые коннекторы в n8n из коробки.
Битрикс24: REST API через исходящие вебхуки и бизнес-процессы. Функциональнее AmoCRM, но настройка сложнее. Коробочная версия Битрикс24 требует отдельного подхода — REST API там есть, но авторизация через OAuth добавляет сложность.
HubSpot: Workflow-автоматизации с HTTP-запросами из коробки. Для базовых уведомлений — самый быстрый старт без кода. Webhook Actions доступны на платных планах.
Собственная БД: если CRM — это PostgreSQL-таблица с клиентами, бот может читать и писать напрямую без прослойки API. Самый гибкий вариант, нет ограничений стороннего API.
Блок 2: Сервер-посредник
Принимает вебхук от CRM, трансформирует данные и отправляет в Telegram Bot API. Для двусторонней модели — ещё и принимает команды из Telegram и пишет в CRM.
n8n (self-hosted): open-source инструмент автоматизации. Устанавливается через Docker за 20 минут. Бесплатно без ограничений. Для уведомительной интеграции — идеально: выбрать триггер «webhook», добавить шаг «Telegram», выбрать бота — готово. Минус: требует VPS и базовых знаний Linux для установки.
Make (Integromat): облачный аналог n8n. Не нужен сервер. Тарификация: от 9$/мес за 10 000 операций. Для небольшого потока лидов (до 200-300 в месяц) — дешевле, чем содержать VPS для n8n.
Собственный Python/Node.js сервер: для операционной модели — единственный нормальный вариант. n8n и Make плохо поддерживают сложные диалоги с состоянием (когда бот запоминает, что уже показал менеджеру и ждёт его ответа). Для этого нужен webhook-сервер на Flask/FastAPI или aiogram.
Блок 3: Telegram-бот
Получает сообщения (push из CRM) и показывает менеджеру. Принимает команды менеджера (нажатия кнопок, текстовые команды) и передаёт обработчику.
Для уведомительной модели — бот отправляет форматированный текст с данными лида. Кнопки не нужны. Достаточно Bot API и токена из @BotFather.
Для операционной модели — бот реализует inline keyboard: карточка лида с кнопками «Принять», «Перенести», «Закрыть». Каждое нажатие — callback_query с идентификатором действия → обработчик → CRM API → ответ менеджеру о результате.
Критичный элемент операционной модели: таблица соответствий telegram_chat_id ↔ CRM_manager_id. Без неё бот не знает, кому какой лид принадлежит, и не может применять rights management из CRM (менеджер А не должен видеть лиды менеджера Б). Хранится в PostgreSQL, 1 строка = 1 сотрудник.
Три реальных сценария: что выбрать и сколько стоит
Сценарий 1: Уведомления о лидах через n8n (1-2 дня, 0-15 000 рублей)
Заявка с сайта → CRM (AmoCRM/HubSpot) → вебхук → n8n → Telegram-чат команды.
Что видит менеджер в Telegram: «🔔 Новый лид. Иван Петров, +7 985 123-45-67. Источник: Яндекс.Директ, кампания "ремонт офисов". Время: 14:32. Открыть в AmoCRM»
Менеджер видит уведомление через 5-10 секунд после отправки формы. Открывает AmoCRM по ссылке и работает там. Telegram — только оповещение.
Стоимость: 0 рублей, если настраиваете сами через n8n self-hosted (нужен VPS от 500 руб/мес). 5 000-15 000 рублей — если нанимаете специалиста для настройки. Шаблоны для AmoCRM, HubSpot, Битрикс24 доступны в библиотеке n8n.
Подходит: команда из 2-10 человек, поток 10-200 лидов в месяц, нет сложных требований к интеграции.
Сценарий 2: Карточки клиентов с кнопками действий (1-2 недели, 50 000-150 000 рублей)
Новый лид → бот присылает карточку. Менеджер видит: имя, телефон, источник, текущая стадия, ответственный. Кнопки: «✅ Принять», «📞 Назначить звонок», «⏰ Отложить на 1ч», «❌ Отклонить».
Менеджер нажимает «Принять» → бот отправляет в CRM API запрос на смену статуса → CRM обновляет сделку → клиенту уходит автоответ в WhatsApp → менеджеру приходит подтверждение: «✅ Принято. Задача "Позвонить в течение 15 минут" создана.»
Это уже двусторонняя связь. Требует разработчика бота с опытом работы с CRM API. Тест: попросите показать портфолио с подобными интеграциями — если такого нет, риск выше.
Подходит: команда от 5 менеджеров, поток от 50 лидов в месяц, задача сократить время первого ответа и уменьшить переключение контекста.
Сценарий 3: Telegram как основной CRM-интерфейс (3-6 недель, 150 000-400 000 рублей)
Вся операционная работа менеджера — в Telegram. CRM в браузере — только для отчётов раз в неделю.
Поток менеджера в Telegram:
- 07:30 — бот присылает дайджест: 4 новых лида ночью, 6 сделок с дедлайном сегодня, 2 просрочены
- По каждому лиду — карточка, кнопки, история предыдущих контактов
- Клиент написал в бизнес-мессенджер → бот маршрутизирует в чат менеджера с полным контекстом из CRM
- Сделка закрыта → кнопка → CRM обновлён, счёт выслан, письмо отправлено
Разработка сложная: нужен аналитик (описать 20-50 сценариев диалогов), бот-разработчик, тестирование. Но при команде от 10 менеджеров экономия значительная: убрать переключение между Telegram и CRM — это 40-60 минут на человека в день, или 400-600 часов в месяц на команду.
Типичные ошибки при интеграции CRM и Telegram
За 6 месяцев работы с интеграциями собрал список ошибок, которые встречаются чаще всего.
Дублирование уведомлений. Настроили вебхук на «новая сделка» — и забыли, что CRM при создании автоматически двигает статус с «Новый» на «Входящий», что тоже триггерит вебхук. В Telegram прилетает 2 уведомления за одно событие. Решение: фильтр в обработчике — разрешать только события конкретного типа.
Отсутствие идемпотентности. Вебхук из CRM может прийти дважды при сбое сети. Если обработчик каждый раз создаёт запись в Telegram-боте — дублируется. Решение: хранить crm_event_id и проверять на дубль перед обработкой.
Нет обработки ошибок API. Telegram Bot API иногда возвращает 429 (rate limit) или 503 (временно недоступен). Если обработчик не умеет делать retry с backoff — уведомления теряются. Решение: exponential backoff + очередь сообщений (Redis или простая таблица в БД).
Потеря авторизации CRM. OAuth-токены протухают — обычно через 24-72 часа или после смены пароля. Если бот не умеет обновлять токен автоматически, через день-два интеграция падает. Решение: refresh token flow + алерт в Telegram при ошибке авторизации.
Нет мониторинга интеграции. Вебхук перестал работать — никто не заметил неделю. Решение: healthcheck-пинг раз в час, алерт если нет событий за 24 часа при обычном потоке лидов.
Как это устроено в Solar Automation
В Solar Automation нет CRM в классическом смысле. База клиентов — PostgreSQL-таблица subscribers. Управление ею — Telegram-бот @solar_inside_bot.
Поток для нового подписчика клуба «Solar — внутрянка»:
- Человек пишет в @solar_inside_bot — бот создаёт запись:
telegram_id,chat_id, дата регистрации, статус'pending' - Бот показывает тарифы и ссылку на оплату через PaySame
- PaySame фиксирует оплату → отправляет вебхук на сервер → сервер обновляет запись:
status='active',paid_until= дата окончания подписки - Бот генерирует invite link в закрытый Telegram-чат клуба и отправляет подписчику
- За 3 дня до окончания — автоматическое напоминание с реквизитами для продления
- После оплаты продления — обновление
paid_until, подтверждение в чат
Ни в одном шаге не нужен CRM в браузере. Вся операционка — бот плюс PostgreSQL. 100 активных подписчиков, 95% операций без участия человека.
Сводка раз в неделю — отдельный скрипт: SELECT COUNT(*) WHERE status='active', вычисляет отток и новых подписчиков, отправляет в личный Telegram. Это вся «CRM-аналитика» без дополнительного инструмента.
Разработка с нуля заняла 3 недели. Поддержка — 1-2 часа в месяц. Последний инцидент: протухший OAuth-ключ к почте. Починили за час, переключив на IMAP App Password.
Подробнее о том, как собрать собственную CRM без SaaS, — в статье CRM за вечер: инструмент вместо SaaS.
Важный нюанс: при переходе с классической CRM на Telegram-бот с собственной БД нужно продумать миграцию исторических данных. Экспортировать клиентов из AmoCRM можно через API или CSV-выгрузку. Импорт в PostgreSQL — Python-скрипт на 50 строк. Главное решить заранее: какие поля действительно нужны в новой системе, а какие можно оставить в архиве. В Solar Automation при миграции перенесли 3 ключевых поля из 15 возможных — остальные оказались нужны раз в квартал и лежат в CSV-архиве. Смысл миграции не в том, чтобы перенести всё, а в том, чтобы оставить только то, с чем реально работают каждый день.
Следующие шаги: как начать интеграцию
Если вы хотите связать CRM с Telegram — минимальный путь без лишних шагов.
Шаг 1: определите модель. Только уведомления — или операционная работа в боте? Ответ зависит от числа лидов в месяц и от того, как сейчас работает команда. До 50 лидов/мес — уведомительная модель. От 50 — смотрите на операционную.
Шаг 2: проверьте вебхуки вашей CRM. Откройте документацию или попробуйте создать тестовый вебхук. Если CRM не поддерживает вебхуки — только polling (хуже, с задержкой) или переход на другую CRM.
Шаг 3 (уведомительная модель): попробуйте n8n. Docker-образ на VPS, 20 минут установки. Шаблон «CRM webhook → Telegram Send Message» — в библиотеке n8n. Первый вебхук — за 1 день.
Шаг 4 (операционная модель): сначала опишите сценарии. Какие действия менеджер делает в Telegram? Какие данные нужны в карточке клиента? Какой ответ после каждого действия? Без этого разработчик сделает не то.
Шаг 5: настройте мониторинг с первого дня. Healthcheck-пинг, алерт при ошибке вебхука, уведомление при протухшем токене. Интеграция которую не мониторят — падает незаметно.
Пошаговая настройка уведомлений о лидах через n8n
Для команд, которые хотят быстро запустить уведомления без найма разработчика — вот конкретный путь через n8n. Это займёт 1-2 дня при нулевом опыте с автоматизацией.
Шаг 1: Установить n8n
Самый быстрый способ — Docker на VPS. Подойдёт любой сервер с Ubuntu/Debian от 1 GB RAM. Цена — от 500 рублей в месяц на reg.ru, Hetzner или DigitalOcean.
Команда для запуска:
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n n8nio/n8n
После запуска — открыть http://ваш-ip:5678 в браузере, создать аккаунт. n8n готов к работе. Для продакшена стоит добавить reverse proxy (nginx) и SSL-сертификат (Let's Encrypt, бесплатно).
Шаг 2: Создать Telegram-бота
Открыть Telegram, написать @BotFather. Команда /newbot, выбрать имя, получить токен вида 1234567890:ABC-xxxxxxxxxxx. Этот токен — в настройки n8n в раздел Credentials → Telegram API. Не передавать токен третьим лицам — через него можно слать сообщения от имени бота.
Затем — узнать chat_id чата или группы, куда будут приходить уведомления. Проще всего: написать боту любое сообщение, открыть https://api.telegram.org/botТОКЕН/getUpdates в браузере, найти chat.id в JSON-ответе.
Шаг 3: Настроить вебхук в CRM
В n8n создать новый workflow. Добавить ноду «Webhook» (триггер). Скопировать URL вебхука — он выглядит как https://ваш-сервер/webhook/уникальный-ключ.
Этот URL вставить в настройки CRM: AmoCRM → Настройки → Интеграции → Вебхуки → добавить URL для события «Добавление сделки». Для HubSpot: Settings → Integrations → Webhooks → Create Webhook.
После сохранения — создать в CRM тестовую сделку. В n8n нода «Webhook» должна получить данные. Если данные пришли — в разделе «Input data» видны поля сделки: имя, телефон, источник, стадия.
Шаг 4: Форматировать сообщение и отправить в Telegram
В workflow добавить ноду «Telegram → Send Message». Выбрать Bot API credentials, вставить chat_id получателя.
В поле «Text» — шаблон сообщения с данными из вебхука:
🔔 Новый лид: {{ .contact.name }}, {{ .contact.phone }}
Источник: {{ .lead.source }}
Время: {{ .toFormat('HH:mm') }}
Ссылка: https://ваш-crm.ru/leads/{{ .lead.id }}
Активировать workflow. Создать ещё одну тестовую сделку в CRM — через 5-10 секунд сообщение должно появиться в Telegram. Интеграция работает.
Дополнительные ноды для более сложных сценариев
n8n позволяет добавить логику без кода: фильтр (отправлять уведомление только если лид с бюджетом выше X), деление по источникам (лиды с контекстной рекламы — в один чат, с SEO — в другой), обогащение данных (добавить в сообщение информацию из Google Sheets с характеристиками источника).
Для сложной логики — нода «Code» (JavaScript внутри n8n). Но для большинства сценариев уведомлений достаточно стандартных нод без кода.
Безопасность интеграции: что обязательно настроить
Интеграция CRM и Telegram открывает новую точку входа в клиентские данные. Несколько правил, которые стоит соблюдать с первого дня.
Не хранить токен бота в коде. Токен Telegram-бота — это пароль. Хранить в переменных окружения (.env файл), а не в исходном коде или конфиге, который попадёт в Git. Одна утечка токена — и посторонний может слать сообщения от имени бота всем вашим менеджерам.
Проверять подпись вебхука от CRM. AmoCRM и HubSpot при отправке вебхука добавляют заголовок с подписью (HMAC-SHA256 от тела запроса). Обработчик должен проверять эту подпись. Без проверки — любой может отправить поддельный вебхук на ваш URL и «создать» ложные лиды в боте.
Ограничить доступ к боту по chat_id. Бот должен отвечать только зарегистрированным менеджерам. Whitelist chat_id — 3 строки кода в обработчике. Без этого любой, кто найдёт username бота, может получить доступ к команде /help и информации о функциях.
Шифровать чувствительные данные клиентов. Если в Telegram-карточке передаётся телефон, email или паспортные данные — стоит ограничить период хранения сообщений в чате. В Telegram это настраивается через «Удалять сообщения» в настройках группы.
Логировать все операции. Каждое действие менеджера через бота (принял лид, сменил статус, закрыл сделку) должно фиксироваться в БД с timestamp и telegram_user_id. Это нужно для аудита и разбора инцидентов.
В системе Solar Automation эти меры соблюдены с первого дня: токены в переменных окружения, whitelist подписчиков по telegram_id, логирование всех изменений статуса в отдельную таблицу event_log. За 6 месяцев работы — ноль инцидентов с утечкой данных клиентов.
Полный стек — боты под разные сценарии, схемы Telegram-CRM архитектуры, примеры кода, AGENTS.md с мониторингом — в клубе «Solar — внутрянка», от 2 500 ₽/мес. Бери и адаптируй: https://4bos.ru/inside/
— Solar OS.