Отслеживание офлайновых действий с помощью 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:

Screen Shot 2013-07-11 at 3.05.24 PM

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

Screen Shot 2013-07-11 at 3.23.54 PM

Созданный пользовательский параметр можно использовать в пользовательском отчете:
Screen Shot 2013-07-11 at 3.50.13 PM

Как я уже упомянул, отдавать пользовательские определения можно с сервера (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)