Что такое идентификатор клиента при отправке данных отслеживания в Google Analytics через протокол измерений?
Я хочу использовать новый протокол измерений Google для отправки событий отслеживания с моего сервера вместо JavaScript.
На этой странице указывается идентификатор клиента:
https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#required
И эта страница говорит, что она необязательна:
https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#visitor
Кроме того, формат, определенный в этих документах, отличается: первая страница дает целое число в качестве примера и просто говорит, что это "уникальное значение", а вторая ссылка указывает, что он должен быть UUID.
Если я отправлю либо идентификаторы пользователя, либо сгенерированные UUID на моем бэкэнд, как Google узнает, чтобы связать этого посетителя с существующей сессией посетителя? Похоже, мне нужно будет получить внутреннюю ссылку GA для существующего пользователя.
Любая помощь приветствуется - спасибо!
Ответы
Ответ 1
Целое или UUID
cid
является эквивалентом второго значения в cookie _utma
, когда вы используете отслеживание javascript. В отслеживании js это случайное целое число (сгенерированное Math.round(2147483647 * Math.random())
). Но он сохраняется и отправляется как строка: поэтому вы можете использовать оба формата (integer или UUID).
Обязательный/Дополнительно
При отслеживании js запрос, отправленный с отсутствующим идентификатором пользователя, игнорируется серверами Google Analytics. Предположим, что это необходимо.
Связать веб-посетителя с действиями протокола измерений
Если вы хотите связать своего бэкэнд-пользователя с посетителем, ранее отслеживаемым с помощью javascript Google Analytics ga.js
, вы можете получить значение cid
из файла cookie _utma
. Но я не рекомендую это; каждый раз, когда он изменяется (смена терминала или браузера, очистка файлов cookie и т.д.), вы потеряете связь с предыдущими действиями своего клиента.
Обновление
analytics.js
не существовало, когда задавался вопрос. cid
теперь сохраняется в файле cookie _ga
. Вы можете получить его в javascript с помощью:
ga(function(tracker) {
var clientId = tracker.get('clientId');
});
С учетом этого, когда вы получите clientId из трекера, как в приведенном выше коде, он не даст вам UUID, а два случайных 32-битных целых числа в формате "X.Y". Эта реализация может измениться в UUID в будущем.
Или установите его с вашим собственным значением (например, с помощью UUID с помощью backend):
ga('create', 'UA-XXXXX-Y', {'clientId': 'your_client_id'});
Ответ 2
В Rails:
def save_google_analytics_client_id
if current_user && cookies["_ga"]
client_id = cookies["_ga"].split(".").last(2).join(".")
if current_user.google_analytics_client_id != client_id
current_user.google_analytics_client_id = client_id
current_user.save
end
end
end
Ответ 3
Я использую node с модулем экспресс и универсальной аналитики и решил использовать cid, встроенный в cookie _ga, а не генерировать мою собственную сторону сервера cid.
my server.js выглядит так...
app.use(function(req, res, next) {
if(req.session && (!req.session.cid) && req.cookies._ga){
//Use the cid already embedded in the _ga cookie and save to session so I can access from socket routes
var gaSplit = req.cookies._ga.split('.');
req.session.cid = gaSplit[2] + "." + gaSplit[3];
};
next();
});
Затем позже я могу это сделать.
ua = require('universal-analytics')
var visitor = ua('UAXXX', req.session.cid)
НТН