web-dev-qa-db-fra.com

Quel est l'ID client lors de l'envoi de données de suivi à Google Analytics via le protocole de mesure?

Je souhaite utiliser le nouveau protocole de mesure de Google pour envoyer des événements de suivi depuis mon serveur au lieu de JavaScript.

Cette page indique que l'ID client est requis: https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#required

Et cette page dit que c'est facultatif: https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#visitor

De plus, le format défini dans ces documents est différent - la première page donne un entier à titre d'exemple et dit simplement que c'est "une valeur unique" tandis que le deuxième lien dit que ce devrait être un UUID.

Si j'envoie des ID utilisateur ou des UUID générés sur mon backend, comment Google saura-t-il lier ce visiteur à une session de visiteur existante? Il semble que j'aurais besoin de récupérer la référence interne de GA à un utilisateur existant.

Toute aide est la bienvenue, merci!

55
Alan Illing

Entier ou UUID

Le cid est l'équivalent de la deuxième valeur du cookie _utma Lorsque vous utilisez le suivi javascript. Dans le suivi js, il s'agit d'un entier aléatoire (généré par Math.round(2147483647 * Math.random())). Mais il est stocké et envoyé sous forme de chaîne: vous pouvez donc utiliser les deux formats (entier ou UUID).

Obligatoire/Facultatif

Avec le suivi js, une demande envoyée avec un ID utilisateur manquant est ignorée par les serveurs Analytics. Supposons donc que cela soit nécessaire.

Lier le visiteur Web aux actions du protocole de mesure

Si vous souhaitez associer votre utilisateur principal à un visiteur précédemment suivi avec javascript Analytics ga.js, Vous pouvez obtenir la valeur cid à partir du cookie _utma. Mais je ne le recommande pas; à chaque changement (changement de terminal ou de navigateur, nettoyage des cookies, etc.), vous perdrez le lien avec les actions précédentes de votre client.

Mise à jour

Le analytics.js N'existait pas lorsque la question a été posée. cid est maintenant stocké dans le cookie _ga. Vous pouvez l'obtenir en javascript avec:

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

Au moment d'écrire ces lignes, lorsque vous obtenez le clientId du tracker comme dans le code ci-dessus, il ne vous donnera pas un UUID mais deux entiers 32 bits aléatoires au format "X.Y". Cette implémentation peut changer en UUID à l'avenir.

Ou définissez-le avec votre propre valeur (comme un UUID généré par le backend):

ga('create', 'UA-XXXXX-Y', {'clientId': 'your_client_id'});
53
greg

Dans 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
6
Jason

J'utilise node avec un module d'analyse express et universel et j'ai choisi d'utiliser le cid intégré dans le cookie _ga plutôt que de générer mon propre côté serveur cid.

mon server.js ressemble à ceci ...

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();
});  

Plus tard, je peux le faire ..

ua = require('universal-analytics')
var visitor = ua('UAXXX', req.session.cid)

HTH

3
Michael Dausmann