Открыть главное меню

Изменения

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

16 217 байт добавлено, 13:19, 5 декабря 2019
Полный список событий
Для отслеживания событий, которые происходят в системе {{NameSystem}} [[Категория:Плагины]][[Категория:Статистика и передачи их в системы вебаналитики нужно разместить в разделе отчёты]]'''Управление сайтом → Настройка внешнего видаВеб-аналитика''' код, который будет отправлять данные о взаимодействии с элементами интерфейса— функция системы бронирования билетов онлайн {{NameSystemLink}} для отслеживания действий пользователя во время процесса поиска и бронирования авиабилетов.
==Описание==
Для отслеживания действий пользователя во время процесса поиска и бронирования авиабилетов,
в {{NameSystemLink}} используется система событий, позволяющая передавать данные в различные сервисы веб-аналитики,
такие как '''Яндекс.Метрика''', '''Google Analytics''', а также обеспечивает возможность настроить передачу данных в любые другие сервисы.
==Принцип работы==
== События ==Для облегчения интеграции с сервисами веб-аналитики При совершении пользователем определённых действий, в Немо заданы системе вызываются специальные javascript-события, которые срабатывают в зависимости от действий пользователя на сайте.В системе Немо реализованы следующие события:объекте <precode>analyticsStartSearch - запуск поискаanalyticsScheduleSearch - запуск поиска по расписаниюanalyticsSelectFlight - выбор перелета на странице с результатами поискаanalyticsSelectFareFamily - выбор семейства тарифов в всплывающем окнеanalyticsServicesPage - переход к странице с дополнительными услугамиanalyticsBooking - успешное завершение бронированияanalyticsPaymentAttempt - переход к оплатеanalyticsReturnComplete - выполненный возвратanalyticsCancellation - нажатие на кнопку аннуляции заказаdocument</precode>.В объект события также передаются дополнительные данные (если имеются), которые характеризуют действия пользователя.
== Пример использования ==Например, при смене типа маршрута на форме поиска, срабатывает событие <code>analytics.searchForm.tripType.value</code>и в объект события передаётся javascript-объект со свойством <code>value</code>, содержащим тип выбранного маршрута (''OW'', ''RT'' или ''CR'').
Пример кода для интеграции с сервисом Яндекс.Метрика== Отслеживание событий ==
<syntaxhighlight lang="javascript" line enclose="div" style="font-size[[Файл:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">Идентификатор_цели.jpeg|thumb|300px|Идентификатор цели]]
Для передачи информации в сервисы веб-аналитики вызванные действиями пользователя javascript-события необходимо «отследить»,получить из них желаемую информацию и сделать соответствующие обращения к сервисам веб-аналитики. Пример достижения целей в сервисе '''Яндекс.Метрика''': <source lang="javascript" style="width: 40%">$(document).on('analytics.checkout.booking.book', function CMSScripts($event, data) { if (typeof yaCounterXXXXXX !== 'undefined') { yaCounterXXXXXX.reachGoal('ИДЕНТИФИКАТОР_ЦЕЛИ_X'); }}); $(document).on('analyticsStartSearchanalytics.checkout.booking.buy', function (event, data) { if (typeof yaCounterXXXXXX !== 'undefined') { yaCounterXXXXXX.reachGoal('TARGET_NAME1ИДЕНТИФИКАТОР_ЦЕЛИ_Y', data); }});</source> Где ''XXXXXX'' — номер счетчика Яндекс.Метрики, ''ИДЕНТИФИКАТОР_ЦЕЛИ_X'' и ''ИДЕНТИФИКАТОР_ЦЕЛИ_Y'' —идентификаторы двух разных целей в Яндекс.Метрике, а <code>data</code> — дополнительные параметры, которые в данном случае передаютсякак [https://yandex.ru/support/metrika/data/visit-params.xml Параметры визита]. Пример вызова события в сервисе '''Google Analytics''': <source lang="javascript" style="width: 40%">$(document).on('analytics.checkout.booking.book', function (event, data) { ga('send', { hitType: 'event', eventCategory: 'ПРОИЗВОЛЬНОЕ_НАЗВАНИЕ_КАТЕГОРИИ_X', eventAction: 'ПРОИЗВОЛЬНОЕ_НАЗВАНИЕ_ДЕЙСТВИЯ_X', eventLabel: data
});
}); $(document).on('analyticsScheduleSearchanalytics.checkout.booking.buy', function (event, data) { ga('send', { yaCounterXXXXXX.reachGoal(hitType: 'event', eventCategory: 'ПРОИЗВОЛЬНОЕ_НАЗВАНИЕ_КАТЕГОРИИ_Y', eventAction: 'TARGET_NAME2ПРОИЗВОЛЬНОЕ_НАЗВАНИЕ_ДЕЙСТВИЯ_Y');, eventLabel: data
});
});</source> == Полный список событий == {| class="wikitable" style="width:60%"!width="17%" style="padding: 10px;"| Код события!width="18%" style="padding: 10px;"| Параметры!width="11%" style="padding: 10px;"| Описание|-| analytics.searchForm.directFlights.active| <code>value</code>: <code>true</code> или <code>false</code>| Опция «Только прямые» / «Без пересадок”|-| analytics.searchForm.tripType.value| <code>value</code>: <code>OW</code>, <code>RT</code>, <code>CR</code>| Выбор типа маршрута|-| analytics.searchForm.additionalParameters.fastFlights.active| <code>value</code>: <code>true</code> или <code>false</code>| Опция «Только короткие (до 2 часов)”, в блоке «Еще параметры”|-| analytics.searchForm.additionalParameters.maxRouteTime.value| <code>value</code>: число, количество часов| «Время в пути”, в блоке «Еще параметры”|-| analytics.searchForm.additionalParameters.maxPrice.value| <code>value</code>: число, максимальная стоимость перелёта| Поле «Цена билетов”, в блоке «Еще параметры”|-| analytics.searchForm.additionalParameters.carriers.value| <code>value</code>: строка, список авиакомпаний| Поле «Авиакомпании”, в блоке «Еще параметры”|-| analytics.searchForm.serviceClass.value| <code>value</code>: строка, класс обслуживания| Выбор класса обслуживания|-| analytics.searchForm.vicinityDates.active| <code>value</code>: <code>true</code> или <code>false</code>| Опция «Искать ±3 дня» (окружные даты)|-| analytics.searchForm.validationError| -| Ошибка валидации формы поиска|-| analytics.searchForm.search| -| Запуск поиска|-| analytics.searchForm.scheduleSearch| -| Запуск поиска по расписанию|-| analytics.searchResults.compareTable.active| <code>value</code>: <code>true</code> или <code>false</code>| Открытие / закрытие блока со сравнительной таблицей перелётов|-| analytics.searchResults.fastSearchForm.active| <code>value</code>: <code>true</code> или <code>false</code>| Открытие / закрытие блока с формой поиска на результатах поиска|-| analytics.searchResults.sort.value| <code>value</code>: строка, тип сортировки| Выбор типа сортировки перелётов|-| analytics.searchResults.displayType.value| <code>value</code>: <code>list</code>, <code>tile</code>| Переключатель формата отображения перелётов (список/карточки)|-| analytics.searchResults.flight.select| -| Кнопка покупки перелёта на результатах поиска|-| analytics.searchResults.showAllFlights| -| Кнопка показа всех перелётов (под поисковой выдачей)|-| analytics.searchResults.fareFamilies.load| -| Кнопка «Выбрать другой тариф”, процесс поиска семейств тарифов на результатах поиска|-| analytics.searchResults.fareFamilies.select| -| Кнопка покупки перелёта в попапе выбора семейства тарифов на результатах поиска|-| analytics.searchResults.filter.value| <code>name</code>: название фильтра, <code>value</code>: значение фильтра| Фильтры поисковой выдаче|-| analytics.searchResults.resultsError| -| При поиске произошла ошибка|-| analytics.searchResults.noFlights| -| Поиск не дал результатов (нет рейсов)|-| analytics.checkout.customer.needNewAccount.active| <code>value</code>: <code>true</code> или <code>false</code>| Опция создания нового аккаунта|-| analytics.checkout.customer.visa.active| <code>value</code>: <code>true</code> или <code>false</code>| Опция внесения данных о визе|-| analytics.checkout.customer.meal.value| <code>value</code>: строка, код типа питания| Выбор типа питания|-| analytics.checkout.customer.loyaltyCard.active| <code>value</code>: <code>true</code> или <code>false</code>| Опция внесения карты лояльности|-| analytics.checkout.promocode.active| <code>value</code>: <code>true</code> или <code>false</code>| Попап с внесением промокода|-| analytics.checkout.promocode.apply| -| Внесение промокода|-| analytics.checkout.fareRules.load| -| Загрузка тарифных правил|-| analytics.checkout.booking.book| -| Бронирование успешно завершено|-| analytics.checkout.payment.gateway.value| <code>value</code>: число, ID платежного шлюза в Nemo| Выбор платежного шлюза|-| analytics.checkout.booking.cancel| -| Аннуляция заказа|-| analytics.checkout.booking.buy| -| Переход к оплате заказа|-| analytics.checkout.booking.paid| -| Заказ был полностью оплачен и пользователь открыл страницу с заказом. [http://support.nemo.travel/ru/%D0%92%D0%B5%D0%B1-%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B0#.D0.9E.D1.82.D1.81.D0.BB.D0.B5.D0.B6.D0.B8.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D1.81.D0.BE.D0.B1.D1.8B.D1.82.D0.B8.D1.8F_.22.D0.97.D0.B0.D0.BA.D0.B0.D0.B7_.D0.B1.D1.8B.D0.BB_.D0.BF.D0.BE.D0.BB.D0.BD.D0.BE.D1.81.D1.82.D1.8C.D1.8E_.D0.BE.D0.BF.D0.BB.D0.B0.D1.87.D0.B5.D0.BD.22 Подробнее]|-| analytics.checkout.services.disableExtservices.active| <code>value</code>: <code>true</code> или <code>false</code>| Опция отказа от дополнительных услуг|-| analytics.checkout.services.alphaInsurance.active| <code>value</code>: <code>true</code> или <code>false</code>| Опция активации АльфаСтрахования|-| analytics.checkout.services.alphaInsurance.value| <code>value</code>: строка, коды выбранных продуктов| Выбор продукта (-ов) АльфаСтрахования|-| analytics.checkout.services.ervInsurance.active| <code>value</code>: <code>true</code> или <code>false</code>| Опция активации ERV Страхования|-| analytics.checkout.services.ervInsurance.value| <code>value</code>: строка, коды выбранных продуктов| Выбор продукта (-ов) ERV Страхования|-| analytics.checkout.services.ervInsurance.supplementary.value| <code>value</code>: строка, коды выбранных продуктов| Выбор дополнительного (-ых) продукта (-ов) ERV Страхования|-| analytics.checkout.services.servicePack.value| <code>value</code>: число, ID выбранного сервисного пакета в Nemo| Выбор сервисного пакета|-| analytics.checkout.booking.returnComplete| -| Завершение процесса возврата|-| analytics.checkout.booking.exchangeComplete| -| Завершение процесса обмена|} == Пример интеграции с сервисом Яндекс.Метрика == [[Файл:Код_счетчика_метрики.jpeg|thumb|300px|Код счетчика]] Для отслеживания действий пользователей на сайте с помощью сервиса Яндекс.Метрика, необходимо:* Зарегистрироваться в сервисе и получить код счетчика метрики ('''флаг "Асинхронный код" должен быть отключен''').* Полученный код необходимо поместить в код страницы между тегами <code><body></body></code>, '''как можно ближе к открывающему тегу''' <code><body></code>. В рамках Nemo CMS данный код может быть размещен в одном из шаблонов сайта, в разделе настроек ''Управление сайтом → Nemo CMS → Шаблоны''.* В настройках счетчика в панели администрирования сервиса Яндекс.Метрика добавить необходимые цели, указав произвольное название цели. В качестве значения «Тип условия» выбрать «JavaScript-событие» и указать произвольный «Идентификатор цели», который в дальнейшем будет использован в коде отслеживания событий.* Добавить в шаблон, в который ранее был добавлен счетчик Яндекс.Метрики, код отслеживания нужных событий. Код отслеживания событий при этом должен располагаться в шаблоне ниже кода счетчика Яндекс.Метрики:<source lang="javascript" style="width: 40%">function yandexScripts($) { $(document).on('analyticsCancellationanalytics.searchForm.tripType.value', function (event, data) { if (typeof yaCounterXXXXXX!== 'undefined') { yaCounterXXXXXXXX.reachGoal('TARGET_NAME3идентификатор_цели_смены_типа_маршрута', data); } });  $(document).on('analytics.checkout.booking.book', function (event, data) { if (typeof yaCounterXXXXXX !== 'undefined') { yaCounterXXXXXXXX.reachGoal('идентификатор_цели_бронирования', data); } });}; if (typeof require == 'function') { require(['jquery'], yandexScripts);}else { yandexScripts($);}</source> === Отслеживания события "Заказ был полностью оплачен" === Отслеживание события "Заказ был полностью оплачен" должно происходить с помощью определенного кода: <source lang="javascript" style="width: 40%">function yandexScripts($) { $(document).on('analytics.checkout.booking.paid', function (event, data) { if (typeof yaCounterXXXXXXXX !== "undefined") { yaCounterXXXXXXXX.reachGoal('aидентификатор_цели_оплаты'); } else { var interval = setInterval(function () { if (typeof yaCounterXXXXXXXX !== "undefined") { clearInterval(interval); yaCounterXXXXXXXX.reachGoal('aидентификатор_цели_оплаты'); } }, 200); }
});
};
if (typeof require == 'function') {
require(['jquery'], yandexScripts);
}
else {
yandexScripts($);
}
</source>
== Пример интеграции с сервисом Google Analytics ==
 
