Метка: php

4 способа получить cid (Client ID) пользователя Google Analytics

Для реализации различных задач, например — интеграции CRM и Google Analytics, трекинга открытия писем, отслеживания действий пользователя в офлайне нужен ClientID (cid) клиента.

По сути — это уникальный идентификатор пользователя (не человека, а связки компьютер-браузер), который выступает ключом в записи всех данных о посещениях сайта. И если мы хотим передавать какие-то данные в Google Analytics из вне сайта, и чтобы эти данные были связаны с посещениями пользователя, нам нужно знать этот ключ.
1 способ — на сайте установлен код Universal Analytics
Если на сайте есть только код Universal Analytics, то вызвав следующий код, в javascript переменной clientId окажется нужное нам значение:

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

2 способ, берем код на серверной стороне с помощью PHP

function gaParseCookie()
    {
        if (isset($_COOKIE['_ga'])) {
            $data = explode('.', $_COOKIE["_ga"]);
            list($version, $domainDepth, $cid1, $cid2) = $data;
            $contents = array('version' => $version, 'domainDepth' => $domainDepth, 'cid' => $cid1 . '.' . $cid2);
            $cid = $contents['cid'];
        }
        else {
            $cid sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
                // 32 bits for "time_low"
                mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
                // 16 bits for "time_mid"
                mt_rand( 0, 0xffff ),
                // 16 bits for "time_hi_and_version",
                // four most significant bits holds version number 4
                mt_rand( 0, 0x0fff ) | 0x4000,
                // 16 bits, 8 bits for "clk_seq_hi_res",
                // 8 bits for "clk_seq_low",
                // two most significant bits holds zero and one for variant DCE1.1
                mt_rand( 0, 0x3fff ) | 0x8000,
                // 48 bits for "node"
                mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
            );
        }
        return $cid;
    }

3 способ, когда мы берем cid с помощью JavaScript

function()
{
    var match = document.cookie.match('(?:^|;)\\s*_ga=([^;]*)');
    var raw = (match) ? decodeURIComponent(match[1]) : null;
if (raw)
{
match = raw.match(/(\d+\.\d+)$/);
}
var gacid = (match) ? match[1] : null;
if (gacid)
{
    return gacid;
}
}

4 способ, если мы используем Google Tag Manager
Во-первых, создаем новую переменную — ga cookie:

Во-вторых, создаем переменную типа Custom HTML — cid и пишем в неё:

function() {
  try {
    var cookie = {{ga cookie}}.split(".");
    return cookie[2] + "." + cookie[3];
  } catch(e) {
    console.log("No Universal Analytics cookie found");
    return "n/a";
  }
}

И далее, где нам это необходимо используем её {{cid}}, в ней будет хранится Client ID.