2009-08-06 7 views
54

Ich schreibe eine Webanwendung, die in die Websites anderer Menschen eingebettet werden soll (eine Art Widget). Ich verwende Google Analytics, um alle Personen zu verfolgen, die alle Instanzen meines Skripts auf den einbettenden Websites besuchen. Das Problem ist, dass ich nicht weiß, wie ich es verwenden soll, damit es die eigenen Google Analytics-Konten dieser Websites nicht beeinträchtigt. Ich speichere die Tracker-Variable in einem Namespace, also dachte ich, dass sollte es tun, aber ich habe nicht bemerkt, dass GA seine Einstellungen in Cookies speichert (__utma, __utmz usw.), und diese Cookies werden von beiden Trackern verwendet, wenn Es gibt zwei davon auf der gleichen Seite ... Wenn ich zum Beispiel _setVar zum Speichern einer Art von benutzerdefinierten Variablen in Google Analytics verwende und die einbettende Website das gleiche tut, überschreiben wir gegenseitig die Werte ...google analytics - mehrere Tracker auf einer Seite (Cookie-Konflikt)

Natürlich wäre es am einfachsten, wenn Google eine Möglichkeit bietet, den Namen der Cookies in einen benutzerdefinierten Namen zu ändern, aber ich finde keine Möglichkeit, dies zu tun. Ich dachte über Cookie-Domäne oder Pfad, um ein separates Cookie zu erzwingen, aber das funktioniert nicht, da wenn ich Domäne oder Pfad zu etwas anderem als die echte Domäne/Pfad festlegen, das Cookie für die Seite nach dem Neuladen nicht lesbar ist. ..

Kennt jemand eine Möglichkeit, zwei Tracker auf einer Seite zu haben und sie dazu zu bringen, separate Cookies zu verwenden, damit sie nicht gegenseitig ihre Einstellungen überschreiben?

Oder, wenn das völlig unmöglich ist - gibt es einen anderen Analysedienst mit ähnlicher Funktionalität wie GA, in dem dies möglich ist? (es hätte erweiterte Funktionen wie Ereignis- und Kampagnen-Tracking ...)

+2

Warum sollten Sie Zugriff auf Besucherdaten von Websites haben, die Ihnen nicht gehören? Wie wird Ihre Komponente eingebettet? – pjp

+6

Weil ich wissen möchte, wie das Widget verwendet wird. Es ist wirklich mehr eine eingebettete Website als ein Widget, „Widget“ legt nahe, etwas klein und nicht kompliziert ... es eingebettet ist von in die Webseite eingefügt, dann ist der GUI-Widget dynamisch in Javascript erstellt wird, lädt es verschiedene Daten mit AJAX (JSONP), und es sollte die Aktionen des Benutzers innerhalb des Widgets mit Google Analytics verfolgen. –

Antwort

56

Jetzt mit dem neuen asynchronen Tracking-Code einfach gemacht.:)

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

+1

Danke für die Info! –

+9

Aktualisierter Link: http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html # MultipleCommands – cope360

+4

Nicht so einfach, in einfachen Situationen funktioniert es, aber Sie sollten vorsichtig sein: siehe die Links in Torok's Beitrag - Google empfiehlt nicht mehrere Analytics-Konto auf der gleichen Seite: https://developers.google.com/analytics/ resources/concepts/gaConceptsCookies? hl = nl-NL = Wenn Sie mehrere Konten haben, die dieselbe Web-Property verfolgen (z. B. Seiten oder Seitengruppen), lesen und setzen beide Konten dieselbe Gruppe von Cookies. Diese Einrichtung wird im Allgemeinen nicht empfohlen. –

-3

This person hat das gleiche Problem auf der Google Analytics-Hilfe vier. Ich würde vorschlagen, einen Blick auf den Thread zu werfen. Aber GA unterstützt nicht mehrere Tracker.

Ich mag Clicky ich selbst, aber es kostet Geld.

+0

