customTask. Руководство по кастомизации заданий

Задания — расширенный способ работы с обращениями (хитами). Они помогают создавать, проверять и отправлять запросы на серверы Analytics. Например, samplerTask сделает выборку посетителей, а checkProtocolTask прервет выполнение запроса. Задания помогают получить глубокое представление о взаимодействии посетителей с сайтом. Гугл заранее определил роль каждого задания, и до недавнего времени было невозможно вмешаться в их работу.

В 2017 году Гугл разрешил изменять ход работы заданий. Стало возможным изменять структуру и порядок обработки данных: зашифровывать персональные данные посетителей, отслеживать офлайн-посетителей, фильтровать отчеты от лишней информации. Такой способ работы с заданиями закрепился под названием customTask.

Информации по работе с customTask мало. Мы перевели и адаптировали статью Симо Ахавы customTask — The Guide, в которой он собрал наиболее интересные способы кастомизации заданий.

 

Как customTask взаимодействует с заданиями

Когда на сайте или через GTM выполняется команда ga(‘send’, ‘pageview’), analytics.js отправляет http-запрос на серверы Гугла. Конечная точка, куда попадают обращения — междоменное отслеживание.

Отправка в Analytics включает два этапа: полезную нагрузку и транспортировку. Полезная нагрузка — отправляемая информация, а транспортировка — это куда и как она отправляется. За отправку обращений отвечает протокол передачи статистических данных (Measurement Protocol), который лежит в основе всех отслеживающих механизмов Analytics. Список 10 стандартных заданий, которые обрабатываются протоколом:

Задания перечислены в порядке выполнения.  © Google

customTask — изначально пустая функция, поэтому ее нет в справке Гугла. customTask имеет приоритет над остальными заданиями: код и логику функции определяете вы, а не Гугл. Имя функции может быть произвольным, но Симо Ахава — специалист по работе с GTM — популизировал название customTask.

Каждое задание в качестве параметра получает объект «Модель». Этот объект включает все поля в счетчике отслеживания и любые внесенные изменения в работу заданий. customTask также работает с «моделью», поэтому вы сможете управлять поведением заданий. Реализовать работу customTask можно двумя методами: get и set.

© Google

Метод get позволяет получать доступ к стандартным заданиям и их информации. Метод set — заменять стандартные задания собственными функциями или же добавить функции, которые нужно выполнить до или после существующего задания.

Вот как запустить Analytics в расширении Хрома с помощью customTask:

А вот как передать идентификатор трекера UA-XXXXXX-Y в пользовательский отчет под нужным индексом:

customTask — пользовательская функция. Если она определена, то запустится раньше и даст доступ к последовательности выполнения заданий. Если она не определена, стандартные задания сработают без нее.

Примечание: в Analytics отчеты состоят из «Стандартных параметров и показателей» и «Специальных параметров и показателей». Стандартные параметры определены Гуглом, а специальные — вами. Для простоты специальные параметры будем называть «пользовательскими». Подробнее про спец. параметры можно прочитать в статье про «GTM. Как работать с параметрами, которых нет в Google API».

Посмотрим на список того, что можно сделать с помощью customTask.
 

Отправить идентификатор клиента в пользовательский параметр

В этом примере мы получаем идентификатор клиента из объекта модели и отправляем его в качестве пользовательского параметра. Для этого в пользовательском параметре в Analytics укажем название поля и значение.

Field name — название поля, Value — значение. В названии поля укажите customTask, в значении — название пользовательской переменной Джаваскрипт. © Simo Ahava

В коде переменной мы присвоили идентификатору клиента пользовательскую переменную под индексом 5. Значение идентификатора мы получили методом get из объекта модели. Этим способом мы получили идентификатор клиента из счетчика и отправили его в пользовательский параметр:

 

Скопировать тег в несколько параметров

Здесь мы переопределяем несколько параметров и изменяем последовательность обработки заданий. Это полезно, если мы хотим распределить информацию между несколькими параметрам. Обращение отправляется, затем данные копируются в новый идентификатор и попадают в Analytics.

Укажите во всех Analytics-тегах, которые хотите продублировать:
Название поля: customTask
Значение: {{JS — customTask hit duplicator}}

{{JS — customTask hit duplicator}} — пользовательская переменная:

 

Отслеживать офлайн-пользователей в Analytics

Об этом читайте в статье про работу с офлайн-пользователями в Analytics.
 

Удалять персональные данные посетителей

Гугл запрещает передавать на свои сервера персональные данные пользователей: номера мобильных телефонов, адреса электронной почты и т. д. Обезличим данные с помощью customTask — напишем переменную для GTM:

В начале кода 2 параметра: name и regex.

Name — это тип личных данных, которые нужно обезличить. Если в значении параметра указан «EMAIL», в отчете Analytics мы увидим «Удалено EMAIL».

Regex — это параметр, который помогает редактировать любые данные пользователей при помощи регулярных выражений. Вы можете создавать и добавлять собственные регулярные выражения. В нашем шаблон такой:

/.{4}@.{4}/g — значок @, а также 4 символа слева и справа от него будут заменены на «Удалено EMAIL». Почта agency@adventum.ru после обработки будет выглядеть так:

Добавим переменную в Analytics. © Simo Ahava

 

Не дать выборке испортить отчет

На примере отчета «Скорость загрузки сайта». Чтобы выявить неоптимизированные страницы на сайте, Analytics может собирать показатели скорости загрузки страниц у посетителей.

Данные представлены в отчете «Скорость загрузки сайта» (Отчеты > Поведение > Скорость загрузки сайта). © Simo Ahava

