Виджеты vivaCRM сохраняют рекламные метки клиента и отправляют цели в Яндекс Метрику и VK Рекламу. Это работает во всех виджетах: персональной записи, групповых занятиях, каталоге абонементов, личном кабинете и подарочных сертификатах.
UTM-метки и Roistat
Метки сохраняются в момент регистрации или входа клиента. Дальше они «едут» вместе с ним и проставляются во все его будущие записи и покупки. Настраивать ничего не нужно.
Какие метки сохраняются
| Параметр | Что это |
|---|---|
| utm_source | Источник трафика (google, yandex, vk…) |
| utm_medium | Тип трафика (cpc, email, banner…) |
| utm_campaign | Название рекламной кампании |
| utm_content | Объявление или ссылка |
| utm_term | Ключевая фраза |
| roistat_visit | Номер визита Roistat |
| yclid | Идентификатор клика Яндекс Директа |
| rb_clickid | Идентификатор клика VK Рекламы |
| ClientID Метрики | Идентификатор посетителя в Яндекс Метрике |
| Страница входа и referrer | Первая страница визита и сайт, с которого пришёл клиент |
Откуда виджет берёт метки
Виджет читает метки из адресной строки страницы, например https://site.ru/?utm_source=google&utm_medium=cpc&utm_campaign=spring. Если метки или roistat_visit уже сохранены сайтом в cookie, виджет возьмёт их оттуда. Виджет хранит метки 90 дней; если клиент пришёл по новой ссылке с метками, сохраняются новые (последний клик).
Где смотреть метки
В vision.vivacrm.ru, раздел «Отчёты»:
-
Отчёт №3 «База клиентов»: метки, с которыми клиент зарегистрировался.
-
Отчёт №5 «Посещения»: метки по каждому визиту и записи.
Интеграция с Roistat
Если интеграция подключена, в Roistat уходят все записи, сделанные через виджеты, и сделки, которые создают менеджеры. Интеграция необязательна: без неё метки всё равно сохраняются и видны в отчётах.
Цели в Яндекс Метрике
Как подключить
Укажите номер счётчика Метрики в настройках виджета. Цели уходят во все счётчики, указанные для виджета. Если счётчик Метрики на странице загружается позже виджета, цели не теряются: виджет дождётся счётчика и отправит их.
Цели в Метрике нужно создать вручную: тип условия «JavaScript-событие», идентификатор — название цели из таблиц ниже. Названия чувствительны к регистру.
Для авторизованного клиента виджет передаёт в Метрику его UserID, поэтому визиты одного клиента с разных устройств склеиваются.
Параметры, которые есть у каждой цели
| Параметр | Что это |
|---|---|
| widget | Имя виджета из кода вставки |
| widget_id | ID виджета в vivaCRM |
| widget_type | Тип виджета: personal-booking, group-classes, catalog-abonements, cabinet, gift-certificates |
| studio_id | ID студии (локации), когда она уже выбрана |
| studio_name | Название студии |
| city | Город студии |
| is_authorized | Клиент вошёл в аккаунт |
| is_new_client | Новый клиент (только для авторизованных) |
Параметры позиции
Передаются в целях, которые относятся к конкретной услуге, занятию, абонементу или сертификату.
| Параметр | Что это |
|---|---|
| item_type | Тип позиции: service (услуга), class (групповое занятие), subscription (абонемент), one_time (разовое посещение), certificate (сертификат), addon (доп. услуга) |
| item_id | ID услуги, занятия в расписании, абонемента или сертификата |
| item_name | Название |
| category | Категория услуги или вид абонемента |
| direction | Направление |
| direction_id | ID направления |
| trainer_id | ID исполнителя (тренера, мастера), если выбран |
| trainer_name | Имя исполнителя |
| trainer_grade | Грейд исполнителя |
| price | Цена, ₽ |
| currency | Валюта |
| slot_date | Дата записи, ГГГГ-ММ-ДД |
| slot_time | Время начала, ЧЧ:ММ |
| duration_min | Длительность, минут |
| group_size | Количество человек в записи |
| seats_left | Свободных мест на занятии |
Параметры корзины и оплаты
Передаются в целях нажатия «Оплатить», перехода в банк и результата оплаты.
| Параметр | Что это |
|---|---|
| items | Позиции корзины: ID, название, тип, цена, количество |
| total | Сумма без скидок, ₽ |
| to_pay | К оплате, ₽ |
| discount | Скидка, ₽ |
| bonus | Оплачено бонусами, ₽ |
| deposit | Оплачено с депозита, ₽ |
| certificate | Оплачено сертификатом, ₽ |
| promo_code | Применённый промокод |
| transaction_id | ID платежа |
| revenue | Оплачено деньгами, ₽ (в целях успешной и неуспешной оплаты) |
| reason | Причина ошибки (в цели неуспешной оплаты) |
Цель результата оплаты отправляется один раз на платёж, даже если клиент перезагрузил страницу или банк открылся в новой вкладке.
Персональная запись
| Цель | Когда срабатывает | Дополнительные параметры |
|---|---|---|
| personal_widget_start | Виджет открыт | — |
| personal_widget_closed | Виджет закрыт | last_step — шаг, на котором клиент закрыл виджет |
| step_choose_the_services | Показан шаг выбора услуги | — |
| choose_user_done | Выбрана услуга | позиция |
| step_studio_choice | Показан шаг выбора студии | — |
| studio_selected | Выбрана студия | studio_id, studio_name, city |
| step_employee | Показан шаг выбора исполнителя | позиция |
| employee_selected | Выбран исполнитель | trainer_id, trainer_name, trainer_grade |
| employee_date_selected | Выбрана дата (сценарий с выбором исполнителя) | slot_date |
| employee_time_selected_with_employee | Выбрано время (сценарий с выбором исполнителя) | позиция |
| step_without_employee | Показан шаг выбора времени без исполнителя | позиция |
| without_employee_dateselected | Выбрана дата (сценарий без исполнителя) | slot_date |
| without_employee_time_selected | Выбрано время (сценарий без исполнителя) | позиция |
| step_final | Показан шаг подтверждения | позиция, корзина |
| addon_added | Добавлена доп. услуга | ID, название, цена и количество доп. услуги |
| promo_code_applied | Применён промокод | promo_code, discount |
| final_check_phone | Клиент ввёл телефон | auth_method |
| final_check_phone_done | Клиент подтвердил телефон кодом | auth_method |
| final_book_one_time | Запись по разовому посещению | позиция |
| final_book_subscription | Запись по абонементу | позиция |
| final_press_button_pay | Нажата кнопка «Оплатить» | позиция, корзина |
| payment_redirect | Клиент переходит на страницу банка | позиция, корзина |
| final_payment_success | Оплата прошла | позиция, корзина, revenue |
| final_payment_fail | Оплата не прошла | позиция, корзина, revenue, reason |
| payment_pending | Банк ещё не подтвердил оплату | позиция, корзина |
| booking_created | Запись создана без оплаты онлайн | booking_ids, paid_by — способ: subscription, one_time, reserve, free |
После выбора услуги цели персональной записи также передают: master_service (направление), service (услуга), employee (исполнитель), studio (студия), date, time_from, time_to, slots_count.
Групповые занятия
| Цель | Когда срабатывает | Дополнительные параметры |
|---|---|---|
| WIDGET_OPENED | Виджет открыт | — |
| WIDGET_CLOSED | Виджет закрыт | last_step — где клиент закрыл виджет |
| STUDIO_SELECTED | Выбрана студия в фильтре расписания | — |
| EXERCISE_SELECTED | Открыто занятие | позиция, exercise_id, exercise_name |
| USER_ADDED_TO_WAITLIST | Клиент встал в лист ожидания | позиция |
| USER_REMOVED_FROM_WAITLIST | Клиент вышел из листа ожидания | позиция |
| USER_CANCELLED_BOOKING | Клиент отменил запись | позиция |
| NO_SPOTS | Мест на занятии нет | позиция |
| ALREADY_BOOKED | Клиент уже записан на занятие | позиция |
| CANCEL_UNAVAILABLE | Отменить запись уже нельзя | позиция |
| AUTH_PHONE_ENTERED | Клиент ввёл телефон | auth_method |
| AUTH_CODE_ENTERED | Клиент ввёл код из SMS | auth_method |
| AUTH_SUCCESS | Клиент вошёл в аккаунт | auth_method |
| CLICK_PAYMENT_BUTTON_SERVICE | Нажата «Оплатить» на вкладке разовых посещений | позиция, корзина |
| CLICK_PAYMENT_BUTTON_SUBSCRIPTION | Нажата «Оплатить» на вкладке абонементов | позиция, корзина |
| PAYMENT_REDIRECT | Клиент переходит на страницу банка | позиция, корзина |
| PAYMENT_COMPLETED_SUCCESSFULLY | Оплата прошла | позиция, корзина, revenue |
| PAYMENT_FAILED | Оплата не прошла | позиция, корзина, revenue, reason |
| PAYMENT_PENDING | Банк ещё не подтвердил оплату | корзина |
| BOOKING_CREATED | Запись создана без оплаты онлайн | позиция, booking_ids, paid_by |
В групповых занятиях item_id — это ID конкретного занятия в расписании, trainer_id — ID первого тренера занятия.
Каталог абонементов
| Цель | Когда срабатывает | Дополнительные параметры |
|---|---|---|
| WIDGET_OPENED | Виджет открыт | — |
| WIDGET_CLOSED | Виджет закрыт | — |
| SUBSCRIPTION_SELECTED | Открыт абонемент | позиция, subscription_id, subscription_name |
| AUTH_PHONE_ENTERED | Клиент ввёл телефон | auth_method |
| AUTH_CODE_ENTERED | Клиент ввёл код из SMS | auth_method |
| AUTH_SUCCESS | Клиент вошёл в аккаунт | auth_method |
| CLICK_PAYMENT_BUTTON | Нажата «Оплатить» | позиция, корзина |
| PAYMENT_REDIRECT | Клиент переходит на страницу банка | позиция, корзина |
| PAYMENT_COMPLETED_SUCCESSFULLY | Оплата прошла | корзина, revenue |
| PAYMENT_FAILED | Оплата не прошла | корзина, revenue, reason |
| PAYMENT_PENDING | Банк ещё не подтвердил оплату | корзина |
Личный кабинет
| Цель | Когда срабатывает | Дополнительные параметры |
|---|---|---|
| WIDGET_OPENED | Кабинет открыт | — |
| WIDGET_CLOSED | Кабинет закрыт | — |
| AUTH_PHONE_ENTERED | Клиент ввёл телефон | auth_method |
| AUTH_CODE_ENTERED | Клиент ввёл код из SMS | auth_method |
| AUTH_SUCCESS | Клиент вошёл в аккаунт | auth_method |
| SUBSCRIPTION_CONSTRUCTOR_MODAL_OPENED | Открыт конструктор абонементов | — |
| CLICK_PAYMENT_BUTTON_SUBSCRIPTION | Нажата «Оплатить» в конструкторе абонементов | корзина, subscription_id, subscription_name |
| GIFT_CERTIFICATES_MODAL_OPENED | Открыта покупка подарочного сертификата | — |
| CLICK_PAYMENT_BUTTON_CERTIFICATE | Нажата «Оплатить» за сертификат | корзина |
| PAYMENT_REDIRECT | Клиент переходит на страницу банка | корзина |
| PAYMENT_COMPLETED_SUCCESSFULLY | Оплата прошла | корзина, revenue |
| PAYMENT_FAILED | Оплата не прошла | корзина, revenue, reason |
| PAYMENT_PENDING | Банк ещё не подтвердил оплату | корзина |
| BOOKING_CANCELLED | Клиент отменил запись | позиция, booking_id |
| BOOKING_REVIEWED | Клиент оценил посещение | позиция, booking_id, rating |
| USER_DATA_HAS_BEEN_CHANGED | Клиент изменил личные данные | — |
| USER_LOGGED_OUT | Клиент вышел из аккаунта | — |
Подарочные сертификаты
| Цель | Когда срабатывает | Дополнительные параметры |
|---|---|---|
| WIDGET_OPENED | Виджет открыт | — |
| WIDGET_CLOSED | Виджет закрыт | — |
| CERTIFICATE_SELECTED | Выбран сертификат и номинал | позиция, design — выбранный дизайн |
| CLICK_PAYMENT_BUTTON | Нажата «Оплатить» | корзина |
| PAYMENT_REDIRECT | Клиент переходит на страницу банка | корзина |
| PAYMENT_COMPLETED_SUCCESSFULLY | Оплата прошла | корзина, revenue |
| PAYMENT_FAILED | Оплата не прошла | корзина, revenue, reason |
| PAYMENT_PENDING | Банк ещё не подтвердил оплату | корзина |
Электронная коммерция в Метрике
Виджеты передают события электронной коммерции через window.dataLayer. Чтобы видеть их в отчётах, включите «Электронную коммерцию» в настройках счётчика Метрики (контейнер dataLayer).
| Событие | Когда |
|---|---|
| Просмотр товара (detail) | Выбрана услуга, открыто занятие, абонемент или сертификат |
| Добавление в корзину (add) | Выбраны услуга, абонемент, разовое посещение, доп. услуга или сертификат |
| Удаление из корзины (remove) | Позиция убрана или окно покупки закрыто без оплаты |
| Покупка (purchase) | Оплата прошла или запись создана без оплаты |
Категории товаров: «Персональные / направление / категория», «Групповые / направление», «Абонементы / тип / вид», «Сертификаты», «Допы».
VK Реклама
Укажите ID пикселя VK Рекламы в настройках виджета. Виджет отправляет в пиксель события:
| Событие | Когда |
|---|---|
| viva_view_item | Выбрана услуга, открыто занятие, абонемент или сертификат |
| viva_add_to_cart | Позиция добавлена в корзину |
| viva_checkout | Нажата «Оплатить» |
| viva_purchase_client | Оплата прошла |
С событиями передаются сумма и ID позиции, а для авторизованного клиента — его ID.