2009-08-06 20 views
54

Estoy escribiendo una aplicación web que se supone que debe estar integrada en los sitios web de otras personas (una especie de widget). Estoy usando Google Analytics para rastrear a todas las personas que visitan todas las instancias de mi script en los sitios web incrustados. El problema es que no sé cómo usarlo para que no interfiera con las cuentas propias de Google Analytics de esos sitios web. Estoy almacenando la variable de seguimiento en un espacio de nombres, así que pensé que debería hacerlo, pero no me he dado cuenta de que GA almacena su configuración en cookies (__utma, __utmz, etc.), y esos dos usuarios utilizan esas cookies, si hay dos de ellos en la misma página ... Así que, por ejemplo, si uso _setVar para almacenar algún tipo de variable definida por el usuario en Google Analytics, y el sitio de inserción hace lo mismo, sobrescribimos los valores de cada uno ...google analytics - varios rastreadores en una página (conflicto de cookies)

Por supuesto, sería más fácil si Google proporcionara una forma de cambiar el nombre de las cookies por una personalizada, pero no puedo encontrar ninguna forma de hacerlo. Pensé en usar el dominio de cookies o la ruta para forzar una cookie por separado, pero esto no funciona, porque si configuro el dominio o la ruta a algo que no sea el dominio/ruta real, entonces la cookie no es legible para la página después de volver a cargar. ..

¿Alguien sabe una manera de tener dos rastreadores en una página y hacer que utilicen cookies separadas para que no sobrescriban las configuraciones de los demás?

O, si eso es completamente imposible, ¿hay algún otro servicio analítico con funcionalidad similar a GA en la que esto sea posible? (Tendría que tener funciones avanzadas como seguimiento de eventos y campañas ...)

+2

¿Por qué debe tener acceso a los datos de visitantes de los sitios que no pertenecen a usted? ¿Cómo se integra su componente? – pjp

+6

Porque quiero saber cómo se está utilizando el widget. Realmente es más un sitio web incrustado que un widget, "widget" sugiere algo pequeño y no complicado ... Se inserta insertando en el sitio web, luego la GUI del widget se crea dinámicamente en Javascript, descarga varios datos usando AJAX (JSONP), y debe seguir las acciones del usuario dentro del widget usando Google Analytics. –

Respuesta

56

Ahora es más fácil con el nuevo código de seguimiento asíncrono.:)

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

+1

¡Gracias por la información! –

+9

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

+4

No es tan fácil, en situaciones simples funciona, pero debes tener cuidado: ver los enlaces en la publicación de Torok: Google no recomienda varias cuentas de análisis en la misma página: https://developers.google.com/analytics/ resources/concepts/gaConceptsCookies? hl = nl-NL = Si tiene varias cuentas rastreando la misma propiedad web (por ejemplo, una página o conjuntos de páginas), ambas cuentas leerán y establecerán el mismo conjunto de cookies. Esta configuración generalmente no es recomendable. –

-3

This person tiene el mismo problema en la ayuda de Google Analytics de cuatro. Sugeriría echarle un vistazo al hilo. Pero regularmente GA no admite múltiples rastreadores.

Me gusta Clicky, pero me cuesta dinero.

+0

Sí, lo vi, pero parece que la solución sugerida es descargar el guión GA y hackearlo, o piratear sus variables internas desde el exterior, las cuales suenan peligrosas e inestables ... –

10

No es necesario utilizar nombres de cookies diferentes, ya que Google Analytics funciona felizmente con varios rastreadores en la misma página. Ver respuestas para la pregunta Google Analytics - Multiple Trackers for Several Accounts?.

actualización

Resulta que el uso de multiple trackers is a working method but has some pitfalls. Uno de ellos, es decir, no puede aplicar una segmentación de usuario diferente para cada uno de ellos. John Henson demuestra una solución que coerces GA to use different cookies, puede ser que usted debe comprobarlo.

+0

No estoy tan seguro . Si los dos rastreadores llaman a _setVar para establecer una variable de seguimiento personalizada, parece que solo se puede encontrar la variable del segundo rastreador en las cookies, y la que se encuentra en el primer rastreador se pierde. A menos que esté haciendo algo mal ... –

+0

@Psionides: y parece que es verdad, hasta ahora siempre he usado la misma configuración para diferentes rastreadores. Actualicé mi respuesta. –

3

Según el documentation enumerado por Török, parece que la respuesta correcta es usar _setCookiePath. Esto hace que cada rastreador use cookies completamente diferentes.

Código de ejemplo de la página 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> 

Al vincular de un dominio a otro, cada eslabón que los puestos a otro dominio tiene que tener este aspecto:

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

Esto añadirá Google Los valores de cadena de consulta específicos de Analytics que utilizará la secuencia de comandos anterior para establecer la cookie (source).

+0

Sí, pero no funciona en todos los dominios: no puedo configurar una cookie para un dominio diferente que se muestra en la barra de direcciones. Entonces, si mi widget está incrustado en, por ejemplo, http://website.com, y el script se carga desde http://widget.com, luego solo puedo establecer cookies para http://website.com (y también lo hace el sitio web incrustado), y todavía tenemos un conflicto. –

+0

Se agregó más información para enlaces de dominios cruzados. –

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

he utilizado esta estructura en nuestros sitios web y los clientes y funciona como un encanto ...

<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

Parece que Google no recomienda esta práctica :

Instalación de varias instancias del código de seguimiento de Google Analytics en una sola página web no es una implementación compatible. Sugerimos que elimine todas las instancias excepto una, y asegúrese de tener el código del perfil correcto instalado en cada página que desea rastrear.

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

8

Por si alguien todavía tiene este problema y quiere una pasta fácil, mi problema estaba usando mi propio seguimiento de Google para mi código que se está agregando a otras páginas de la gente que también podría ser el uso de seguimiento de Google . He probado esto y confirmar que funciona como se esperaba:

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

estoy usando también el uso de eventos

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

Si alguien ve un problema con él, por favor hágamelo saber.

+2

Esto funcionó perfectamente para mí, simple y efectivo. – arlomedia

+0

Gracias arlomedia. Me llevó un tiempo darme cuenta ya que esta página y muchas otras son bastante intrincadas con las soluciones. –

18

Puede instalar varias instancias del código de seguimiento de Google Analytics en sus páginas web para enviar datos a múltiples propiedades en su cuenta. https://support.google.com/analytics/answer/1032400?hl=en

O puede ser creativo y hacer lo siguiente según las instrucciones 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> 
Cuestiones relacionadas