Интеграция с amoCRM и Битрикс24: как связать сайт, бота и Mini App

Заявки с сайта приходят на почту, из бота — в рабочий чат, а менеджер переносит их в CRM руками и что-то теряет по дороге. Разбираем, как устроена интеграция с amoCRM и Битрикс24 для сайта, Telegram-бота и Mini App: какие данные передавать, как не плодить дубли, как получать статусы обратно и что делать, когда CRM не отвечает.

Что даёт связка сайта и бота с CRM

Без интеграции у каждого канала своя жизнь: форма на сайте шлёт письмо, бот пишет в чат, Mini App складывает заказы в свою базу. Менеджер собирает всё это в CRM вручную, а значит, часть обращений попадает туда с опозданием, часть — без источника, а часть не попадает вовсе.

Интеграция решает две задачи. Первая — прямой поток: каждая заявка сразу появляется в CRM как сделка или лид с контактом, источником и комментарием. Вторая — обратный поток: когда менеджер двигает сделку по воронке, клиент получает уведомление в боте, а в личном кабинете меняется статус. Про вторую часть часто забывают, хотя именно она избавляет от звонков «ну что там с моим заказом».

Если заявки у вас пока вообще не собираются в одно место, начните со статьи про бота для заявок, а про общую воронку из сайта и бота — с материала «Сайт и Telegram-бот в одной системе». Здесь — именно о стыке с CRM.

Какие данные передавать в CRM

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

ДанныеОткуда берутсяЗачем нужны
Имя, телефон, emailФорма, бот, Mini AppНайти или создать контакт
Telegram ID или usernameБот, Mini AppПисать клиенту в бот и склеивать дубли
Источник и UTM-меткиПараметры ссылки, cookie, параметр запуска ботаПонять, какая реклама приводит клиентов
Комментарий, ответы квизаПоля формы, шаги диалога в ботеМенеджер видит запрос без лишнего звонка
Товары, услуга, суммаКорзина, калькуляторБюджет и состав сделки
Этап и ответственныйПравила распределенияСделка сразу попадает к нужному человеку

С UTM-метками есть тонкость. На сайте их сохраняют при первом заходе и передают вместе с формой, даже если человек оставил заявку через три страницы. В Telegram метки в привычном виде не доходят, поэтому источник кодируют в параметре запуска бота: ссылка из рекламы открывает бота с меткой вроде «vk_autumn», и бот записывает её в поле источника.

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

Дубли контактов: как не создать второго Ивана Петрова

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

  1. Нормализуем телефон. «8 (999) 123-45-67», «+7 999 1234567» и «79991234567» — один и тот же номер. Перед поиском приводим его к единому формату.
  2. Ищем по телефону, затем по email. Если контакт нашёлся, привязываем новую сделку к нему.
  3. Учитываем Telegram ID. Для заявок из бота это самый надёжный ключ: телефон человек может не оставить, а ID есть всегда. Храним его в отдельном поле контакта.
  4. Не перезаписываем данные молча. Если имя в заявке отличается от имени в CRM, лучше добавить примечание, чем затереть то, что вносил менеджер.

Отдельный вопрос — что делать, если у контакта уже есть открытая сделка. Вариантов два: создать новую или добавить заявку примечанием к текущей. Интернет-магазину обычно нужна новая сделка на каждый заказ, а студии ремонта повторное обращение по тому же объекту логичнее приложить к существующей. Это бизнес-правило, и решает его заказчик, а не программист.

Лид или сделка: куда попадает заявка в amoCRM и Битрикс24

У двух популярных CRM разная логика, и от неё зависит, что именно создаёт интеграция.

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

В Битрикс24 есть лиды и сделки. Лид — «сырое» обращение, которое потом превращают в сделку с контактом. Часть компаний работает без лидов и сразу создаёт сделки — это настраивается в самом портале. Типичная интеграция сайта с Битрикс24 — форма, которая создаёт лид или сделку с источником и UTM, плюс правило назначения ответственного. Важно, чтобы режим портала и логика интеграции совпадали, иначе заявки окажутся не там, где их ждут менеджеры.

Если вы ещё выбираете CRM, смотрите на число воронок и сложность квалификации заявок. Для разработки разница не принципиальная: обе системы дают API и вебхуки, и сайт, бот или Mini App подключаются к любой из них.

Связь с CRM стоит делать отдельным модулем. Тогда при переезде с amoCRM на Битрикс24 или обратно переписывается только он, а формы, бот и Mini App остаются как есть.

