четверг, 11 июля 2013 г.

Отслеживание офлайновых действий с помощью Universal Analytics

В этом посте я расскажу о том, как можно отслеживать офлайновые действия посетителей сайта в Universal Analytics и интегрировать данные из CRM со статистикой UA.

Забираем Client ID


Сценарий отслеживания офлайновой активности предполагает, что пользователь сначала обязательно посещает сайт и на нем выполняет действие, которое его как-либо идентифицирует. Причем необязательно, чтобы это была полноценная идентификация - подписка на рассылку с указанием адреса электронной почты или регистрация и т.д. Возможен вариант сбора лидов - например, когда пользователь вводит скидочный купон или просто кладет товар в корзину.

В момент, когда посетитель сайта выполняет подобное действие, мы забираем идентифицирующие данные и импортируем их в CRM-систему.

Какие данные забираются в этот момент. Забрать можно куку посетителя. Технически это возможно осуществить напрямую, что делают очень многие - забирают куку непосредственно из браузера. Однако в Universal Analytics системно предусмотрена возможность получить client ID с помощью джаваскриптной функции get('ClientId') в любой подходящий для владельца сайта момент. Наилучшим образом для этого подходит как раз идентификация пользователя на сайте.

Функция get('ClientId') выглядит следующим образом:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

Вызывается эта функция в момент, когда пользователь отправляет заполненную регистрационную форму, оформляет подписку - то есть идентифицирует себя тем или иным способом. В этом случае ClientId забирается вместе с данными отправленной формы. Таким образом зарегистрированный пользователь будет ассоциироваться внутри CRM с уникальным номером ClientId, для которого впоследствии можно будет отдавать в Аналитикс данные об офлайновых действиях пользователя.

Можно также вызывать get('ClientId') для реализации сценария сбора лидов - в момент, когда пользователь вводит номер скидочного купона или просто кладет товар в корзину. Во втором случае можно, например, формировать уникальный id корзины и забирать его вместе с ClientId.


Что дальше


После того, как ClientId и ассоциированные с ними идентифицирующие данные оказываются в CRM-системе, владелец бизнеса имеет возможность отследить офлайновые действия и вернуть их в виде, например, событий, обратно в Universal Analytics. Для кейса с корзиной выше можно отследить, забрал ли пользователь товар в магазине либо завершил ли он заказ по телефону. И потом для соответствующего ClientId можно будет данные действия отдать обратно в Аналитикс.

Measurement Protocol


Для передачи данных об офлайновых действиях пользователей разработан специальный протокол передачи измерений - Measurement Protocol. Полная документация на сайте Google Developers здесь.

Пример post-запроса с отправкой офлайн-события в Аналитикс по Measurement Protocol-у

POST /collect HTTP/1.1
Host: www.google-analytics.com

v=1                               // Version of GA protocol. Constant.
&tid=UA-XXXX-Y         // Property ID.
&cid=555                      // GA Client ID. Retrieved from tracking code.

&ni=1                                       // Non-interaction hit.
&t=event                                   // Event hit type.
&ec=ClientOfflineConv             // Event Category.
&ea=OnlineLead                      // Event Action.
&el=OpportunityRegistered      // Event label.
&ev=300                                   // Event value.

Где параметры tid и cid - номер счетчика (ресурса GA) и номер ClientId. Вторая часть описывает тип хита = событие (non-interaction, то есть без просмотра страницы) плюс стандартный набор параметров, описывающих событие (категория, действие и ярлык) и ценность события.

В соответствии с правилами Measurement Protocol данные должны быть сконфигурированы без комментариев и будут отправляться вот в таком виде:

v=1&tid=UA-XXXX-Y&cid=555&ni=1&t=event&ec=ClientOfflineConv&ea=OnlineLead&el=OpportunityRegistered&ev=300


Полный список рекомендованных параметров для других типов событий, которые можно импортировать в Аналитикс, доступен здесь (eng).

Для того, чтобы проверить правильность составленных параметров, можно использовать ссылку http://www.google-analytics.com/collect для имитации вызова сервера.

Полная ссылка для проверки параметров будет выглядеть так: http://www.google-analytics.com/collect?v=1&tid=UA-XXXX-Y&cid=555&ni=1&t=event&ec=ClientOfflineConv&ea=OnlineLead&el=OpportunityRegistered&ev=300

