Cómo funciona el setDomainName y la medición entre dominios

Todos sabemos que Google Analytics permite la medición entre dominios,  pero las instrucciones para hacer esta medición han ido cambiando con el tiempo. Para la realizar la medición entre dominios ( cross-domain tracking ),  se utilizan las siguientes funciones:

  • _setAllowLinker():
    Esta función habilita la posibilidad de poder transferir las cookies entre los dominios a través de las funciones _link() y _linkByPost.
  • _link() : Esta función en la encargada de enviar las cookies entre los dominios, se utiliza con un evento onclick en los enlaces que vayan a los otros dominios, y lo que hace es añadir los parámetros de las cookies (utma, utmb,utmc, utmz ) a la dirección.
  • _linkByPost(): Esta función es la que se encarga de enviar los valores de las cookies si el enlace entre dominios se realiza a través de un formulario.
  • _setDomainName() : Esta función es la que se encarga de generar el hash de dominio que se utiliza en las cookies así como de fijar el dominio para el cual son válidas las cookies.

Hay 2 tipos de escenarios posibles, la medición entre subdominios, y las medición entre dominios diferentes:

Medición entre subdominios

Podríamos imaginar que tengamos varias versiones de nuestra web por paises y para cada país un subdominio, por ejemplo: spain.midominio.com , ireland.midominio.com , france.midominio.com, etc.

Para realizar esta medición, no es más que necesaria la utilización del _setDomainName(), para fijar el dominio sobre el cual se han fijar las cookies.

Debemos saber que la valided de una cookie, se hace de forma descendente, vamos a intentar explicarlo:

Si fijamos una cookie a “midominio.com”, cualquier subdominio que cuelgue de el podrá leer y modificar esas cookies, pero no sucedera a la inversa. Ejemplo:
_setDomainName(“midominio.com”) , spain.midominio.com, ireland.midominio.com, van a poder compartir esa cookie.
_setDomainName(“spain.midominio.com”) , midominio.com , www.dominio.com, ireland.midominio.com, no van a poder leer esa cookie por lo tanto Google Analytics creará una cookie nueva, duplicando con ello nuestras visitas.

Por esto mismo en la medición entre subdominios se utiliza en todos ellos el código por defecto y utilizando como setDomainName el nombre de dominio, para que tanto el dominio, cómo cualquier otro subdominio puedan compartir las cookies.

Medición entre dominios

La otra opcion es que tengamos nuestra web separada en diferentes dominios, por ejemplo: tienda.com , shop.com , boutique.com .
Para hacer esta medición debemos realizar los siguientes pasos:
Fijar el setDomainName a cada uno de los dominios.
Fijar el _setAllowLinker a true, para que el código de Google Analytics nos permita compartir los datos de las cookies entre nuestros dominios.
Utilizar las funciones _link() y _linkByPost() para pasar las cookies entre nuestros dominios.

Para poder entender porqué es necesario hacerlo así debemos saber cual es la función de setDomainName, esta función se encarga de:

  1. Generar el Hash de dominio que se utiliza en las cookies
  2. Fijar el dominio de las cookies

Si no se utiliza el setDomainName el código de Google Analytics lo fija de forma automática, lo que hace es coger el nombre de dominio actual y elimina la cadena “www.” si esta estuviese presente, el código sería el siguiente:

var d=document.domain;
if (d.substring(0,4)=="www.") {
d=d.substring(4,d.length);
}
_gaq.push(['_setDomainName', d]);

Hace esto porque normalmente www.domino.com y dominio.com son la misma página, y recordemos que si se fijase la cookie a www.dominio.com no se podrían leer las cookies desde dominio.com, con lo que las cookies se resetearían continuamente.

Me gustaría comentar que no es lo mismo utilizar “dominio.com” o “.dominio.com” ,  en ambos casos las cookie se fijaría de forma correcta, pero el hash de dominio sería diferente, por lo cual estaríamos de nuevo en el caso de que se reseteasen las cookies. Porqué comento esto, imaginemos que hasta ahora no estabamos utilizando el setDomainName , y cambiamos el código y ponemos que el setDomainName sea “.dominio.com“, estaríamos perdiendo el tracking de todos los usuarios, porqué se resetearinas las cookies de todas las visitas al no coincidir el hash de dominio.

Bien ahora ya tenemos nuestros tags puestos correctamente, pero de esta manera cada dominio tendrá su propias cookies, cómo hacemos para que google analytics sepa que se trata de los mismo usuarios, para ellos lo que hacemos es pasar el valor de las cookies entre los dominios, etiquetando con un onclick los enlaces de tienda.com que vayan a shop.com , y a la inversa.
Por lo tanto en tienda.com, haríamos lo siguiente

<a href="http://www.shop.com/contact.html"
onclick="_gaq.push(['_link', 'http://www.shop.com/contact.html']); return false;">Contact shop.com</a>

Para saber que funciona, a hacer click deberemos ver los valores en las cookies añadidos a la url de destino como parámetros.

Si por ejemplo el enlace se realizase a través de un formulario pondríamos el siguiente onsubmit en el:

<form action="http://www.shop.com/checkout.php" name="f" method="post" onsubmit="_gaq.push(['_linkByPost', this]);">...</form>

Ahora queda configurar los perfiles necesarios para poder ver los datos de los dominios de forma agregada y de forma individual por cada dominio.

1. Por lo que crearemos un perfil RAW , sin ningún tipo de filtro.

2. Crearemos otro perfil donde añadiremos a la URL el dominio que realiza la petición, de esta manera si tuviesemos páginas iguales en varios dominios, podremos diferenciarlas, este será el perfil que utilizaremos para ver los datos agregados de todos nuestros sites.
Este sería el filtro que deberíamos crear para conseguir esto:

cross-domain-filter

3. Y por último crearíamos un perfil nuevo por cada dominio diferente, para poder ver los datos de cada uno de ellos, para ello crearemos un filtro por cada dominio diferente y se lo aplicaremos a los diferentes perfiles.

cross-domain-filter-exclude
Y con esto tendríamos todo montado para nuestras mediciones entre dominios, si tienes alguna duda deja un comentario 😉

David Vallejo

Google Analytics Consultant and implementer. I have some experience with Google Tag Manager
Follow me: @thyng

Author: David Vallejo

Google Analytics Consultant and implementer. I have some experience with Google Tag Manager Follow me: @thyng

1 thought on “Cómo funciona el setDomainName y la medición entre dominios”

Leave a Reply

Your email address will not be published. Required fields are marked *