Проблема в том, что к этой метрике могут быть примешаны прочие пользовательские параметры — это портит статистику. Решение — прибегнуть к customTask. Если конкретное обращение имеет отношение к метрике скорости загрузки, пользовательские параметры не отправятся вместе с обращением. Решение можно реализовать в analytics.js, либо в GTM.

Вот как выглядит analytics.js прежде, чем мы внесем изменения:

Код создаст счетчик, установит пользовательский параметр и отправит обращение с пользовательским показателем. Поскольку выборка составляет 100%, за просмотрами сразу последуют пользовательские параметры.

Здесь мы видим, что скорость загрузки (timing) имеет тот же параметр (cd1), что и просмотр страницы. © Simo Ahava

Напишем код, который удалит все пользовательские параметры и показатели из обращения:

В GTMе это тоже можно исправить:

Затем добавляем код в тег:

© Simo Ahava

Готово.Какой метод мы бы ни выбрали — через analytics.js или GTM, — мы удалим пользовательские параметры из сгенерированного обращения и получим чистую статистику.
 

Передать результаты экспериментов в Analytics

Google Optimize помогает тестировать варианты страниц, которые лучше справляются с задачей. Вы задаете задачу и запускаете эксперимент, а Optimize через время укажет на лучший вариант страницы. Сейчас доступны три вида эксперимента:

Эксперимент А/Б. У вас есть оригинальная страница A и видоизмененная страница Б. Страница Б как-то отличается от А: цветом кнопки, заголовком, фоном. Каждый вариант страницы показывается посетителям с одинаковой периодичностью, поэтому результаты тестирования независимы от внешних факторов. Можно сузить эксперимент до определенной аудитории при помощи таргетинга. В исходной странице картинка синяя, в тестируемой — красная:

Эксперимент с переадресацией. Это разновидность эксперимента А/Б, которая позволяет протестировать страницы против друг друга. В эксперименте с переадресацией варианты страницы отличаются URLом: это помогает протестировать два варианта страницы с полностью переделанным дизайном:

Страницы могут отличаться:
— ссылкой: example.com/landing1 и example.com/landing2
— субдоменом: example.com и new.example.com

Многовариантный эксперимент. Это тестирование подойдет для тестирования нескольких элеменентов на странице. Вместо того чтобы показать оптимальную страницу, эксперимент отберет самые удачные элементы из каждого варианта и проанализирует взаимодействие между ними:

В примере две секции — заголовок и картинка. У нас 2 типа заголовков и 3 типа картинок, суммарно 6 возможных комбинаций. © Google

В Optimize сложно создать экспериментальные сегменты для сессий. Analytics никак не сообщает, когда посетитель участвует в эксперименте. Имя и идентификатор эксперимента имеют область «Пользователь»: если посетитель примет участие в эксперименте, все обращения и сеансы пометятся именем и идентификатором эксперимента.

Но нам нужны только сеансы, в которых посетители видят экспериментальный контент: они помогут создать сегменты, в которых можно увидеть конверсионные цели. Мы быстрее поймем, как посетители реагируют на изменения в контенте в течение сессии.

Когда посетитель попадает на страницу с экспериментом, к его обращениям добавится параметр &exp;. Этот параметр содержит идентификаторы экспериментов и тестовых вариантов страницы:

Пока эксперимент не закончится, идентификатор клиента будет ассоциироваться с этими идентификаторами эксперимента. © Simo Ahava

Нужно, чтобы customTask проверял запросы и связывал эксперимент с любым пользовательским показателем. Код для analytics.js:

Код проверяет все обращения, отправленные со стандартного трекера. Если в обращений содержится параметр &exp; то идентификатор эксперимента добавится вместе с пользовательским параметром к обращению:

Страницы, не вовлеченные в эксперимент, не передадут обращения или пользовательские параметры. © Simo Ahava

В GTM создаем переменную {{JS — customTask — Optimize experiment}} с таким кодом:

Затем идем в Optimize и указываем поле и значение:

© Simo Ahava

 

Совмещаем несколько customTaskов

Можно совмещать несколько функций в одном customTask, например обезличить персональные данные и отправить их в несколько отчетов. Чтобы правильно это реализовать, нужно помнить про ограничения Джаваскрипта:

1) Каждому тегу можно присвоить только один customTask.
2) Можно использовать только один параметр на тег, например, один аттрибут sendHitTask для одного тега.

Пример ошибочного совмещения:

Это не сработает: у нас два sendHitTask. Бессмысленно в начале передавать данные Гуглу, а затем пытаться их обезличить: «дублирование» перезапишет собой «обезличивание».

Нужно несколько способов в одном sendHitTask. Здесь нет строгого рецепта, поэтому придется внимательно смотреть на код. Правильный код выглядит так:

 

Что запомнить

customTask работает с GTM и Analyitcs и позволяет изменять поведение тегов и последовательность обработки заданий.

customTask работает с помощью двух методов — get и set.

Успех внедрения зависит от ваших знаний в Джаваскрипте: чем лучше вы понимаете логику кода, тем проще вам добиться релевантной статистики. Это делает его сильнейшей фишкой, выпущенной Гуглом в последнее время.

Статьи по теме:
Справка по полям analytics.js — перечислены все настраиваемые поля в Analytics.

Справка по очереди команд ga — о том, как правильно вызывать очереди команд.

Работа с протоколом передачи статистических данных — как подготавливаются запросы к отправке.

 

Адаптация статьи Симо Ахавы customTask — The Guide.
Автор англоязычных примеров и кода — Симо Ахава.