Обратная связь: статусы из CRM в бот и личный кабинет

CRM умеет отправлять вебхуки — HTTP-запросы на ваш сервер, когда в ней что-то произошло: сделка перешла на другой этап, сменился ответственный, заполнилось поле. Сервер принимает такой запрос и решает, что делать дальше. Сценарии, которые мы настраиваем чаще всего:

  • сделка перешла в этап «Подтверждена» — клиент получает в боте сообщение с датой и адресом;
  • заказ передан в доставку — бот присылает номер отправления;
  • назначен менеджер — клиенту приходит имя специалиста и кнопка для связи;
  • сделка успешно закрыта — через пару дней бот просит оценить работу;
  • в личном кабинете меняется статус заявки и пополняется история.

Как устроен такой кабинет, подробно описано в статье «Mini App как личный кабинет клиента».

Здесь два технических момента. Входящие вебхуки нужно проверять: убедиться, что запрос пришёл от вашей CRM, а не от того, кто случайно узнал адрес. Способ проверки зависит от CRM — секретный ключ, подпись или данные аккаунта в запросе. И нужно быть готовым к повторам: одно событие может прийти дважды, а клиент не должен получить два одинаковых сообщения. Для этого сервер запоминает, какие события уже обработал.

Ошибки, повторы и логи

CRM — внешний сервис. Она может не ответить, вернуть ошибку из-за лимита запросов или отклонить запрос с просроченным токеном. Если сайт отправляет заявку напрямую и при ошибке всё равно показывает «спасибо», обращение пропадает без следа. Поэтому мы строим интеграцию по-другому:

  1. Заявка сначала сохраняется в нашей базе — так она точно не потеряется.
  2. Отправка в CRM идёт в фоне через очередь, пользователь не ждёт ответа CRM.
  3. При ошибке — повтор с нарастающей паузой: через минуту, через пять, через полчаса.
  4. Если попытки исчерпаны, заявка уходит в рабочий чат менеджеров с пометкой, что в CRM она не попала.
  5. Каждая попытка пишется в лог: что отправили, что ответила CRM, сколько это заняло.

Логи нужны не для галочки. Когда менеджер говорит «заявка от Марины не пришла», по ним за пару минут видно, где она: не дошла до сервера, застряла в очереди или CRM отклонила её из-за обязательного поля, которое вчера добавили в воронку. Без логов такой разбор превращается в гадание.

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

Что подготовить перед интеграцией

Чтобы работа заняла дни, а не недели, до старта стоит собрать:

  • доступ администратора к CRM или возможность создать в ней интеграцию;
  • схему воронки: этапы, ответственные, обязательные поля;
  • список форм, ботов и других источников, которые нужно подключить;
  • правила для дублей и повторных обращений;
  • тексты уведомлений, которые клиент получит при смене статуса;
  • тестовую воронку, чтобы не засорять рабочие данные во время отладки.

Простая связка «форма → сделка с контактом и UTM» делается быстро и часто входит в разработку сайта или бота. Двусторонний обмен со статусами, дополнительными полями и несколькими воронками — уже отдельная задача, и её объём лучше оценить по брифу. Предварительная оценка у нас бесплатная.

Частые вопросы

Сколько стоит интеграция с amoCRM или Битрикс24?

Зависит от числа источников, полей и того, нужен ли обратный поток статусов. Базовая передача заявок часто входит в проект сайта или бота, сложные сценарии оцениваем отдельно.

Можно ли подключить CRM к уже работающему сайту?

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

Что будет с заявками, если CRM недоступна?

Они сохраняются в базе на стороне сайта или бота и отправляются повторно, когда CRM снова отвечает. Если сбой затянулся, менеджеры получают заявки в рабочий чат.

Нужен ли определённый тариф CRM для интеграции?

Доступ к API и вебхукам зависит от тарифа и условий конкретной CRM. Это проверяем на старте, чтобы не упереться в ограничения после разработки.

Можно ли передавать в CRM заявки из MAX, а не только из Telegram?

Да. Бот в MAX передаёт данные на сервер так же, как Telegram-бот, а связка сервера с CRM общая для всех каналов.

Обсудим проект

Нужна похожая разработка?

Расскажите о задаче — уточним детали, предложим формат запуска и подготовим предварительную оценку. Это бесплатно.

Написать напрямую

Источники