2011-12-15 13 views
9

En mi sitio web tengo cuatro variables personalizadas. Mi problema es que Google Analytics por alguna razón solo registra tres de ellos. La secuencia de comandos en la página que no está funcionando adecuadamente se ve así:La variable personalizada de Google Analytics no se establece

<script type="text/javascript"> 
    var _gaq = _gaq || []; 

    _gaq.push(['_setCustomVar',3,'Category 3','some value']); 
    _gaq.push(['_setCustomVar',4,'Category 4','some value']); 

    _gaq.push(['_setAccount', 'UA-XXXXXXXX']); 
    _gaq.push(['_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); 
    })(); 
</script> 

Esta página se supone que debe realizar un seguimiento de dos de las variables personalizadas en el índice 3 y 4. Otra página es el seguimiento de las variables personalizadas en el índice 1 y 2.

En Google Analytics puedo ver que ha registrado las categorías en las tres primeras máquinas tragamonedas (Índice 1-3) pero la categoría en la cuarta ranura nunca se registra. According to the documentation puede tener hasta cinco espacios.

¿Alguien puede arrojar alguna luz sobre por qué la cuarta variable nunca se registra?

actualización

Inspección de la variable utme en la solicitud de análisis proporcionan algunos resultados interesantes.

Página 1, que está trabajando, utiliza la siguiente secuencia de comandos de seguimiento:

_gaq.push(['_setCustomVar',1,'Category 1','value1']); 
_gaq.push(['_setCustomVar',2,'Category 2','value2']); 

Esto se traduce en el siguiente parámetro utme:

8(Category 1*Category 2)9(value1*value2) 

Página 2, que no está funcionando, utiliza el siguiente script de seguimiento:

_gaq.push(['_setCustomVar',3,'Category 3','value3']); 
_gaq.push(['_setCustomVar',4,'Category 4','value4']); 

Esto se traduce en el siguiente parámetro utme:

8(3!Category 3)9(3!value3) 

¡Está haciendo caso omiso del último valor personalizado que estoy tratando de rastrear!

+0

Dar el código original puede ayudar a responder mejor .. todo es vaga con los datos actuales.. –

Respuesta

12

tuve problemas para conseguir que esto funcione también y en última instancia, que era un caso de no leer el documento con el suficiente cuidado.

No

seguro de si está posando el código real que está utilizando para establecer las variables, si no es así, asegúrese de que está de acuerdo con esta advertencia:

La longitud total combinado de cualquier nombre de variable personalizada y el valor no puede exceder 128 bytes. Tenga en cuenta que esto no es equivalente a 128 caracteres. Debido a que los nombres y valores están codificados en URI cuando se almacenan, algunos caracteres usan más de un byte. Por ejemplo, = se almacena como% 3D en lugar de = y usa 3 bytes en lugar de 1. Para obtener una lista de valores codificados de URI, busque en la web la referencia de codificación de URL.

¿Ha comprobado las otras prácticas recomendadas? Estos dos pueden ser una fuente de problemas para usted (si también está utilizando variables de sesión):

No utilice nombres de claves duplicados en las ranuras. Tiene hasta 5 variables personalizadas simultáneas para usar en una sola solicitud (por ejemplo, vista de página o llamada de evento). La suma de todos sus objetos varaiables personalizados no puede exceder 5 en ninguna solicitud dada (es decir, no puede tener 5 variables personalizadas de visitante y 5 de sesión configuradas simultáneamente).

+1

@Christian Hagelid: también asegúrese de que no haya errores de sintaxis (como comillas faltantes u otros caracteres GA "ilegales"). Realmente no puedo decirlo, ya que acabas de publicar valores de ejemplo. También si es posible, proporcione un enlace a la página en cuestión. –

+1

¡Gracias! El problema era que la longitud combinada del nombre y el valor de la variable era demasiado larga. #RTFM –

+7

Para cualquier otra persona que mire esto, Google ha aumentado desde entonces la longitud máxima a 128 caracteres. –

1

trate de cambiar el orden del seguimiento a:

_gaq.push(['_setAccount', 'UA-XXXXXXXX']); 

_gaq.push(['_setCustomVar',3,'Category 3','some value'],['_setCustomVar',4,'Category 4','some value']); 

_gaq.push(['_trackPageview']); 

Ver Custom Variable Not Showing Up in Google Analytics y _gaq push

+0

