Отслеживание событий JivoSite в GA4 через GTM
В прошлый раз мы разбирали, как отслеживать события JivoSite через GTM с помощью переменных уровня данных. У того способа есть жёсткое ограничение: Jivo отправляет события в аналитику только на тарифе «Профессиональный» и выше. На стартовых и бесплатном тарифе событий просто нет — фиксировать нечего.
Но есть другой подход, который снимает это ограничение полностью. Он работает на любом тарифе, включая бесплатный. Ниже — пошаговая настройка через Google Tag Manager.
Почему это работает на бесплатном тарифе
Помимо серверной отправки событий (которая привязана к платному тарифу), виджет Jivo умеет вызывать JavaScript-колбэки прямо в браузере пользователя. Это функции с фиксированными именами — jivo_onOpen, jivo_onMessageSent, jivo_onClose и другие. Когда в чате что-то происходит, Jivo проверяет, определена ли на странице такая функция, и если да — вызывает её.
Эти колбэки — часть клиентской механики виджета, они не зависят от тарифа. Значит, мы можем сами определить эти функции и внутри каждой отправить событие в dataLayer. Дальше — обычная работа GTM. Мы не ждём, пока Jivo пришлёт нам событие, — мы перехватываем момент, когда виджет дёргает свой колбэк, и превращаем его в событие GTM.
Что понадобится
- → установленный GTM на сайте;
- → GA4, подключённая через GTM (тег конфигурации GA4);
- → по желанию — Яндекс Метрика, тоже через GTM;
- → виджет JivoSite на сайте (любой тариф).
Шаг 1. HTML-тег: определяем колбэки Jivo
Создаём пользовательский HTML-тег (Теги → Создать → Пользовательский HTML). Внутри — скрипт, который объявляет все колбэки Jivo, и каждый пушит своё событие в dataLayer:
<script>
function jivo_onLoadCallback(){dataLayer.push({event:"jivo_onLoadCallback"})}
function jivo_onOpen(){dataLayer.push({event:"jivo_onOpen"})}
function jivo_onClose(){dataLayer.push({event:"jivo_onClose"})}
function jivo_onMessageSent(){dataLayer.push({event:"jivo_onMessageSent"})}
function jivo_onMessageReceived(){dataLayer.push({event:"jivo_onMessageReceived"})}
function jivo_onAccept(){dataLayer.push({event:"jivo_onAccept"})}
function jivo_onIntroduction(){dataLayer.push({event:"jivo_onIntroduction"})}
function jivo_onCallStart(){dataLayer.push({event:"jivo_onCallStart"})}
function jivo_onCallEnd(){dataLayer.push({event:"jivo_onCallEnd"})}
function jivo_onChangeState(){dataLayer.push({event:"jivo_onChangeState"})}
function jivo_onClientStartChat(){dataLayer.push({event:"jivo_onClientStartChat"})}
</script>
Каждая функция ловит своё действие в чате:
- → jivo_onLoadCallback — виджет загрузился;
- → jivo_onOpen — посетитель открыл окно чата;
- → jivo_onClose — закрыл окно чата;
- → jivo_onMessageSent — отправил сообщение;
- → jivo_onMessageReceived — пришло сообщение от оператора;
- → jivo_onAccept — оператор принял диалог;
- → jivo_onIntroduction — посетитель оставил контакты;
- → jivo_onCallStart / jivo_onCallEnd — начат / окончен звонок;
- → jivo_onChangeState — смена состояния;
- → jivo_onClientStartChat — клиент сам инициировал диалог.
Важно про триггер активации. Этот тег нужно повесить на встроенный триггер, который срабатывает на всех страницах как можно раньше — «All Pages» или «Инициализация». Колбэки должны быть определены до того, как виджет их дёрнет, иначе первые события потеряются.

Шаг 2. Переменная-словарь: читаемые названия событий
Технические имена вроде jivo_onMessageSent в отчётах читать неудобно. Заведём переменную типа «Таблица поиска» (Lookup Table), которая переводит их в понятные названия.
Создаём переменную (Переменные → Создать → Таблица поиска), назовём TS — Jivo. Входная переменная — встроенная {{Event}}. Заполняем соответствия «имя колбэка → читаемое название»:
- → jivo_onOpen → j_открыл окно чата;
- → jivo_onMessageSent → j_отправил сообщение;
- → jivo_onIntroduction → j_оставил контакты;
- → jivo_onCallStart → j_начат звонок — и так далее для всех событий.
Префикс j_ удобен тем, что в GA4 и Метрике все «дживо-события» будут стоять рядом и легко фильтруются.

