Google Analytics — обходим семплирование и собираем сырые данные / Хабр

Зачем это всё?

  • Избавляемся от семплирования при построении отчетов.
  • Теперь нет ограничений на кастомные поля: что нужно отправляйте/получайте/взаимодействуйте.
  • Можно использовать эти данные, как условия для триггеров: просмотры страниц, совершение действия. Сопоставляем с имейлом и отправляем письма/пуши.
  • Для системы рекомендаций: также интересуются/покупают.
  • Анализируйте поведение пользователей: как они ходят по вашему сайту, в разрезе каждой сессии и вообще, за все время!
  • Анализируйте источники трафика, смотрите последовательности, каналы, которые ведут к конверсиям.
  • Отслеживайте мошенников в CPA-сетях. Тут вы увидите внезапные переходы, например, когда человек просто учит новые Слова в тренажере, а страница перезагружается и проставляются партнерские куки.
  • И сказка для маркетологов — кастомные списки ремаркетинга. Выделяете сегмент по поведению, выгружайте cid и отправляйте в GA.

Как ga собирает данные — техническая сторона

Вы добавляете код, который предоставляет вам GA, или создаете тег через Google Tag Manager.

Когда этот код срабатывает в браузере пользователя, создается объект ga с трекером. Далее через этот трекер фиксируется взаимодействие — просмотр страницы.Фиксируется взаимодействие, значит отправляется информация на сервер Google Analytics используя Measurement Protocol.

Если максимально упростить: информация на сервер GA передается через GET-запрос формата:

Как строятся отчеты в google analytics


Чтобы отобразить отчеты в интерфейсе Google Analytics (далее GA), происходит следующее: сбор данных, обработка данных, формирование отчета.

Сбор данныхПо протоколу Measurement Protocol GA собирает информацию о всех взаимодействиях: просмотры страниц, пользовательские события, транзакции.

Обработка информацииНа основании полученной информации о взаимодействиях (просмотры страниц, другие события) GA:

Дополнительный анализ:  ООО "ЭНЕРГО-АНАЛИТИКА" Ивановская Область реквизиты компании: контакты, адрес, телефон ООО "ЭНЕРГО-АНАЛИТИКА", отзывы, вакансии, директор, финансы • Каталог компаний России. База данных ЕГРЮЛ

Формирование отчета


Когда вы открываете отчет через веб-интерфейс GA или по API, в зависимости от выбранного отчета, система достает данные из хранилища и возвращает информацию.

Как это сделать

Выберите вариант, через который у вас подключен счетчик Google Analytics:

Analytics.js

Стандартный код установки analytics.js имеет вид:

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXXXXXX-X', 'auto');
		
ga('send', 'pageview');
</script>

Дорабатываем задание customTask, в итоге получается:

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXXXXXX-X', 'auto');
	
// определяем customTask
ga('set', 'customTask', function(tracker) {
  // Сохраняем стандартную функцию sendHitTask.
  var originalSendHitTask = tracker.get('sendHitTask');
  
  // Вносим изменения в функцию sendHitTask
  tracker.set('sendHitTask', function(model) {
	// отправляем стандартный запрос на  www.google-analytics.com/collect
	originalSendHitTask(model); 
  
       // создаем новый запрос для отправки в своё хранилище
	var custom_tracking_url = 'ССЫЛКА НА ВАШ ПРИНИМАЮЩИЙ СКРИПТ',
	    hitPayLoad = '?'   model.get('hitPayload'),
	    user_agent = '&user_agent='  encodeURIComponent(navigator.userAgent),
           referrer = '&referrer=' encodeURIComponent(document.referrer);
		
	var final_tracking_url = custom_tracking_url   hitPayLoad   user_agent   referrer
		document.createElement("img").src = final_tracking_url;
   });
});

	
ga('send', 'pageview');
</script>

В итоге получается, что мы добавили новую задачу в трекер Google Analytics и при каждом взаимодействии информация будет отправляться не только в Google Analytics, но и на вашу точку входа.

Настройка хранилища


Для простоты я в качестве хранилища возьму Таблицы Гугл. Конечно, для большого количества данных это вообще не вариант. Но мы тут с технологией знакомимся, поэтому для примера подойдет.

Создаем таблицу, задаем имена колонкам. Имена должны соответствовать названию параметров из Query String, которые будет отправлять трекер Google Analytics:

Открываем редактирование скриптов:

Добавляем скрипт, который при каждом GET-запросе будет парсить Query String и добавлять значения в таблицу:

function doGet(e) {
    record_data(e);
}

var SCRIPT_PROP = PropertiesService.getScriptProperties();

function setup() {
    var doc = SpreadsheetApp.getActiveSpreadsheet();
    SCRIPT_PROP.setProperty("key", doc.getId());
}

function record_data(e) {
  try {
    var doc     = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));
    var sheet   = doc.getSheetByName('Sheet1'); // select the responses sheet
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
    var nextRow = sheet.getLastRow() 1; // get next row
    var row     = [ new Date() ]; // first element in the row should always be a timestamp
    // loop through the header columns
    for (var i = 1; i < headers.length; i  ) { // start at 1 to avoid Timestamp column
      if(headers[i].length > 0) {
        if(!e.parameter[headers[i]]) {
          e.parameter[headers[i]] = '';
        }
        row.push(e.parameter[headers[i]]); // add data to row
      }
    }
    sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
  }
  catch(error) {
    Logger.log(e);
  }
  finally {
    return;
  }

}

Запускаем функцию setup() и даем доступы на выполнение скрипта:

Дополнительный анализ:  Социальные сети в России: цифры и тренды, осень 2020 | Блог Brand Analуtics - все о бренд мониторинге и социальной аналитике

В опции “Who has access to the app” выбираем “Anyone, even anonymous”.

В итоге вы получите ссылку вашего Web App:

Скопируйте ссылку и перенесите ее в скрипт CustomTask, в переменную custom_tracking_url.

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

Посмотрите как это работает в реалтайме:

  1. Откройте таблицу.
  2. Откройте тестовый сайт.
  3. Походите по сайту следите за обновлениями в таблице.

Не все данные

Так как некоторые данные (например, IP-адрес) прилетают не через гет параметр, а в заголовках запроса можно их парсить на стороне принимающего скрипта.

С source / medium — тоже можно поработать, достать его из Pageurl и раскидать по разным колонкам.

На этом останавливаться не будем, думаю, что мысль понятна.

Собираем сырые данные

Мы уже разобрались, как GA отправляет себе данные. Было бы здорово дублировать эти данные и сохранять их себе в хранилище.

Написать парсер, который будет собирать все параметры, которые собирает Google Analytics, подключить ко всем событиям… Нет, никаких велосипедов!

Прежде чем отправить информацию, скрипт GA выполняет серию заданий. Как раз отправка информации на сервер — это одно из заданий. И к нашей радости, эти задания можно модифицировать — отправлять данные не только в Google, но и на произвольный URL.

Оцените статью
Аналитик-эксперт
Добавить комментарий

Adblock
detector