Главная · Блог · Лиды из чат-бота в CRM: воронка ЧБТ или webhook в amoCRM и Битрикс24

Лиды из чат-бота в CRM: воронка ЧБТ или webhook в amoCRM и Битрикс24

· обновлено · Команда ЧБТ · CRM, Интеграции

В ЧБТ у заявки из бота два маршрута до менеджера. Первый — действие «Сделка в CRM» в сценарии: карточка появляется во встроенном канбане сразу после того, как клиент назвал телефон, без единой настройки снаружи. Второй — действие «HTTP-запрос»: бот отправляет POST с JSON (переменные сценария, теги строкой, тип канала) на ваш URL, а Make, n8n, Albato или собственный скрипт заводят сделку в amoCRM или другой CRM. Для Битрикс24 есть и готовое подключение в разделе «Интеграции и API» — событие диалога создаёт лид. Ниже — как настроить каждый маршрут, какой именно JSON уходит наружу и почему ЧБТ ждёт ответа 15 секунд, что умеет и чего не умеет встроенный канбан, и как разметить заявку тегами, чтобы она не потерялась при любом маршруте.

Три способа завести сделку без участия менеджера

Сделка в ЧБТ появляется тремя путями, и только первый требует рук.

1. Вручную. Кнопка «Сделка» в разделе «CRM»: название, сумма, стадия, ответственный, контакт из списка. Нужна для заявок, пришедших мимо бота — по телефону или с почты.

2. Из виджета на сайте. В чате на сайте есть кнопка «Оставить контакты». Когда посетитель заполняет имя, e-mail или телефон, ЧБТ создаёт контакт, ставит ему служебный тег, заводит сделку «Лид с сайта — Имя» в стадии «Новый» и отправляет письмо владельцу. Повторное нажатие той же кнопки тем же посетителем вторую сделку не создаёт — дедупликация по тегу уже встроена.

3. Из сценария. В блоке «Действие» есть действие «Сделка в CRM» с тремя параметрами: название (с переменными — например, Заявка: {{service}} — {{name}}), сумма и стартовая стадия. Ставьте его сразу после блока «Сбор данных», где спрашиваете телефон: раньше — получите сделки без контактов, позже — потеряете тех, кто ушёл на благодарности. Рабочая схема для сценария заявки:

  1. «Сообщение» с кнопками выбора услуги.
  2. «Действие» → «Записать переменную» service = выбранная услуга (по одному действию на каждую ветку кнопки).
  3. «Сбор данных» → Имя.
  4. «Сбор данных» → Телефон с проверкой формата, «В переменную» lead_phone.
  5. «Действие» с тремя действиями подряд: «Добавить тег» заявка, «Сделка в CRM» с названием {{service}} — {{name}}, «Уведомить оператора».
  6. «Сообщение» с подтверждением и блок «Оператор», чтобы диалог ушёл в инбокс.

Готовый пример действия «Сделка в CRM» есть в шаблоне «Бот покупателя» — там сделка создаётся при первом сканировании QR. Откройте шаблон в «Сценариях» и посмотрите настройки блока «Захват в CRM». Если собираете сценарий с нуля, быстрее попросить ИИ-правку: «после сбора телефона добавь создание сделки в CRM с названием из переменной service».

Один нюанс: каждое прохождение сценария создаёт новую сделку. Если человек пройдёт заявку дважды, будет две карточки. Хотите одну — поставьте перед действием блок «Условие»: тег заявка «не задано» → создать сделку, иначе — пропустить.

Встроенная CRM ЧБТ: что внутри канбана

Раздел «CRM» в кабинете — доска из четырёх колонок. Карточка сделки содержит название, сумму в рублях, стадию, ответственного и ссылку на контакт. Ответственным можно назначить любого участника команды из раздела «Доступ» — владельца, админа или оператора. Карточки перетаскиваются между колонками мышью, над доской считается «Сумма воронки» по всем открытым сделкам.

Из карточки сделки один клик до контакта: там имя, телефон, e-mail, канал, теги, свои поля и последние сообщения диалога. Менеджеру не нужно искать переписку в «Диалогах» — контекст рядом.

Чего в этом канбане нет, и лучше знать заранее:

  • Стадии не редактируются — только четыре штатных. Если ваш процесс длиннее («квалифицирован», «КП отправлено», «договор»), промежуточные шаги придётся отмечать тегами контакта.
  • Нет задач и напоминаний «перезвонить в четверг». Дисциплина — в голове менеджера или во внешнем календаре.
  • Нет автоматического перехода стадий по событиям — например, «Оплачено» после того, как клиент написал «оплатил». Стадию двигает человек.
  • Нет отчётов по конверсии стадий. Есть только счётчик и сумма по колонкам плюс общая аналитика бота в «Аналитике».

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

