Юр. сторона и интеграции

Чат-бот на сайте: когда помогает, когда бесит и что он делает со скоростью

Разбираем виджеты чатов и ботов для сайта услуг: сценарии, влияние на конверсию и Core Web Vitals, персональные данные в переписке.

12 минут чтения 4 Дмитрий Акиндинов
Содержание
  1. Три разных зверя под одним словом
  2. Где чат снимает нагрузку, а где отгоняет клиента
  3. Что виджет делает со скоростью
  4. Персональные данные в переписке
  5. Свой чат без сторонних сервисов
  6. Как понять, окупается ли он
  7. Чек-лист перед внедрением
  8. Что бы я сделал на вашем месте
  9. Частые вопросы

Под словом чат-бот продают три разные вещи: живой чат с оператором за 1 000-1 800 рублей в месяц, сценарный бот за 1 200-3 000 плюс настройка, и своя разработка за 40-120 тысяч разово. Виджет весом в полмегабайта роняет мобильную скорость, поэтому его грузят по клику, а не сразу.

Чат бот на сайте продают одинаково всем: круглосуточный приём заявок, минус нагрузка на менеджера, плюс конверсия. На практике я вижу два исхода. Либо виджет действительно снимает половину однотипных вопросов, либо он висит мёртвым грузом в 600 килобайт, роняет мобильную скорость и раздражает людей всплывающим окном на третьей секунде. Разница не в бренде виджета, а в том, кто и зачем его ставил. Ниже разберу, чем живой чат отличается от бота, что происходит со скоростью после установки, как не влететь по 152-ФЗ с перепиской и как понять по цифрам, окупается эта штука или нет.

Окно чата с иконкой робота и шкала скорости загрузки сайта

Веду абонентку шестой год, ставил и снимал эти виджеты десятками. Снимал, честно говоря, чаще.

Три разных зверя под одним словом

Когда клиент говорит «поставь нам чат-бота», он может иметь в виду три технически несовместимые вещи. Стоят они по-разному, ломаются по-разному, и польза у них тоже разная.

Живой чат. Окно на сайте, в котором сидит человек: Jivo, Битрикс24 Открытые линии, Talk-Me, Chatra. Бот тут в лучшем случае здоровается и спрашивает имя. Цена в 2026 году порядка 1 000-1 800 рублей в месяц за оператора, у Битрикс24 входит в тариф. Работает ровно настолько, насколько дисциплинирован человек по ту сторону.

Скриптовый бот. Дерево кнопок и заранее написанных ответов. Никакого интеллекта: клиент жмёт «Узнать цену», бот выдаёт заготовленный текст и предлагает оставить телефон. Собирается в конструкторе (Salebot, Botmother, встроенные сценарии Jivo) за 1 200-3 000 рублей в месяц плюс разовая настройка сценария. Для сайта услуг с десятком типовых вопросов этого обычно хватает.

Бот на языковой модели. Отвечает свободным текстом, опираясь на вашу базу знаний. Подключается к YandexGPT или GigaChat, оплата за токены (ориентир: единицы рублей за тысячу запросов при коротких ответах), сверху разработка сценария, загрузка базы и обвязка. Разово это 40 000-120 000 рублей, если делать нормально, с проверкой ответов и запретом фантазировать про цены и сроки.

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

ТипРазовоВ месяцКому подходит
Живой чат с оператором0-5 0001 000-1 800 за оператораЕсть человек, который реально сидит в чате
Скриптовый бот на кнопках8 000-25 0001 200-3 0005-15 повторяющихся вопросов, ответы не меняются
Бот на языковой модели40 000-120 000от 2 000 плюс токеныБольшая база знаний, поток обращений от 300 в месяц
Форма плюс доставка в мессенджер5 000-12 0000Сайт услуг с 10-40 заявками в месяц

Нижняя строка выглядит скучно, но именно она чаще всего оказывается правильным ответом для малого бизнеса. К ней вернусь ниже.

Где чат снимает нагрузку, а где отгоняет клиента

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

Дальше начинается территория, где виджет работает против вас.

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

Бот, который не понимает вопрос и водит по кругу. Три раза «Уточните запрос», потом «Соединяю с оператором», потом тишина. Человек уходит и больше не возвращается, а вы даже не узнаете об этом: в статистике будет числиться диалог.

Обещание ответа, которого нет. Виджет пишет «Обычно отвечаем за 2 минуты», а на деле оператор заходит в панель раз в день. Это хуже, чем не иметь чата вовсе: клиент ждал, ему не ответили, теперь у него личное мнение о вашей компании.

Мой критерий простой. Если нет человека, который открывает панель чата хотя бы дважды в день, живой чат ставить не надо. Ставьте кнопку «Написать в Телеграм» и форму, они честнее.

