Веб-аналитика

Материал из Центр поддержки системы бронировании
Перейти к навигации Перейти к поиску

Веб-аналитика — функция системы бронирования билетов онлайн Nemo.travel для отслеживания действий пользователя во время процесса поиска и бронирования авиабилетов.

Описание

Для отслеживания действий пользователя во время процесса поиска и бронирования авиабилетов, в Nemo.travel используется система событий, позволяющая передавать данные в различные сервисы веб-аналитики, такие как Яндекс.Метрика, Google Analytics, а также обеспечивает возможность настроить передачу данных в любые другие сервисы.

Принцип работы

При совершении пользователем определённых действий, в системе вызываются специальные javascript-события на объекте document. В объект события также передаются дополнительные данные (если имеются), которые характеризуют действия пользователя.

Например, при смене типа маршрута на форме поиска, срабатывает событие analytics.searchForm.tripType.value и в объект события передаётся javascript-объект со свойством value, содержащим тип выбранного маршрута (OW, RT или CR).

Отслеживание событий

Идентификатор цели

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

Пример достижения целей в сервисе Яндекс.Метрика:

$(document).on('analytics.checkout.booking.book', function (event, data) {
    yaCounterXXXXXX.reachGoal('ИДЕНТИФИКАТОР_ЦЕЛИ_X');
});
    
$(document).on('analytics.checkout.booking.buy', function (event, data) {
    yaCounterXXXXXX.reachGoal('ИДЕНТИФИКАТОР_ЦЕЛИ_Y', data);
});

Где XXXXXX — номер счетчика Яндекс.Метрики, ИДЕНТИФИКАТОР_ЦЕЛИ_X и ИДЕНТИФИКАТОР_ЦЕЛИ_Y — идентификаторы двух разных целей в Яндекс.Метрике, а data — дополнительные параметры, которые в данном случае передаются как Параметры визита.

Пример вызова события в сервисе Google Analytics:

$(document).on('analytics.checkout.booking.book', function (event, data) {
    ga('send', {
        hitType: 'event',
        eventCategory: 'ПРОИЗВОЛЬНОЕ_НАЗВАНИЕ_КАТЕГОРИИ_X',
        eventAction: 'ПРОИЗВОЛЬНОЕ_НАЗВАНИЕ_ДЕЙСТВИЯ_X',
        eventLabel: data
    });
});

$(document).on('analytics.checkout.booking.buy', function (event, data) {
    ga('send', {
        hitType: 'event',
        eventCategory: 'ПРОИЗВОЛЬНОЕ_НАЗВАНИЕ_КАТЕГОРИИ_Y',
        eventAction: 'ПРОИЗВОЛЬНОЕ_НАЗВАНИЕ_ДЕЙСТВИЯ_Y',
        eventLabel: data
    });
});

Полный список событий