Внешняя CRM: что именно уходит по «HTTP-запросу»

Действие «HTTP-запрос» в блоке «Действие» — единственный мост из сценария наружу. Настроек три: URL, метод (по умолчанию POST; доступны GET, PUT, PATCH, DELETE) и необязательное поле «в переменную», куда сохранится текст ответа сервера. Тело запроса ЧБТ формирует сам, заголовок Content-Type: application/json. Структура тела:

{
  "contact": { "id": 4821, "tags": "[\"заявка\",\"src-vk\"]" },
  "vars": { "service": "Маникюр", "lead_phone": "+7 912 000-00-00", "name_var": "Анна" },
  "text": "+7 912 000-00-00",
  "channelType": "telegram"
}

Что здесь важно понять.

  • Уходят переменные, а не поля карточки. Имя, телефон и e-mail, которые блок «Сбор данных» записал в контакт, в запрос сами не попадут. Заполните в этих блоках поле «В переменную» — и данные окажутся в vars. Подробности — в справке по переменным.
  • Теги приходят строкой JSON, а не массивом. На приёмной стороне её нужно распарсить — в Make это один шаг «Parse JSON».
  • text — последнее сообщение клиента на момент действия, обычно это только что введённый телефон. Не стройте на нём логику.
  • channelType — telegram, max, vk или web. Это готовый источник для поля «Канал» в CRM.

Ограничения, о которых честно: ЧБТ ждёт ответа 15 секунд, повторных попыток при ошибке не делает, запрос не подписывает. Если ваш приёмник не ответил — заявка во внешнюю CRM не попала, но сценарий для клиента продолжится как ни в чём не бывало. Поэтому приёмник должен отвечать 200 сразу и обрабатывать данные потом, а критичные заявки страхуйте тегом и письмом владельцу. Формат входящих и исходящих запросов описан в справке по webhooks.

Маршрут через Make, n8n или Albato по шагам

Коннектор нужен, чтобы превратить универсальный JSON от ЧБТ в вызов API конкретной CRM. Порядок одинаковый для любого сервиса.

  1. Создайте сценарий в коннекторе с триггером «Webhook». Он выдаст URL вида https://hook.eu1.make.com/…. Скопируйте его.
  2. В ЧБТ вставьте URL в действие «HTTP-запрос», метод POST. Сохраните сценарий.
  3. Пройдите сценарий с телефона как клиент и оставьте тестовый номер. Коннектор поймает запрос и покажет структуру полей — по ней вы будете маппить.
  4. Добавьте шаг поиска дубля: найти контакт в CRM по vars.lead_phone. Нашли — обновить, не нашли — создать. Без этого шага каждая повторная заявка породит второго клиента.
  5. Создайте сделку: название из vars.service, источник из channelType, теги — из распарсенного списка. В amoCRM решите заранее, идёт ли заявка в «Неразобранное» или сразу сделкой в воронку; в Битрикс24 — лидом или сделкой, в зависимости от режима CRM.
  6. Назначьте ответственного правилом коннектора: по очереди, по услуге из vars.service или по каналу.

Если не хотите платить за коннектор — приёмник пишется за час на любом языке: принять JSON, вызвать API CRM, ответить 200. Это тот же «HTTP-запрос», только URL ведёт на ваш сервер. Для Битрикс24 коннектор не обязателен: готовое подключение и его ограничения описаны на странице интеграция с Битрикс24.

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

Обратный путь из CRM в бота: что возможно, а что нет

Частый запрос: «менеджер перевёл сделку в оплаченную — пусть бот напишет клиенту в Telegram». Готовой двусторонней синхронизации с CRM в ЧБТ нет, но написать клиенту в его диалог внешняя система может — через публичный API.

Как это собирается. Вебхук на событие «новое сообщение» передаёт id диалога, коннектор сохраняет его в сделке. Когда сделка меняет стадию, коннектор отправляет текст запросом POST /api/v1/conversations/:id/messages. Сообщение уходит клиенту в тот канал, откуда он писал, как ответ оператора, и диалог переходит к человеку. Закрытый диалог сначала переводят в работу запросом /handoff. Написать тому, кто боту не писал, API не может. Подробности — в справке по API.

Триггер «Входящий webhook» для этого не подходит: внешняя система отправляет POST на адрес сценария с секретом, и сценарий запускается как новый диалог в канале виджета, а не как сообщение конкретному человеку в Telegram или MAX. Он годится для служебных сценариев и уведомлений операторам.

