He decidido hacer un pequeño how-to de como cambiar la duración de la cookie de google analytics. Es muy sencillo.
Para los que acabeis de volver de una isla desierta sin conexión a internet, todo esto empieza con el post de Francois en el que explica que las visitas a Top rural, segun google, dependian un 72% de SEO cuando en realidad solo el 38% de sus visitas venia de SEO según otro sistema de estadísticas. ¿Como era eso posible? La explicación está en la duración de la cookie de analytics y como toma las fuestes de tráfico.
Un ejemplo que está en los comentarios del post: Visitas tu página (visita directa) 3 veces, visitas tu página llegando desde una búsqueda, visitas tu página de forma directa otras 5 veces. ¿Resultado? 3 visitas directas, 6 visitas de SEO. ¿Porqué? Porque analytics decidió que las visitas de SEO/SEM guardasen el origen en la cookie por ¡6 meses!
Pero bueno, se puede solucionar facilmente. Solo hay que añadir una línea al código del tracker para que la duración de la cookie sea inferior (30 días para una página normal está bien).
La linea es pageTracker._setCookieTimeout(“432000″);. Aquí un ejemplo:
(MENOR QUE)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"));
(MENOR QUE)/script>
(MENOR QUE)script type="text/javascript">
var pageTracker = _gat._getTracker("UA-TUKEY-X");
pageTracker._setCookieTimeout("432000");
pageTracker._trackPageview();
(MENOR QUE)/script>
Donde UA-TUKEY-X es tu código de seguimiento de google analytics y 432000 son los segundos de vida de tu cookie (en este caso 5 días).
Ahora solo tienes que esperar 6 meses para que los orígenes de tus visitas sean más precisos.
¿Se puede mejorar?
Claro que se puede
Con unas líneas en php podemos reducir el tiempo de las cookies de google (que para algo están en nuestro dominio)
if(!isset($_COOKIE['nombre_cookie'])){
setcookie('nombre_cookie', "whatever", time() + (120 * 86400) );
setcookie('_utmb', $_COOKIE['_utmb'], time() + (5 * 86400) );
setcookie('_utmc', $_COOKIE['_utmc'], time() + (5 * 86400) );
setcookie('_utma', $_COOKIE['_utma'], time() + (5 * 86400) );
setcookie('_utmz', $_COOKIE['_utmz'], time() + (5 * 86400) );
}
Despues de 6 meses ya podremos quitar este pegote de código.
Espero que os sirva de ayuda
9 Responses
Si no quieres perderte nada de está conversación puedes suscribirte al RSS de comentarios para este artículo.
Genial. Muchas gracias Iñaki. Muy muy util
Hola Iñaki, muchas gracias muy útil, aunque tengo una duda. El “pegote” para reducir el tiempo de las cookies de visitantes antiguos donde va insertado? En todas las páginas junto al Cid de seguimiento de analytics? Muchas gracias.
Un saludo.
Hola Carlos. Me alegro de que te sea util.
Lo debes incluir al principio de cualquier página donde insertes el código de seguimiento.
Ten en cuenta que es PHP y las comillas son las que te pone wordpress cuando pones código pero deberian de ser comillas simples.
Un saludo!
Gracias de nuevo iñaki. Por cierto la variable ‘nombre_cookie’ hay que mantenerla como tal o sustituirla por algun valor?
Un saludo!
También si puedes explicarme un poco el funcionamiento del nuevo código. Veo que modificas el valor del tiempo de caducidad de la cookie con el valor antiguo (6 meses) por otro valor, aunque no entiendo porque (5*86400) para algunas, y 120*86400 para otra.
Gracias de nuevo.
Te explico Carlos.
En
if(!isset($_COOKIE['nombre_cookie'])){
comprobamos si existe la cookie nombre_cookie. En caso de que exista el usuario ya tendrá correctamente seteadas las cookies.
Si no existe la cremos con una duracion de 120 dias (120*86400 segundos que tiene un dia).
Acto seguido disminuimos el tiempo de todas las cookies de analytics a 5 dias.
Como antes de cambiar el tiempo comprobamos si existe la cookie “nombre_cookie” nos aseguramos de no modificar la duracion de las cookies de analytics más de una vez.
En nombre_cookie puedes poner lo que quieras (elije algo raro mejor) pero asegurate de cambiarlo en las dos lineas.
Muchas gracias!! Gran explicación, ahora esta clarísimo. Buen trabajo, se ve que lo tienes trabajado.
Hola Iñaki buenas tardes, Consegui ponerlo todo como me dijiste, pero a pesar de que me graba la nueva cookie `nombre_cookie`no me modifica el tiempo de caducidad de las cookies que se grabaron con anterioridad. Porque puede ser?
Muchas gracias de nuevo!
Ya se que ocurría… No es un guion bajo( _ ) sino 2 seguidos antes del nombre de la cookie. Por ejemplo __utmz en lugar de _utmz
Gracias de todas formas