Что виджет делает со скоростью

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

Загрузчик стороннего чата весит немного, 15-25 КБ. Но он тянет за собой основной пакет, а это уже 300-900 КБ в зависимости от сервиса, плюс постоянное соединение по вебсокету, плюс запросы к своему API каждые несколько секунд. На мобильном канале и на слабом телефоне это чувствуется.

По моим замерам на типовом сайте услуг картина такая:

  • Jivo с настройками по умолчанию: около 380 КБ дополнительного трафика, PageSpeed на мобильном падает на 8-14 баллов;
  • Битрикс24 Открытые линии: 600-900 КБ, падение на 15-25 баллов, на дешёвом хостинге ещё и заметная задержка отрисовки;
  • скриптовый бот в конструкторе: 150-300 КБ, но часто с собственным шрифтом и иконочным набором, которые тянутся отдельно.

На LCP хорошо настроенный виджет обычно не влияет: он подключается асинхронно и не блокирует отрисовку главного экрана. Бьёт он по другому. Скрипт разбирается и исполняется в основном потоке, растёт время блокировки, и первое же нажатие на кнопку или пункт меню обрабатывается с задержкой. Это INP, метрика отзывчивости, и она входит в Core Web Vitals. Пользователь описывает это словами «сайт тупит», хотя визуально всё загрузилось быстро.

Лечится это фасадом. Свою кнопку чата рисуете сами (кружок в углу, 2 КБ разметки и стилей), а настоящий скрипт подгружаете только после того, как человек по ней кликнул, либо через несколько секунд бездействия. Для 95 процентов посетителей, которые в чат не пишут, виджет вообще не загружается.

<button id="chat-fab" type="button" aria-label="Открыть чат">Чат</button>
<script>
(function () {
  var loaded = false;
  function loadWidget() {
    if (loaded) return;
    loaded = true;
    var s = document.createElement('script');
    s.src = 'https://code.jivo.ru/widget/XXXXXXXX';
    s.async = true;
    document.head.appendChild(s);
  }
  document.getElementById('chat-fab').addEventListener('click', loadWidget);
  // запасной вариант: подгрузить в простое, если браузер поддерживает
  if ('requestIdleCallback' in window) {
    requestIdleCallback(function () { setTimeout(loadWidget, 8000); }, { timeout: 15000 });
  }
})();
</script>

На одном интернет-магазине такой фасад дал 68 против 84 баллов на мобильном PageSpeed без единой другой правки. Подробнее про вес популярных виджетов и замеры до и после я разбирал в статье про виджеты Jivosite и Битрикс24 и их влияние на скорость.

Отдельно про то, чего делать нельзя: заворачивать виджет чата в defer и надеяться, что этого достаточно. defer откладывает загрузчик, а не всё остальное, что он потом притащит. Экономия получается на уровне погрешности.

Персональные данные в переписке

Это самый недооценённый пункт. Форму на сайте владельцы худо-бедно оформляют по закону, а чат считают чем-то вроде телефона. Юридически он ближе к форме.

В переписке человек оставляет имя, телефон, почту, иногда адрес и подробности заказа. Это персональные данные, и вы их оператор. Отсюда несколько практических следствий.

Согласие нужно до начала диалога. У всех нормальных виджетов есть форма преконтакта: имя, контакт и чекбокс со ссылкой на политику конфиденциальности. Чекбокс должен быть непроставленным по умолчанию, а текст рядом с ним внятным: на обработку каких данных и для чего. Если виджет не умеет добавлять чекбокс, это повод его не ставить.

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

Уведомление в РКН должно учитывать чат. Если вы подавали уведомление об обработке данных, а потом поставили виджет, перечень собираемых данных и способ обработки изменились. Это отдельная точка сбора, её нужно указать. Общая логика по обязанностям владельца сайта разобрана в материале про 152-ФЗ для сайта малого бизнеса, тут добавлю только то, что относится к чату.

Пересылка диалогов в мессенджер это тоже передача. Схема «все обращения падают в Телеграм менеджеру» удобна и повсеместна. Просто держите в голове, что канал зарубежный, и не гоняйте через него ничего чувствительнее имени и телефона. Паспортные данные, медицинские подробности, номера карт в чате быть не должны в принципе, и бот должен уметь на такое отвечать отказом.

Практический минимум, который я прошу настроить на каждом проекте с чатом:

  • чекбокс согласия в преконтактной форме, ссылка на политику рабочая, не на главную;
  • срок хранения переписки в панели виджета выставлен явно (обычно 6-12 месяцев), а не «вечно»;
  • в политику конфиденциальности дописан абзац про чат: какие данные, зачем, кому передаются;
  • в самом боте запрет спрашивать документы, реквизиты карт и данные о здоровье.

Свой чат без сторонних сервисов