Что можно сделать без разработки:

  • Сообщения клиенту о статусе — из самого бота. Клиент пишет «статус заказа», сценарий отвечает: если заказы живут в вашей системе — действием «HTTP-запрос» к ней, иначе — ответ оператора из «Диалогов». Статус заказа с Ozon и Wildberries по номеру ЧБТ не получает.
  • Массовые уведомления группе клиентов — через раздел «Рассылки» по тегу. Тег можно проставить вручную в карточке контакта или экспортировать список из CRM и найти людей в «Контактах» по телефону.
  • Одиночные сообщения менеджера — из «Диалогов»: оператор пишет в тот же чат, где клиент общался с ботом.

Помните также правило мессенджеров: бот пишет только тем, кто ему уже писал. Контакт, заведённый в CRM вручную с номером телефона, ботом в Telegram не достижим — у него нет диалога.

Когда хватит встроенного канбана, а когда нужен webhook

Оба маршрута закрывают одно и то же: сделка создана, данные из диалога в ней, есть ответственный, менеджер двигает стадию. Разница — в том, где эта сделка живёт и сколько вокруг неё можно надстроить.

КритерийРаздел «CRM» в ЧБТamoCRM / Битрикс24 через «HTTP-запрос»
НастройкаНичего: сделка создаётся действием в сценарии или кнопкой виджетаURL приёмника, маппинг полей в Make/n8n/Albato или свой скрипт
СтадииЧетыре фиксированные: «Новый», «В работе», «Оплачено», «Отказ»Любые воронки и стадии вашей CRM
Поля сделкиНазвание, сумма в рублях, ответственный, контактВсе поля вашей CRM, включая кастомные
Данные из диалогаВ названии сделки через переменные, остальное — в карточке контакта (свои поля, теги)Всё, что сохранили «В переменную», плюс теги и канал
Задачи, напоминания, телефонияНетСредствами CRM
СтоимостьВходит в любой тариф, включая БесплатныйПодписка CRM + коннектор (у Make и n8n есть бесплатные лимиты)

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

Какие теги должен ставить сценарий заявки

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

  • Источник — src-vk, src-qr, src-site: ставится в первом блоке ветки, куда ведёт триггер «Диплинк» с конкретным payload или триггер «Открытие виджета».
  • Намерение — услуга-маникюр, тариф-про: ставится в ветке выбора кнопкой.
  • Статус обработки — заявка, обработано: первый ставит сценарий, второй — менеджер руками в карточке, когда позвонил.

Тег обработано — дешёвая замена стадиям во встроенном канбане: фильтр в «Контактах» по тегу заявка без обработано показывает необработанный хвост. Как выстроить систему тегов целиком — в статье про теги как систему сегментации.

И ещё одна привычка, которая экономит нервы: в конце сценария заявки ставьте блок «Оператор». Диалог попадёт в «Диалоги» со статусом «Оператор» (вкладка «Ждут ответа»), менеджер увидит его в списке непрочитанных и ответит из кабинета — даже если письмо потерялось в спаме, а коннектор упал. Где именно в сценарии передавать диалог человеку, разобрано в статье о передаче диалога оператору.

Чеклист выбора и запуска

  1. CRM ещё нет → встроенный канбан ЧБТ. Добавьте «Сделка в CRM» после блока с телефоном, назначайте ответственного руками при первом просмотре доски.
  2. CRM есть → «HTTP-запрос» на webhook коннектора. Во всех блоках «Сбор данных» заполните «В переменную», иначе в CRM уйдут пустые поля.
  3. Перед действием «Сделка в CRM» поставьте «Условие» по тегу заявка, если не хотите дубли карточек.
  4. Для внешней CRM настройте поиск дубля по телефону до создания контакта.
  5. Проверьте приёмник: ответ должен приходить быстрее 15 секунд. Отправьте тестовую заявку с телефона и убедитесь, что она дошла до CRM с правильной услугой и каналом.
  6. Добавьте тег и «Уведомить оператора» рядом с «HTTP-запросом» — это резервный канал, если внешняя система недоступна.
  7. Завершите сценарий блоком «Оператор», чтобы диалог оказался в инбоксе.

Встроенная CRM и действие «HTTP-запрос» доступны на Бесплатном тарифе — 1 бот, 30 диалогов в месяц, все каналы. Этого достаточно, чтобы прогнать связку с вашей CRM на реальных заявках, прежде чем платить за Базовый. Сколько стоят тарифы и что в них входит — на странице «Тарифы». Создать бота и настроить передачу заявок →

Ещё в блоге