Шаг 3. Триггеры
Нам нужно два триггера — один общий и один под ключевое действие.
- 1. Все события Jivo. Тип — «Пользовательское событие», имя события задаём регулярным выражением ^jivo (галочка «использовать регулярное выражение»). Ловит все события, начинающиеся с jivo.
- 2. Отправка сообщения. Тип — «Пользовательское событие», имя события ровно jivo_onMessageSent. Это самое ценное действие — посетитель написал в чат. Выносим отдельно, чтобы пометить ключевым и оптимизировать под него рекламу.


Шаг 4. Теги GA4
Тег «все события» (событие GA4). Имя события — j_all_events. Параметр события — один:
- → j_events → значение {{TS — Jivo}} (человекочитаемое имя из словаря).
Триггер — общий (regex ^jivo). Так все действия в чате падают в одно событие j_all_events, а конкретный тип видно в параметре j_events.
Важный момент. Чтобы параметр j_events отображался в отчётах GA4, его нужно зарегистрировать как специальное определение (Custom definition). В интерфейсе GA4: Администратор → Специальные определения → Создать специальный параметр, область действия — «Событие», имя параметра — j_events. Без этого шага событие будет приходить, но разбивку по типам в отчётах вы не увидите. Данные начинают собираться с момента создания определения.
Тег «отправка сообщения» (событие GA4). Имя события — j_message, те же параметры, триггер — jivo_onMessageSent. Это отдельное событие под ключевое действие: именно его потом помечаем ключевым и импортируем в рекламный кабинет для оптимизации.
Совет: ID потока GA4 удобно вынести в отдельную переменную-константу (например {{GA4}}) и подставлять в поле «Идентификатор показателя» — так ID в одном месте, а не прописан в каждом теге.


Шаг 5. Яндекс Метрика (если нужна)
Если события нужны и в Метрике — добавляем два HTML-тега с вызовом reachGoal. Номер счётчика подставьте свой.
Тег «все события» (триггер ^jivo):
<script>
ym(XXXXXXXX, 'reachGoal', 'j_events', {
'Доп.параметры': {
'Тип события': '{{TS - Jivo}}'
}
})
</script>
Тег «отправка сообщения» (триггер jivo_onMessageSent):
<script>
ym(XXXXXXXX, 'reachGoal', 'jivo-message', {
'Доп.параметры': {
'Тип события': '{{TS - Jivo}}'
}
})
</script>
XXXXXXXX — номер вашего счётчика Метрики.


Шаг 6. Проверка и запуск
- 1. Включаем режим предпросмотра GTM (Preview), открываем сайт.
- 2. Открываем чат, пишем сообщение, оставляем контакты — и смотрим, как в отладчике GTM всплывают события jivo_onOpen, jivo_onMessageSent, а теги GA4 и Метрики срабатывают.
- 3. Проверяем в DebugView GA4, что событие j_all_events пришло с правильным параметром j_events.
- 4. Публикуем контейнер.


Что это даёт
- → события из чата фиксируются на любом тарифе Jivo — даже на бесплатном, потому что мы работаем с клиентскими колбэками, а не с серверной отправкой;
- → в GA4 видно всю активность в чате по типам — открытия, сообщения, звонки, оставленные контакты;
- → ключевое действие (j_message) можно пометить ключевым событием и импортировать в Google Ads / Яндекс Директ, чтобы кампании оптимизировались на реальные обращения из чата, а не только на формы.
Раньше обращения из чата были слепой зоной — человек написал в Jivo, а в аналитике пусто. Теперь каждое действие в чате становится событием, которым можно управлять.
Такие настройки — часть услуги настройки веб-аналитики. Если нужно свести все обращения (формы, звонки, чат, мессенджеры) в одну аналитику и передать в рекламу — напишите нам, разберём ваш случай.
Хотите так же — но в своём проекте?
Бесплатно посмотрим вашу рекламу и аналитику и покажем, где теряются заявки. Без обязательств.
Кейсы, разборы и новости digital — без воды.