Где tid - номер существующего и работающего ресурса, cid - Id клиента. Остальные данные могут быть любыми в зависимости от того, какой хит тестируется. Для проверки нужно будет открыть новое окно или новую вкладку браузера, вставить в адресную строку эту ссылку и запустить ее. Google Analytics примет эти данные и их можно будет увидеть в интерфейсе. 


Пользовательские определения


Помимо событий в Analytics можно передавать из CRM и другие данные. Для того или иного клиента мы можем что-то знать в CRM, чего мы не знаем в Analytics. Например, в CRM для определенного клиента может храниться информация, что этот клиент - женщина, 1975 года рождения, постоянный покупатель (есть повторные покупки). Эти данные тоже можно передать в Analytics - аналогично событиям выше.

Важно! Перед тем, как что-то начать отдавать с сервера в Universal Analytics, необходимо создать пользовательский параметр или показатель в интерфейсе соответствующего ресурса. Для ресурса Universal Analytics доступны 20 пользовательских параметров (dimensions) и 20 пользовательских показателей (metrics). Пользовательские определения в Universal Analytics заменили пользовательские переменные (Custom Variables) стандартной версии GA.

Для примера с годом рождения необходимо будет в интерфейсе ресурса создать пользовательский параметр. Назовем этот параметр, например, Age:

Для созданного пользовательского параметра система рекомендует оформление вызовов в следующем синтаксисе:

Созданный пользовательский параметр можно использовать в пользовательском отчете:


Как я уже упомянул, отдавать пользовательские определения можно с сервера (CRM). В случае с параметром Age, если мы получили данные о возрасте клиента не через сайт, а, скажем, при оформлении клиентской карты в магазине, то можно отправить для соответствующего ClientId такие данные:

v=1&tid=UA-XXXX-Y&cid=555&ni=1&t=event&ec=OfflineRegistration&ea=submit&cd1=1975

То есть на хит (событие) по офлайновой регистрации дополнительно прибавляется пользовательский параметр (cd1) со значением "1975". К этому хиту можно добавлять и другие пользовательские параметры и показатели.

Если данные о возрасте посетитель вводил в форме на сайте (то есть в серверной имплементации нет необходимости), то пользовательский параметр с возрастом можно передать с помощью функции send непосредственно в коде сайта на отправку формы. На действие по отправке формы должен быть оформлен хит, например, pageview, а в dimension из формы должно подтянуться соответствующее значение:

ga('send', 'pageview', {
  'page': '/reg_form_submitted',
  'dimension1':  '1975'
});


Или можем оформить событие на клик по кнопке с отправкой формы:

ga('send', {
  'hitType': 'event',         
  'eventCategory': 'registration', 
  'eventAction': 'submit',     
 
  'dimension1':  '1975'

 });


Дисклеймер! Приведенные в посте фрагменты кода ориентировочны и могут отличаться в зависимости от поставленных задач и требований конкретной платформы. При разработке решений изучайте справочную информацию сайта Google Developers

Полезные ссылки:
Функция импорта Client ID (eng)
Техническое описание функции импорта офлайновой конверсии (eng)
Пользовательские параметры и показатели (eng)
Measurement Protocol. Руководство для разработчиков (eng)

6 комментариев:

  1. Очень интересная статья на тему настройки UA и отслежиания офлайновых конверсий от Александра Кузьмина, Webprofiters
    http://oborot.ru/article/603/12

    ОтветитьУдалить
  2. Станислав, спасибо за статью, сохранила много часов поиска )
    Единственное, столкнулся со сложностью:
    Когда отправляю в UA события с crm об оффлайн конверсии (сделка реализована), при попытке посмотреть какие страницы посещал пользователь (параметр Страница) с событием об успешной реализации сделки, UA показывает, что данных нет, в то время как количество просмотров страниц не равно 0

    При этом, если отправляю хит в пользовательский параметр (Статус сделки - Успешно реализована), в отчёте все ссылки страниц видны.

    Может сталкивались, как-то можно таки получить ссылки страниц в отчёте по событиям?

    ОтветитьУдалить
  3. Станислав, подскажите, пожалуйста, как забирать ClientID, если Universal Analytics на сайте подключен через Google Tag manager?

    ОтветитьУдалить
    Ответы
    1. как вариант через Custom HTML внутри тегов < script >
      ga(function(tracker) {
      dataLayer.push({'Client-ID': tracker.get('clientId')});
      });

      < /script >

      плотом обратиться к переменной через макрос из dataLayer

      Удалить
  4. Весьма подробное изложение - новичкам думаю очень пригодится

    ОтветитьУдалить