Событие Параметры Описание
analytics.searchForm.directFlights.active value: true или false Опция «Только прямые» / «Без пересадок”
analytics.searchForm.tripType.value value: OW, RT, CR Выбор типа маршрута
analytics.searchForm.additionalParameters.fastFlights.active value: true или false Опция «Только короткие (до 2 часов)”, в блоке «Еще параметры”
analytics.searchForm.additionalParameters.maxRouteTime.value value: число, количество часов «Время в пути”, в блоке «Еще параметры”
analytics.searchForm.additionalParameters.maxPrice.value value: число, максимальная стоимость перелёта Поле «Цена билетов”, в блоке «Еще параметры”
analytics.searchForm.additionalParameters.carriers.value value: строка, список авиакомпаний Поле «Авиакомпании”, в блоке «Еще параметры”
analytics.searchForm.serviceClass.value value: строка, класс обслуживания Выбор класса обслуживания
analytics.searchForm.vicinityDates.active value: true или false Опция «Искать ±3 дня» (окружные даты)
analytics.searchForm.search.validationError - Ошибка валидации формы поиска
analytics.searchForm.search - Запуск поиска
analytics.searchForm.scheduleSearch - Запуск поиска по расписанию
analytics.searchResults.compareTable.active value: true или false Открытие / закрытие блока со сравнительной таблицей перелётов
analytics.searchResults.fastSearchForm.active value: true или false Открытие / закрытие блока с формой поиска на результатах поиска
analytics.searchResults.fastSearchForm.active value: true или false Открытие / закрытие блока с формой поиска на результатах поиска
analytics.searchResults.sort.value value: строка, тип сортировки Выбор типа сортировки перелётов
analytics.searchResults.displayType.value value: list, tile Переключатель формата отображения перелётов (список/карточки)
analytics.searchResults.flight.select - Кнопка покупки перелёта на результатах поиска
analytics.searchResults.showAllFlights - Кнопка показа всех перелётов (под поисковой выдачей)
analytics.searchResults.fareFamilies.load - Кнопка «Выбрать другой тариф”, процесс поиска семейств тарифов на результатах поиска
analytics.searchResults.fareFamilies.select - Кнопка покупки перелёта в попапе выбора семейства тарифов на результатах поиска
analytics.searchResults.filter.value name: название фильтра, value: значение фильтра Фильтры поисковой выдаче
analytics.checkout.customer.needNewAccount.active value: true или false Опция создания нового аккаунта
analytics.checkout.customer.visa.active value: true или false Опция внесения данных о визе
analytics.checkout.customer.meal.value value: строка, код типа питания Выбор типа питания
analytics.checkout.customer.loyaltyCard.active value: true или false Опция внесения карты лояльности
analytics.checkout.promocode.active value: true или false Попап с внесением промокода
analytics.checkout.promocode.apply - Внесение промокода
analytics.checkout.fareRules.load - Загрузка тарифных правил
analytics.checkout.booking.book - Бронирование успешно завершено
analytics.checkout.payment.gateway.value value: число, ID платежного шлюза в Nemo Выбор платежного шлюза
analytics.checkout.booking.cancel - Аннуляция заказа
analytics.checkout.booking.buy - Переход к оплате заказа
analytics.checkout.services.disableExtservices.active value: true или false Опция отказа от дополнительных услуг
analytics.checkout.services.alphaInsurance.active value: true или false Опция активации АльфаСтрахования
analytics.checkout.services.alphaInsurance.value value: строка, коды выбранных продуктов Выбор продукта (-ов) АльфаСтрахования
analytics.checkout.services.ervInsurance.active value: true или false Опция активации ERV Страхования
analytics.checkout.services.ervInsurance.value value: строка, коды выбранных продуктов Выбор продукта (-ов) ERV Страхования
analytics.checkout.services.ervInsurance.supplementary.value value: строка, коды выбранных продуктов Выбор дополнительного (-ых) продукта (-ов) ERV Страхования
analytics.checkout.services.servicePack.value value: число, ID выбранного сервисного пакета в Nemo Выбор сервисного пакета
analytics.checkout.booking.returnComplete - Завершение процесса возврата
analytics.checkout.booking.exchangeComplete - Завершение процесса обмена

Пример интеграции с сервисом Яндекс.Метрика

Код счетчика

Для отслеживания действий пользователей на сайте с помощью сервиса Яндекс.Метрика, необходимо:

  • Зарегистрироваться в сервисе и получить код счетчика метрики.
  • Полученный код необходимо поместить в код страницы между тегами <body></body>.

В рамках Nemo CMS данный код может быть размещен, к примеру, в шаблоне подвала сайта в разделе настроек Управление сайтом → Nemo CMS → Шаблоны.

  • В настройках счетчика в панели администрирования сервиса Яндекс.Метрика добавить необходимые цели, указав произвольное название цели. В качестве значения «Тип условия»

выбрать «JavaScript-событие» и указать произвольный «Идентификатор цели», который в дальнейшем будет использован в коде отслеживания событий.

  • Добавить в шаблон, в который ранее был добавлен счетчик Яндекс.Метрики, код отслеживания нужных событий. Код отслеживания событий при этом должен располагаться в шаблоне ниже кода счетчика Яндекс.Метрики:
function yandexScripts($) {
    $(document).on('analytics.searchForm.tripType.value', function (event, data) {
        yaCounterXXXXXXXX.reachGoal('идентификатор_цели_смены_типа_маршрута', data);
    });

    $(document).on('analytics.checkout.booking.book', function (event, data) {
        yaCounterXXXXXXXX.reachGoal('идентификатор_цели_бронирования', data);
    });

    $(document).on('analytics.checkout.booking.buy', function (event, data) {
        yaCounterXXXXXXXX.reachGoal('aидентификатор_цели_оплаты', data);
    });
};
 
if (typeof require == 'function') {
    require(['jquery'], yandexScripts);
}
else {
    yandexScripts($);
}