Интеграция Telegram-бота с CRM

Бот без CRM представляет собой чат, в котором заявки лежат вперемешку с вопросами "а вы работаете?". Пока таких заявок пять в неделю, положение терпимое. На тридцати в день начинается то, ради чего CRM и придумали. Заявки теряются не потому, что кто-то плохо работает, а потому что человек физически не удерживает в голове тридцать переписок и не помнит, кому обещал перезвонить.
Что даёт интеграция
Интеграция решает три задачи сразу. Заявка попадает в воронку автоматически и в виде полей, а не сплошным текстом: имя, контакт, что человек выбирал, откуда пришёл. У менеджера перед глазами оказывается история, включая то, что этот клиент спрашивал полгода назад. Наконец, появляется отчётность, которую никто не заполняет руками, а значит, ей можно верить.
Как это устроено технически
Технически всё это проще, чем звучит. У всех распространённых CRM есть API, поэтому бот отправляет запрос и создаёт сделку. Обратное направление работает через вебхук: CRM сообщает боту, что статус сделки изменился, и бот пишет клиенту "ваш заказ собран". Второе направление настраивают заметно реже первого, хотя именно оно снимает с менеджеров основную рутину.
Где интеграция ломается на практике
Ломается всё обычно не в API, а в мелочах. Первая мелочь это дубликаты. Один человек написал боту, потом позвонил, потом заполнил форму на сайте, и в CRM появились три карточки с историей, разорванной на три части. Поэтому перед созданием нового контакта ищем существующий по телефону, по почте или по идентификатору Telegram, а затем привязываем сделку к найденному. Без этого база за полгода превращается в кашу, и виноватым назначают бота.
Вторая мелочь касается полей. В CRM есть обязательные поля, есть списки с фиксированными значениями, есть форматы телефона, которые она принимает, и форматы, которые молча отбрасывает. Бот должен приводить данные к тому виду, который CRM ожидает, а не отправлять их как получилось. Отдельно стоит заранее договориться, какие поля вообще нужны. Добавить их впоследствии можно, а вот пересобрать историю по уже созданным сделкам не выйдет.
Третий и самый важный вопрос заключается в том, что делать, когда CRM недоступна. А она бывает недоступна из-за техработ, превышения лимита запросов, смены токена или сбоя на стороне сервиса. Если бот в этот момент просто выбросит ошибку, заявка исчезнет и никто об этом не узнает, ведь человек увидел сообщение "спасибо, заявка принята". Правильное поведение выглядит так: сохранить заявку у себя, ответить клиенту как обычно, поставить отправку в очередь и повторять с нарастающими паузами. Если за несколько часов не вышло, следует сообщить владельцу. Клиент не должен страдать оттого, что чужой сервис прилёг.
Четвёртая сложность связана с ограничениями на количество запросов. У каждой CRM они свои, и при рассылке или массовом импорте в них упираются мгновенно. Запросы приходится ставить в очередь и разносить по времени, то есть повторяется ровно та же история, что с лимитами самого Telegram.
Чего не стоит переносить в CRM
Чего в CRM тащить не стоит, так это переписку целиком. Соблазн вполне понятный: пусть всё лежит в одном месте. На практике получается карточка с двумя сотнями сообщений, среди которых нет ни одного полезного, а заодно персональные данные, которые теперь хранятся ещё и там. Полезнее короткая сводка: что клиент выбрал, что уточнил, на чём остановились. Полный диалог остаётся в боте, и поднять его всегда можно по ссылке.
Порядок внедрения и стоимость
Порядок внедрения, который экономит деньги, выглядит так. Сначала настраиваем одно направление, то есть создание сделки, и только после того, как менеджеры месяц поработали с реальными заявками, добавляем обратное. За этот месяц обычно выясняется, что половина полей, о которых спорили на старте, никому не нужна, зато нужны два других, о которых не подумали.
По объёму интеграция с одной CRM занимает несколько дней поверх самого бота, если у CRM нормальный API и вы точно знаете, какие поля вам нужны. Поэтому бот с интеграциями стоит заметно дороже бота-заявочника. Разница здесь не в кнопках, а в том, что за каждой кнопкой стоит чужая система, живущая своей жизнью.