Ja, ich sah das, aber es sieht so aus, als wäre die vorgeschlagene Lösung, entweder das GA-Skript herunterzuladen und es zu hacken oder seine internen Variablen von außen zu hacken - beides klingt gefährlich und instabil ... –

10

Sie müssen keine anderen Cookie-Namen verwenden, da Google Analytics problemlos mit mehreren Trackern auf derselben Seite funktioniert. Antworten finden Sie in der Frage Google Analytics - Multiple Trackers for Several Accounts?.

aktualisieren

Es stellt sich heraus, dass multiple trackers is a working method but has some pitfalls verwenden. Einer davon, das heißt, Sie können nicht für jeden von ihnen unterschiedliche Benutzersegmentierung anwenden. John Henson demonstriert eine Problemumgehung, die coerces GA to use different cookies sein kann, Sie sollten es überprüfen.

+0

Ich bin mir nicht so sicher . Wenn beide Tracker _setVar aufrufen, um eine benutzerdefinierte Tracking-Variable festzulegen, scheint nur die Variable aus dem zweiten Tracker in den Cookies gefunden zu werden, und die aus dem ersten Tracker geht verloren. Es sei denn, ich mache etwas falsch ... –

+0

@Pionides: und es scheint, dass das stimmt - bis jetzt habe ich immer die gleichen Einstellungen für verschiedene Tracker verwendet. Ich habe meine Antwort aktualisiert. –

3

Laut der von Török gelisteten documentation scheint es die richtige Antwort zu sein, _setCookiePath zu verwenden. Dies führt dazu, dass jeder Tracker völlig andere Cookies verwendet.

Beispiel-Code von der Website:

<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> 

Wenn Sie von einer Domäne in eine andere Verbindung, jede Verbindung, die Beiträge der anderen Domäne wie folgt auszusehen hat:

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

Dies wird Google hinzufügen Analytics-spezifische Abfragezeichenfolgenwerte, die vom obigen Skript zum Festlegen des Cookies verwendet werden (source).

+0

Ja, aber es funktioniert nicht über Domänen hinweg - Ich kann kein Cookie für eine andere Domäne festlegen, die in der Adressleiste angezeigt wird. Also, wenn mein Widget bei z.B. http://website.com, und das Skript wird von http://widget.com geladen, dann kann ich nur Cookies für http://website.com setzen (und so tut es auch die einbettende Website selbst) - und wir haben immer noch ein Konflikt. –

+0

Weitere Informationen zum Cross-Domain-Linking hinzugefügt. –

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

Ich habe diese Struktur auf unserer Website und Kunden-Sites verwendet, und es wirkt wie ein Zauber ...

<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) {} 

3

Es sieht aus wie Google gegen diese Praxis empfiehlt :

Installieren mehrerer Instanzen des Google Analytics-Tracking-Codes auf Eine einzelne Webseite ist keine unterstützte Implementierung. Wir empfehlen Ihnen, alle außer einer Instanz zu entfernen und sicherzustellen, dass der Code des richtigen Profils auf jeder Seite installiert ist, die Sie verfolgen möchten.

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

8

Falls jemand noch dieses Problem und will eine einfache Paste, mein Problem mein eigenes Google wurde mit für meinen Tracking-Code, die für andere Menschen Seiten hinzugefügt wurde, die auch vielleicht mit Google Tracking sein . Ich habe dies getestet und bestätigen Sie es wie erwartet funktioniert:

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

ich auch bin mit Veranstaltungen mit

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

Wenn jemand ein Problem mit ihm sieht, lass es mich wissen.

+2

Das funktionierte perfekt für mich - einfach und effektiv. – arlomedia

+0

Danke arlomedia. Es hat eine Weile gedauert, um herauszufinden, da diese Seite und viele andere mit Lösungen ziemlich verwirrt sind. –

18

Sie können mehrere Instanzen des Google Analytics-Tracking-Codes auf Ihren Webseiten installieren, um Daten an mehrere Eigenschaften in Ihrem Konto zu senden. https://support.google.com/analytics/answer/1032400?hl=en

Oder Sie können kreativ werden und tun die folgenden Anweisungen von 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>