Разделы документации

Колбэки виджета и отправка событий в Яндекс.Метрику и Google Analytics.

События и аналитика

Обработчики событий задаются функциями в SvyazioConfig. Ошибку внутри обработчика виджет молча перехватывает, чтобы не сломать чат, — для отладки оборачивайте код в try/catch с console.error.

onNewMessage — новое сообщение

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

JavaScript
window.SvyazioConfig = {
  orgId: "ВАШ_ORG_ID",
  serverUrl: "https://app.svyazio.ru",
  onNewMessage: function (message) {
    // message = {
    //   id: "3f1c…",
    //   text: "Здравствуйте! Чем помочь?",
    //   createdAt: 1758528000000,   // время в миллисекундах
    //   type: "agent"               // "agent" или "bot"
    // }
  }
};
ПолеТипЧто содержит
idstringID сообщения.
textstringТекст сообщения. У сообщения только с вложением может быть пустым.
createdAtnumberВремя отправки в миллисекундах — подходит для new Date(createdAt).
type'agent' | 'bot'Кто написал: оператор или бот (автоответ, триггер, чат-бот).

Пример: счётчик непрочитанных в заголовке вкладки, пока посетитель на другой вкладке.

JavaScript
var baseTitle = document.title;
var unread = 0;

window.SvyazioConfig = {
  orgId: "ВАШ_ORG_ID",
  serverUrl: "https://app.svyazio.ru",
  onNewMessage: function (message) {
    if (message.type !== 'agent' || !document.hidden) return;
    unread += 1;
    document.title = '(' + unread + ') ' + baseTitle;
  }
};

// Посетитель вернулся на вкладку — убираем счётчик
document.addEventListener('visibilitychange', function () {
  if (!document.hidden) {
    unread = 0;
    document.title = baseTitle;
  }
});

onAnalyticEvent — события для аналитики

Обработчик получает название события строкой. Событий два:

СобытиеКогда приходит
Widget loadedВиджет загрузился и появился на странице. Не приходит, если виджет выключен в панели, не подходит устройство или посетитель заблокирован.
Chat initiated by visitorЧат открыт методом openChat, expandWidget или setExpanded, своей кнопкой из customWidgetButton, ссылкой #svyazioChatExpanded или кликом по карточке входящего сообщения оператора. Не отправляют: клик по стандартной кнопке виджета, всплывающее приветствие (тизер), автооткрытие и триггеры из панели. Повторный openChat на уже открытом чате отправляет событие ещё раз — учитывайте это, если считаете по нему цели.

Пример: цели в Яндекс Метрике и событие в Google Analytics 4.

JavaScript
window.SvyazioConfig = {
  orgId: "ВАШ_ORG_ID",
  serverUrl: "https://app.svyazio.ru",

  onAnalyticEvent: function (name) {
    // Яндекс Метрика: цели «chat_loaded» и «chat_opened» создайте в интерфейсе Метрики
    if (typeof ym === 'function') {
      if (name === 'Widget loaded') ym(12345678, 'reachGoal', 'chat_loaded');
      if (name === 'Chat initiated by visitor') ym(12345678, 'reachGoal', 'chat_opened');
    }
    // Google Analytics 4
    if (typeof gtag === 'function') {
      gtag('event', 'svyazio_chat', { action: name });
    }
  },

  onNewMessage: function (message) {
    // Первый ответ оператора на этой странице — отдельная цель
    if (message.type === 'agent' && !window.__svyazioReplied) {
      window.__svyazioReplied = true;
      if (typeof ym === 'function') ym(12345678, 'reachGoal', 'chat_reply');
    }
  }
};

Код установки в примерах сокращён до объекта настроек. Полностью — в разделе «Установка», скрипт — https://app.svyazio.ru/widget/svyazio.js.

Обновлено 22 сентября 2026