[[Файл:Создание_цели_google.jpeg|thumb|300px|Создание цели в сервисе Google Analytics]]
 
Для отслеживания действий пользователей на сайте с помощью сервиса Google Analytics, необходимо:
* Зарегистрироваться в сервисе и получить код аналитики.
* Полученный код необходимо поместить в код страницы между тегами <code><body></body></code>, '''как можно ближе к открывающему тегу''' <code><body></code>. В рамках Nemo CMS данный код может быть размещен в одном из шаблонов сайта, в разделе настроек ''Управление сайтом → Nemo CMS → Шаблоны''.
* В панели администрирования сервиса Google Analytics добавить необходимые цели, указав тип цели как «Событие», категорию события «analytics», а действие событие установить равным коду события из Nemo (например, <code>analytics.checkout.booking.buy</code>).
* Добавить в шаблон, в который ранее был добавлен код аналитики, код отслеживания нужных событий. Код отслеживания событий при этом должен располагаться в шаблоне ниже добавленного кода аналитики:
<source lang="javascript" style="width: 40%">
function googleScripts($) {
$(document).on('analytics.searchForm.tripType.value', function (event, data) {
ga('send', {
hitType: 'event',
eventCategory: 'analytics',
eventAction: 'analytics.searchForm.tripType.value',
eventLabel: data
});
});
 
$(document).on('analytics.checkout.booking.book', function (event, data) {
ga('send', {
hitType: 'event',
eventCategory: 'analytics',
eventAction: 'analytics.checkout.booking.book',
eventLabel: data
});
});
 
$(document).on('analytics.checkout.booking.buy', function (event, data) {
ga('send', {
hitType: 'event',
eventCategory: 'analytics',
eventAction: 'analytics.checkout.booking.buy',
eventLabel: data
});
});
};
if (typeof require == 'function') {
require(['jquery'], CMSScriptsgoogleScripts);
}
else {
CMSScriptsgoogleScripts($);
}
</syntaxhighlightsource>
где XXXXXX - это номер вашего счетчика заведенного, а TARGET_NAME1 - идентификатор цели в сервисе Яндекс.Метрика.== Точность ==
{{Attention|Замените '''XXXXXX''' на номер счетчика Данные в Яндекс Метрике!}}системе бронирования практически никогда полностью не совпадают с данными, учтенными в системах веб-аналитики. Системы веб-аналитики отображают приблизительную картину. Для точного учета продаж следует использовать отчеты системы бронирования.
Подробнее про метод reachGoal() можно узнать в ==См. также==* [http://yandex.ru/support/metrika/objects/reachgoal.xml документации Яндекс.Метрики[Модуль метрики]]
'