Gracias por publicar. Miré el enlace y uno de los comentarios me llevó a verificar el parámetro utme en la solicitud. Todavía no estoy más cerca de resolver el problema, pero al menos puedo verificar que el parámetro nunca se pasa en la solicitud a Google Analytics –

4

También he tenido problemas para hacer que las variables personalizadas funcionen, y hemos tenido conocimiento de los (numerosos) errores que usted debe tener en cuenta.

precauciones comunes

(La documentación oficial que hace el estado más de ellos, pero es muy fácil equivocarse, y difícil de entender por qué.)

  • Utilice un número de ranura válido. De forma predeterminada, este es un número entero entre 1 y 5, pero los usuarios de Premium Analytics tendrán más espacios disponibles.
  • El valor para la variable personalizada debe ser una cadena . Lo dice en la documentación, pero no asuma que un entero (por ejemplo, 1) se convertirá en una cadena (es decir, "1"). Debe convertirlo con el método toString() (o haciendo value + ""). Lo que sucederá si no lo hace (esto nos pasó a nosotros, verá) es que el nombre de la variable personalizada se establecerá, pero no tendrá valor. - En sus informes, verá la variable, pero cuando haga clic en en él, obtendrá el mensaje ominoso: "No hay datos para esta vista".
  • El nombre de la variable personalizada no debe evaluarse a false. Por lo tanto, no puede usar el número entero 0.
  • El valor para la variable personalizada no debe evaluarse a false. Los valores 0, false, null, undefined, y la cadena vacía "" todos son falsos, por lo que no se utilizarán en sus informes de Analytics. (De todos modos, no debe establecer valores que no sean cadenas.)
  • La longitud combinada del nombre y el valor de la variable personalizada no debe exceder los 128 caracteres. Otras personas han advertido que debe tener en cuenta la decodificación URI (es decir, tratar el carácter '=' como 3 caracteres, porque se codifica a '% 3D'; sin embargo, miramos el código nosotros mismos, y no lo hace) 't parece ser el caso. (al menos, no a partir de hoy.)
  • no utilice nombres de clave duplicados a través de las ranuras.
  • Llame a la función _setCustomVar() cuando se puede ajustar antes de una visita de página o solicitud GIF de evento En ciertos casos, esto podría no ser posible y deberá configurar otra solicitud _trackPageview() después de establecer una variable personalizada. Esto normalmente solo es necesario en aquellas situaciones en las que el usuario desencadena una variable personalizada de sesión o visita , w aquí no es posible agrupar ese método con una visita de página, un evento o una llamada de seguimiento de comercio electrónico.
  • Tenga cuidado con las colisiones entre las variables de nivel de página y de sesión. Si necesita realizar un seguimiento de grandes cantidades de variables personalizadas, considere usar una matriz de ranura para evitar colisiones.

Depuración

Si define una variable personalizada, donde el valor es falso, o la longitud combinada Balón por encima del límite de 128 caracteres, la función _setCustomVar() regresará false. Puede emitir el valor de retorno de su navegador para ver lo que está pasando:

setTimeout(function() { 
    var tracker = _gaq._getAsyncTracker(); 
    console.log(tracker._setCustomVar(slot, name, value, scope)); 
    // should normally print 'true' 
}, 2000); 

(Se necesita la función setTimeout(), asumiendo que usted está utilizando el fragmento asincrónico, porque de lo contrario la variable _gaq no se establecerá Este. no se frunza código, obviamente, pero es lo suficientemente bueno para la depuración.)

en cuanto a la solicitud __utm.gif

por último, si usted todavía tiene problemas, abre las herramientas de desarrollo, y mirar las solicitudes el navegador está haciendo. Debería ver una solicitud para http://www.google-analytics.com/__utm.gif?....

Luego busque en la solicitud completa del parámetro utme. Se debe tener este aspecto:

&utme=8(var1*var2*var3)9(val1*val2*val3)11(scope1*scope2*scope3) 

Si aparece un signo de exclamación en cualquier lugar (precedido por un número entero), que significa que no se haya establecido para esa variable personalizada. (El entero es un número entero incrementa, esto no significa nada especial.)

(Usted puede notar que algunos valores se escaparon con apóstrofes El método de escape es la siguiente:. '0 significa '; '1 significa ); '2 significa *;. '3 significa !) (por supuesto, toda la cadena de la solicitud también será URI codificado)

Cuestiones relacionadas