Как передавать события виджета онлайн-записи в системы аналитики

События виджета онлайн-записи для собственной аналитики, GTM и обработки успешной записи.

Виджет онлайн-записи передаёт браузерные события о действиях пользователя. Их можно использовать для собственной веб-аналитики, например в Google Tag Manager, или для изменения состояния страницы после успешной записи.

Как работает передача событий

Виджет отправляет в объект window событие updateAppointmentWidgetsAnalytics. Тип действия находится в event.detail.action.type, а связанные данные — в event.detail.data.

Добавьте обработчик на страницу до подключения скрипта виджета:

<script>
  window.addEventListener('updateAppointmentWidgetsAnalytics', function (event) {
    const action = event.detail.action;
    const data = event.detail.data;

    console.log('Widget event:', action.type, event.detail);

    if (action.type === 'successfullyEnrolled') {
      console.log('Created admission:', data.content.admission);
    }
  });
</script>

Для логики интеграции используйте action.type. Поле action.name содержит локализованное название и может меняться в зависимости от языка интерфейса.

Доступные события

Тип событияКогда отправляетсяОсновные данные
openedTheFormФорма виджета открыласьНазвание и ID виджета, адрес формы, тип интеграции
choseFilialВыбран или автоматически определён филиалВыбранный филиал и список филиалов
choseAdmissionTypeВыбран специалист, услуга или специализацияСпециалист, услуга, специализация и филиал
choseAdmissionDatetimeВыбраны дата и время записиДата, время, специалист, услуга или специализация
successfullyEnrolledЗапись успешно созданаСозданная запись, клиент, пациент, филиал, специалист, дата и время
apiErrorВиджет перешёл на экран ошибки APIТекст ошибки, адрес запроса и выбранные данные

Как обработать успешную запись

window.addEventListener('updateAppointmentWidgetsAnalytics', function (event) {
  if (event.detail.action.type !== 'successfullyEnrolled') {
    return;
  }

  const admission = event.detail.data.content.admission;

  // Здесь можно обновить страницу, закрыть модальное окно,
  // показать уведомление или отправить событие в аналитику.
  console.log('Appointment created:', admission);
});

Автоматический переход на собственный URL после записи в настройках виджета не предусмотрен. Вместо него можно обработать событие successfullyEnrolled на своей странице.

Пример для Google Tag Manager

window.addEventListener('updateAppointmentWidgetsAnalytics', function (event) {
  window.dataLayer = window.dataLayer || [];

  window.dataLayer.push({
    event: 'appointment_widget_event',
    widget_event_type: event.detail.action.type,
    widget_id: event.detail.data.config.id,
    selected_filial: event.detail.data.content.selectedFilial?.title || null
  });
});

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

Ограничения

  • Виджет не сохраняет произвольные GET-параметры, например external_id, lead_id или utm_*, в карточке клиента или записи Vetmanager.
  • События передаются как CustomEvent, а не через window.postMessage.
  • Если виджет работает внутри iframe, родительская страница не получит событие автоматически. Его нужно дополнительно передать из окна iframe через postMessage.
  • Отдельных событий закрытия или отмены формы сейчас нет.

Если вам нужна встроенная настройка целей Яндекс.Метрики, воспользуйтесь инструкцией «Настройка интеграции Яндекс.Метрики».

👆 На этом пока всё