Для реализации различных задач, например — интеграции 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.