web-dev-qa-db-fra.com

google analytics - plusieurs trackers sur une page (conflit de cookies)

J'écris une application Web qui est censée être intégrée aux sites Web d'autres personnes (une sorte de widget). J'utilise Google Analytics pour suivre toutes les personnes qui visitent toutes les instances de mon script sur les sites Web d'intégration. Le problème est que je ne sais pas comment l'utiliser pour qu'il n'interfère pas avec les propres comptes Google Analytics de ces sites Web. Je stocke la variable de suivi dans un espace de noms, donc j'ai pensé que cela devrait le faire, mais je n'ai pas réalisé que GA stocke ses paramètres dans des cookies (__utma, __utmz etc.), et ces cookies sont utilisés par les deux trackers, s'il y en a deux sur la même page ... Donc, par exemple, si j'utilise _setVar pour stocker une sorte de variable définie par l'utilisateur dans Google Analytics, et que le site d'intégration fait de même, nous écraser les valeurs des autres ...

Bien sûr, il serait plus facile si Google fournissait un moyen de changer le nom des cookies en un nom personnalisé, mais je ne trouve aucun moyen de le faire. J'ai pensé à utiliser le domaine ou le chemin du cookie pour forcer un cookie séparé, mais cela ne fonctionne pas, car si je définit un domaine ou un chemin autre que le vrai domaine/chemin, le cookie n'est pas lisible pour la page après le rechargement. ..

Est-ce que quelqu'un connaît un moyen d'avoir deux trackers sur une seule page et de leur faire utiliser des cookies séparés afin qu'ils n'écrasent pas les paramètres de l'autre?

Ou, si c'est complètement impossible - existe-t-il un autre service d'analyse avec des fonctionnalités similaires à GA dans lequel cela est possible? (Il devrait avoir des fonctionnalités avancées comme le suivi des événements et des campagnes ...)

55
Kuba Suder

Maintenant simplifié avec le nouveau code de suivi asynchrone. :)

https://developers.google.com/analytics/devguides/collection/gajs/#MultipleCommands

56
Paul Thompson

Vous pouvez installer plusieurs instances du code de suivi Google Analytics sur vos pages Web pour envoyer des données à plusieurs propriétés de votre compte. https://support.google.com/analytics/answer/1032400?hl=en

Ou vous pouvez faire preuve de créativité et faire ce qui suit selon les instructions de Google. https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#multipletrackers

<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','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXX-Y', 'auto');
  ga('create', 'UA-XXXX-Y', 'auto', {'name': 'newTracker'});
  ga('send', 'pageview');
  ga('newTracker.send', 'pageview');

</script>
18
MyWebsiteSpot

Ne pas avoir à utiliser des noms de cookies différents car Google Analytics fonctionne avec plaisir avec plusieurs trackers sur la même page. Voir les réponses à la question Google Analytics - Plusieurs trackers pour plusieurs comptes?.

Mise à jour

Il s'avère que l'utilisation de plusieurs trackers est une méthode de travail mais a quelques pièges . L'un d'eux, c'est-à-dire que vous ne pouvez pas appliquer une segmentation utilisateur différente pour chacun d'eux. John Henson montre une solution de contournement qui contraint GA pour utiliser différents cookies , peut-être devriez-vous le vérifier.

10
Török Gábor

Si quelqu'un a toujours ce problème et souhaite un collage facile, mon problème était d'utiliser mon propre suivi Google pour mon code qui était ajouté aux pages d'autres personnes qui pourraient également utiliser le suivi Google. J'ai testé cela et je confirme qu'il fonctionne comme prévu:

var _gaq = _gaq || [];

_gaq.Push(['some_unique_name._setAccount', 'UA-xxxxxxxx-1']);
_gaq.Push(['some_unique_name._trackPageview']);

(function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

J'utilise aussi des événements

_gaq.Push(['some_unique_name._trackEvent', 'Event Category', 'Event Action', 'Event Label']);

Si quelqu'un y voit un problème, faites-le moi savoir.

8
Miles Lukas

Il semble que Google déconseille cette pratique:

L'installation de plusieurs instances du code de suivi Google Analytics sur une seule page Web n'est pas une implémentation prise en charge. Nous vous suggérons de supprimer toutes les instances sauf une et de vous assurer que le code du profil correct est installé sur chaque page que vous souhaitez suivre.

https://support.google.com/analytics/bin/answer.py?hl=en-GB&answer=10324

3
Vince

Selon la documentation répertoriée par Török, il semble que la bonne réponse consiste à utiliser _ setCookiePath . Cela fait que chaque tracker utilise des cookies complètement différents.

Exemple de code du site Web:

<script type=”text/javascript”>
    var pageTracker = _gat._getTracker(”UA-11111-1″);

    pageTracker._setDomainName(’domain.com’);

    pageTracker._setCookiePath(’/subdirectory/’);
    pageTracker._trackPageview();

    var otherTracker = _gat._getTracker(”UA-22222-1″);
    otherTracker._setDomainName(’domain.com’);
    otherTracker._trackPageview();
</script>

Lorsque vous liez d'un domaine à un autre, chaque lien qui publie sur l'autre domaine doit ressembler à ceci:

<a href="pageTracker._linkByPost('otherdomain.com/petStoreCart/legalTerms.php');"

Cela ajoutera des valeurs de chaîne de requête spécifiques à Google Analytics qui seront utilisées par le script ci-dessus pour définir le cookie ( source ).

3
Richard Nienaber

J'ai utilisé cette structure sur notre site et sur les sites clients et ça marche comme un charme ...

<script type="text/javascript"> 
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");    
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js'     type='text/javascript'%3E%3C/script%3E")); 
</script> <script type="text/javascript"> 

try {

//Original tracking
var pageTracker_ORIG = _gat._getTracker("UA-XXXXXXX-1");
pageTracker_ORIG._setDomainName('.sleepinggiantmedia.co.uk');
pageTracker_ORIG._trackPageview();

//New Analytics tag
var pageTracker_SGM = _gat._getTracker("UA-XXXXXXX-1");
pageTracker_SGM._setDomainName('.sleepinggiantmedia.co.uk');
pageTracker_SGM._trackPageview();


} catch(err) {}
1
Google Analytics