Приклади використання customTask в Google Tag Manager

  1. Приклади використання customTask (короткий огляд)
  2. Об'єднання декількох рішень в один customTask
Матеріал заснований на статті Simo Ahava «CustomTask - The Guide» .

Приблизно рік тому (у 2017) відбулося оновлення JS бібліотеки Universal Analytics. Оновлення принесло з собою таку чудову штуку як customTask. Дана фіча, в рамках Google Tag Manager, дозволяє виконувати будь-які «завдання» до відправки хіта в Google Analytics.

В оригінальної статті Simo Ahava докладно / с картинками описує механізм роботи customTask і ділиться корисними прикладами. Також можна ознайомитися з офіційним мануалом по бібліотеці Universal Analytics, де дано опис всіх ТАСК до черговості їх виконання.

Порядок виконання завдань analytics
Порядок виконання завдань analytics.js

Нижче представлений короткий огляд прикладів використання customTask. Упевнений, деякі рішення вам точно знадобляться.

Приклади використання customTask (короткий огляд)

1. Запис Client ID в custom dimension

Найнадійніший спосіб передачі Client ID на поточний момент. Мануали по налаштуванню:

2. Дублювання хіта GA і відправка його в інші місця

мануали:

  • Відправлення в кілька GA property , Автор Simo Ahava.
    Гарна ідея для оптимізації тегів в GTM (не потрібно створювати додаткових тегів для відправки даних в кілька акаунтів). Єдиний мінус - якщо в тезі налаштоване междоменной відстеження (cross-domains tracking), то дубльований хіт піде без цих налаштувань (тільки оригінальний хіт збереже налаштування тега).
  • Відправлення в Google Sheet , Автор dkomarovskiy.
    Вивантаження всіх даних хіта (payload) в Google Sheet. Корисно при дебаге і аналізі даних (якщо проект невеликий).
  • Відправлення в Google Bigquery (Note! Тут використовується таск sendHitTask тобто одночасно використовувати customTask і sendHitTask не можна; можна переписати код з sendHitTask в customTask - тоді все ок), автор Dmitri Ilin.
    Крутий мануал якщо необхідно повністю позбутися від семплірованія і обмежень GA.
  • Відправлення в Snowplow , Автор Simo Ahava.
    Snowplow - сервіс, який дозволяє створити / організувати свій власний пайплайн для роботи з даними в т.ч. веб аналітики. В сервіс включені всі процеси: починаючи зі збору / обробки даних до їх зберігання і аналізу тобто можете самі зробити свій GA з блекджек і зведеними таблицями.

3. Видалення персональних даних з GA payload (GDRP *)

мануал від Simo Ahava.

Стати в нагоді в першу чергу тим, хто працює з країнами Євросоюзу і зіткнувся з виконанням вимог GDRP . Дане рішення дозволяє прибрати всі персональні дані з payload'a (де-б вони не знаходилися: URL, Custom Dimension, Event Label, etc.).

Наприклад page path:

/test?tel=+44012345678&[email protected]&[email protected]&firstName=brian&password=hello

після модифікації customTask буде таким:

/ Test? Tel = [REDACTED TELEPHONE] & email = b [REDACTED EMAIL] om & other = bcli [REDACTED SELF-EMAIL] OMAIN.com & firstName = [REDACTED NAME] & password = [REDACTED PASSWORD]

4. Трекинг офлайн користувачів

мануал від Simo Ahava.

Вирішує проблему розірваного з'єднання тобто наприклад, коли конект обривається, то відправка хіта не закінчується помилкою (тому що немає Конект), а закріплюється в черзі в localStorage. Коли конект відновлюється - хіт відправляється. Корисно проектам з високою часткою аудиторії з мобільного трафіку з нестабільним Конект (часто їздять в метро наприклад).

5. Облік призначеного для користувача згоди на відправку даних в GA (GDRP *)

мануал від Simo Ahava.

Стати в нагоді при виконанні вимог GDRP . Наприклад у вас на сайті є поп-ап, в якому користувач погоджується / не погоджується на обробку своїх персональних даних 3-ми особами. При відмові, даний customTask не відправить дані в GA і DoubleClick.

6. Відправка ID експерименту Google Optimize в GA

мануал від Simo Ahava.

Допомагає з проблемою відображення даних Google Optimize в GA. Під час експерименту користувачеві присвоюються змінні Experiment Name і Experiment ID. Прив'язати ці дані до конкретних сесій / сегментам - проблема, з якою допомагає впоратися даний customTask. Таск перевіряє Page View тег, якщо він містить дані про експеримент - записує їх в custom dimensions і відправляє хіт.

7. Auto Link Domains у вигляді регулярного виразу

мануал від Simo Ahava.

Вирішує проблему неможливості використовувати регулярні вирази в полі Auto Link Domains при налаштуванні междоменной трекінгу.

Об'єднання декількох рішень в один customTask

Якщо ви захотіли об'єднати кілька рішень в одному customTask, то необхідно пам'ятати наступні правила роботи з customTask:

  • У GTM тезі можна визначити тільки один customTask
  • В JS коді customTask'a, параметр model визначається один раз і, відповідно, атрибут sendHitTask також відправляється один раз. Якщо відправити кілька (в рамках одного тега) - дійде тільки один (останній).

Приклад об'єднання декількох рішень в один customTask

Що об'єднуємо:

  • визначення Client ID в custom dimension
  • видалення персональних даних (PII) з payload
  • відправка хіта в кілька GA property

function () {var newTrackingId = 'UA-12345678-1'; return function (model) {// Define client ID model.set ( 'dimension1', model.get ( 'clientId')); // Add the PII patterns into this array as objects var piiRegex = [{name: 'EMAIL', regex: /(?<=emailAddress=|email=).+(?=@)/gi}]; var globalSendTaskName = '_' + model.get ( 'trackingId') + '_sendHitTask'; // Fetch reference to the original sendHitTask var originalSendTask = window [globalSendTaskName] = window [globalSendTaskName] || model.get ( 'sendHitTask'); var i, hitPayload, parts, val, oldTrackingId; model.set ( 'sendHitTask', function (sendModel) {// Overwrite sendHitTask with PII purger hitPayload = sendModel.get ( 'hitPayload'). split ( '&'); for (i = 0; i <hitPayload.length; i ++) {parts = hitPayload [i] .split ( '='); // Double-decode, to account for web server encode + analytics.js encode val = decodeURIComponent (decodeURIComponent (parts [1])); piiRegex.forEach (function (pii) {val = val.replace (pii.regex, '[REDACTED' + pii.name + ']');}); parts [1] = encodeURIComponent (val); hitPayload [i] = parts. join ( '=');} sendModel.set ( 'hitPayload', hitPayload.join ( '&'), true); originalSendTask (sendModel); // Rewrite the tracking ID hitPayload = sendModel.get ( 'hitPayload'); oldTrackingId = new RegExp (sendModel.get ( 'trackingId'), 'gi'); sendModel.set ( 'hitPayload', hitPayload.replace (oldTrackingId, newTrackingId), true); originalSendTask (sendModel);}); }; }

Спочатку визначаємо Client ID. Потім, через регулярні вирази, вказуємо які персональні дані ми хочемо шукати. В даному прикладі заданий тільки один параметр - email. Можна додати більше (див. мануал Simo Ahava ).
Наступний крок - перевіряємо payload на наявність персональних даних і Перезаписуємо його. Останні кроки - відправка модифікованого payload в оригінальний GA property і дублювання / відправка в інший GA property.

Якщо у вас є ще приклади використання customTask - поділіться досвідом. Буду радий доповнити статтю.

Дополнительная информация

rss
Карта