Do not speak Spanish? Read this post in English.

Martes, 17 de noviembre de 2009.

Google Analytics: Cómo enviar las campañas desde el servidor (y no desde url)

Hace ya un tiempo hablé en este blog sobre como usar las campañas de Google Analytics. Básicamente se trata de añadir a las urls una serie de parámetros extra (fuente, medio, nombre de la campaña, etc.) para que Google Analytics detecte la entrada como una campaña concreta y no cualquier tipo de link.

Comentaba en ese mismo post que el único problema que tenía este sistema es que obligaba a indicar las campañas en las urls y que si no usabas al menos "fuente", "medio" y "campaña" no se captaban bien los datos. El segundo problema queda resuelto rellenando las partes que no vayamos a usar con cualquier tag ("undefined" por ejemplo) pero el primero sólo puede ser salvado con el uso de javascript y echando mano de la Google Analytics Tracking Api.

Dejé abandonado este tema ahí pero hoy le he dado un par de vueltas y quiero dejar en el blog un detalle de como forzar desde el código de la página (y por tanto desde servidor) la campaña que queremos que Google Analytics entienda.

Cómo lo conseguimos

Explicaré el proceso que hacemos para luego dejar el código por si alguien quiere copiarlo.

1) Lo primero es definir como variables de javascript los datos de la campaña. En el ejemplo los incluiremos como datos estáticos pero en la práctica podremos sustituir estos datos por los que el servidor estime oportuno incluir.

2) Tras esto recogemos del objeto window.location la url actual, y le añadimos tras la almohadilla ("#") los datos de campaña con esas variables. Como solo cambiamos la parte del ancla de la url esto no generará otra visualización de página.

3) Seguidamente iniciamos el objeto pageTracker de Google Analtytics y antes de lanzar el método _trackPageview(), le indicamos que debe recoger la campaña desde la parte del anchor con el método _setAllowAnchor() (este método está explicada en el post sobre campañas de google analytics que mencionaba al principio).

4) Por último, tras haber lanzado el tracking de analytics, volvemos cambiar la url de la página para que el usuario no perciba los cambios que hemos hecho.

Veamos el código:

try {
 
// rescatamos la url
var t = window.location.toString();
 
// le añadimos la almohadilla si no la tenía
if ( t.indexOf("#") == -1) 
  t = t + "#";	
 
// Definimos que campaña queremos que entienda Google Analytics
// Estas son las variables que podemos manipular con el servidor
var analytics_medium    = "campañas forzadas";
var analytics_source     = "Mi web";
var analytics_campaign = "Nombre de mi campaña";
var analytics_content   = "";
var analytics_keyword   = "";
 
// Alteramos la url de nuestra web
window.location = t + "&utm_source=" + analytics_source.split(" ").join("+") + "&utm_medium=" + analytics_medium.split(" ").join("+") + "&utm_campaign=" + analytics_campaign.split(" ").join("+") + "&utm_content=" + analytics_content.split(" ").join("+") + "&utm_term=" + analytics_keyword.split(" ").join("+");
 
// lanzamos analytics con la opción "setAllowAnchor" a true.
var pageTracker = _gat._getTracker("UA-1234567-8");
pageTracker._setAllowAnchor(true);
pageTracker._trackPageview();
 
// Volvemos a la url original
window.location = t;	
 
} catch(err) {}

Esto, en un principio, nos puede solucionar algunos problemas para trackear campañas en sistemas que ya usaban sus propios medios para captar datos y que no pueden a estas alturas amoldarse a analytics.

¿Y algo más?

De una forma más creativa puede ayudarnos a segmentar mejor nuestro tráfico. ¿Y si yo detectase en el servidor las keywords de entrada a mi site y generase como campañas mis keywords o semánticas principales? Por ejemplo, podría detectar toda entrada provocada por búsquedas que contuviesen las palabras "seo", "posicionamiento", "optimización", "pagerank", etc. y tratarlas como si fuesen una campaña para que quedasen estas visitas totalmente separadas del resto en analytics... Claro está que para este tipo de configuraciones "creativas" será preferible usar 2 cuentas de analytics a la vez: una más conservadora y otra más artística...

Posts Relacionados:

  1. Definir campañas en Google Analytics con una sola variable
  2. Campañas en Google Analytics
  3. Llama la atención de las webs a las que envías enlaces con campañas de analytics
  4. Forzar con javascript las campañas capturadas por Google Analytics
  5. Como hackear el código javascript de Google Analytics.

Temas Relacionados: analitica web

Autor:

2 Comentarios para “Google Analytics: Cómo enviar las campañas desde el servidor (y no desde url)”

  1. Iñaki no me queda esto muy claro:

    Es decir por ejemplo si a la página /navidad.html le agrego la configuración que tu haz hecho, todas las visitas que lleguen directamente a dicha página apareceran en Otros dentro de los Traffic Sources de GA bajo la campaña "Nombre de mi campaña" es eso??

    Perdon pero me interesa mucho el tema! Saludos amigo!!

  2. ikhuerta dice:

    Si, es eso mismo pero yo lo ponía más para que controlases que campaña le obligabas a entender en el servidor.

    Si por ejemplo detectas con el servidor (php, asp.net, java, lo mimso da...) una condición especial que te interesa mucho medir (pertenece a un grupo especifico de referrers, navidad.html es su landing page porque aun no tiene las cookies de tu web guardadas, su ip es interna de tu empresa, etc.) puedes forzar que ese tráfico caiga en otros y luego a ver informe de fuentes o de campañas ver la separación como la hace.

Anímate y deja tu comentario