Для сайта услуг с 10-40 обращениями в месяц сторонний виджет часто избыточен. Он стоит денег, тянет чужой JavaScript, хранит вашу переписку у себя и требует, чтобы кто-то в него заходил.

Альтернатива, которую я ставлю чаще всего: обычная форма в модальном окне плюс мгновенная доставка заявки в Телеграм и на почту. Клиент пишет вопрос свободным текстом, заявка через две секунды у владельца в телефоне, тот отвечает по телефону или в мессенджере. Диалога на сайте нет, зато нет и повода объяснять, почему на сообщение никто не ответил.

Технически это один обработчик на PHP и вызов Bot API:

$text = "Вопрос с сайтаn"
      . "Имя: {$name}n"
      . "Телефон: {$phone}n"
      . "Страница: {$page}n"
      . "Сообщение: {$message}";

$ch = curl_init("https://api.telegram.org/bot{$token}/sendMessage");
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 5,
    CURLOPT_POSTFIELDS     => [
        'chat_id' => $chatId,
        'text'    => $text,
    ],
]);
$response = curl_exec($ch);

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

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

Как понять, окупается ли он

Через месяц после установки владелец обычно говорит «вроде пишут». Это не измерение. Измерение выглядит так.

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

// открытие виджета
ym(XXXXXXXX, 'reachGoal', 'chat_open');

// отправлено первое сообщение
ym(XXXXXXXX, 'reachGoal', 'chat_message');

// клиент оставил телефон или почту
ym(XXXXXXXX, 'reachGoal', 'chat_lead');

Дальше смотрим на две вещи. Первая: какая доля обращений пришла из чата, а какая из формы и звонков. Если чат даёт меньше 10 процентов при заметном весе скрипта, он не окупается. Вторая: качество. Считаю простое отношение числа диалогов к числу сделок. У меня по клиентам оно обычно в диапазоне 1 к 12 для чата и 1 к 4 для формы обратной связи. Чат ловит больше праздного интереса, это нормально, но если разрыв слишком большой, то бот собирает не заявки, а вопросы про режим работы.

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

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

Чек-лист перед внедрением

Прогоняю его на каждом проекте, где владелец просит поставить чат.

  1. Есть человек, который открывает панель минимум дважды в день? Если нет, ставим форму, а не чат.
  2. Собран список повторяющихся вопросов за последние три месяца. Меньше пяти вопросов означает, что боту нечего отвечать.
  3. Виджет умеет показывать чекбокс согласия со ссылкой на политику.
  4. Известно, где физически хранится переписка и на какой срок.
  5. Автооткрытие отключено или отложено минимум на 30-40 секунд, на мобильных лучше по прокрутке.
  6. Скрипт грузится по клику через фасад, а не в шапке страницы.
  7. Замерена мобильная скорость до установки, чтобы потом было с чем сравнивать.

И после установки, через две недели:

  1. Мобильный PageSpeed не просел больше чем на 5 баллов относительно замера до.
  2. INP в отчёте Метрики или в Search Console не ушёл в жёлтую зону.
  3. Цели в Метрике фиксируются, числа сходятся с панелью виджета.
  4. Прочитаны все диалоги за две недели, найдены места, где бот не понял вопрос.
  5. Проверено, что заявки из чата реально доходят до того, кто их обрабатывает.

Пункт про прочитанные диалоги обычно самый полезный. Первые две недели показывают, о чём люди спрашивают на самом деле, и часто это совсем не то, что владелец закладывал в сценарий.

Что бы я сделал на вашем месте

Если сайт услуг с потоком до полусотни обращений в месяц: форма с доставкой в Телеграм и кнопка «Написать в мессенджер». Никакого виджета, ноль рублей абонплаты, скорость не страдает.

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

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

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

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

Нужен ли чат-бот на сайте

Нужен, если однотипных вопросов много и на них реально кто-то отвечает. Если оператор заходит раз в день, виджет с надписью про ответ за две минуты работает против вас.

Сколько стоит чат на сайте

Живой чат с оператором 1 000-1 800 рублей в месяц за рабочее место. Сценарный бот 1 200-3 000 рублей в месяц плюс разовая настройка. Своя разработка 40-120 тысяч рублей единоразово.

Как чат влияет на скорость сайта

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

Что с персональными данными в переписке

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

Передайте техническую часть в надёжные руки.

Слежу за хостингом, бэкапами и обновлениями. Когда что-то пойдёт не так – звоните мне, не своему программисту, не в спортзал и не маме.

Короткие вопросы по теме

Все вопросы по теме "Юр. сторона и интеграции"

Заявка

Обсудим задачу

Напишите имя и телефон, выберите удобный канал. Перезвоню или напишу в течение часа в рабочее время.

Куда удобнее ответить?