Изменения

Перейти к навигации Перейти к поиску

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

16 930 байт добавлено, 13:19, 5 декабря 2019
Полный список событий
Для отслеживания событий, которые происходят в системе {{NameSystem}} [[Категория:Плагины]][[Категория:Статистика и передачи их в системы вебаналитики нужно разместить в разделе отчёты]]'''Управление сайтом → Настройка внешнего видаВеб-аналитика''' код, который будет отправлять данные о взаимодействии с элементами интерфейса— функция системы бронирования билетов онлайн {{NameSystemLink}} для отслеживания действий пользователя во время процесса поиска и бронирования авиабилетов.
пример для ==Описание==Для отслеживания действий пользователя во время процесса поиска и бронирования авиабилетов,в {{NameSystemLink}} используется система событий, позволяющая передавать данные в различные сервисы веб-аналитики,такие как '''Яндекс Метрики.Метрика''', '''Google Analytics''', а также обеспечивает возможность настроить передачу данных в любые другие сервисы.
{{Attention|Необходимо откорректировать этот код в соответствии с используемыми в вашей теме оформления классами элементов!}}==Принцип работы==
<syntaxhighlight lang="При совершении пользователем определённых действий, в системе вызываются специальные javascript" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"события на объекте <code>document</code>.В объект события также передаются дополнительные данные (если имеются), которые характеризуют действия пользователя.
$(document)Например, при смене типа маршрута на форме поиска, срабатывает событие <code>analytics.searchForm.tripType.ready(function () {value</code> var actions = [ { selector: '.frdи в объект события передаётся javascript-flights-carrierResults__buyButton'объект со свойством <code>value</code>, goal: содержащим тип выбранного маршрута ('buy_button' }, { selector: OW'.new-flights-passInfo__footer__button_buy', goal: 'book_button' }, { selector: RT''.new-flights-passInfo__checkPopup__buttons__nextили ', goal: 'book_continue_buttonCR' }, { selector: ').new-flights-passInfo__footer__button_buy', goal: 'pay_button' },== Отслеживание событий == { selector[[Файл: 'Идентификатор_цели.nemojpeg|thumb|300px|Идентификатор цели]] Для передачи информации в сервисы веб-flightsаналитики вызванные действиями пользователя javascript-results__summary__switch'события необходимо «отследить», goal: получить из них желаемую информацию и сделать соответствующие обращения к сервисам веб-аналитики. Пример достижения целей в сервисе 'search_change_open' }, { selector: 'Яндекс.new-flights-passInfo__footer__button_cancelМетрика', goal: 'book_cancel': } ];<source lang="javascript" style="width: 40%"> actions.map(function (action) { $(document).on('clickanalytics.checkout.booking.book', action.selector, function (event, data) { event.preventDefault if (typeof yaCounterXXXXXX !== 'undefined');{ yaCounterХХХХХХХХХХХХ yaCounterXXXXXX.reachGoal(action.goal'ИДЕНТИФИКАТОР_ЦЕЛИ_X'); return false; }); });
});
$(document).on('analytics.checkout.booking.buy', function (event, data) { if (typeof yaCounterXXXXXX !== 'undefined') { yaCounterXXXXXX.reachGoal('ИДЕНТИФИКАТОР_ЦЕЛИ_Y', data); }});</syntaxhighlightsource> Где ''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('analytics.checkout.booking.buy', function (event, data) { ga('send', { hitType: 'event', eventCategory: 'ПРОИЗВОЛЬНОЕ_НАЗВАНИЕ_КАТЕГОРИИ_Y', eventAction: 'ПРОИЗВОЛЬНОЕ_НАЗВАНИЕ_ДЕЙСТВИЯ_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('analytics.searchForm.tripType.value', function (event, data) { if (typeof yaCounterXXXXXX !== 'undefined') { yaCounterXXXXXXXX.reachGoal('идентификатор_цели_смены_типа_маршрута', 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'], googleScripts);}else { googleScripts($);}</source>
В массиве перечислены классы элементов, клик на который будет отправлять событие, указанное в goal.== Точность ==
{{Attention|Замените '''ХХХХХХХХХХХХ''' на номер счетчика Данные в Яндекс Метрике!}}системе бронирования практически никогда полностью не совпадают с данными, учтенными в системах веб-аналитики. Системы веб-аналитики отображают приблизительную картину. Для точного учета продаж следует использовать отчеты системы бронирования.
Далее в Яндекс Метрике создается цель типа Javascript-событие и для нее указывается соответствующее имя goal==См.также==* [[Модуль метрики]]

Навигация

'