Cómo funciona analytics.js

Casi todo lo que necesitas para realizar el seguimiento con analytics.js se puede realizar mediante la cola de comandos de ga(). En esta guía se explica qué es la cola de comandos, cómo funciona y cómo ejecutar comandos para realizar el seguimiento de las interacciones del usuario.

Cola de comandos de ga

El fragmento de seguimiento JavaScript define una función ga global que se denomina "cola de comandos". Recibe este nombre porque, en vez de ejecutar inmediatamente los comandos que recibe, los agrega a una cola que retrasa la ejecución hasta que la biblioteca analytics.js se ha cargado por completo.

En JavaScript, las funciones también son objetos, lo que significa que puede contener propiedades. El fragmento de seguimiento define una propiedad q en el objeto de función ga como una matriz vacía. Antes de que se cargue la biblioteca analytics.js, llamar a la función ga() adjunta la lista de argumentos pasados a la función ga() al final de la matriz q.

Por ejemplo, si ejecutaras el fragmento de seguimiento y registraras inmediatamente el contenido de ga.q en la consola, se mostraría una matriz de dos elementos que contiene los dos conjuntos de argumentos que ya se han pasado a la función ga():

console.log(ga.q);

// Outputs the following:
// [
//   ['create', 'UA-XXXXX-Y', 'auto'],
//   ['send', 'pageview']
// ]

Una vez que se ha cargado la biblioteca analytics.js, inspecciona el contenido de la matriz ga.q y ejecuta cada comando por orden. Tras ello, se redefine la función ga(), de modo que las llamadas posteriores se ejecutan inmediatamente.

Este patrón permite a los programadores usar la cola de comandos de ga() sin tener que preocuparse de si ha terminado de cargarse la biblioteca analytics.js. Proporciona una interfaz simple de carácter síncrono que elimina la complejidad del código asíncrono.

Agregar comandos a la cola

Todas las llamadas a la cola de comandos de ga() comparten una firma común. El primer parámetro, el "comando", es una cadena que identifica un método de analytics.js concreto. Los parámetros adicionales son los argumentos que se pasan a este método.

El método al que hace referencia un determinado comando puede ser un método global, como create, un método del objeto ga o un método de instancia de un objeto de seguimiento, como send. Si la cola de comandos de ga() recibe un comando que no reconoce, lo ignora, por lo que las llamadas a la función ga() son muy seguras, ya que prácticamente nunca se generará un error.

En la referencia de la cola de comandos de ga() puedes consultar una lista completa de los comandos que se pueden ejecutar mediante la cola.

Parámetros de comando

La mayoría de los comandos de analytics.js (y sus métodos correspondientes) aceptan parámetros con diferentes formatos. De este modo, resulta más fácil pasar campos que se utilizan habitualmente a determinados métodos.

Por ejemplo, veamos estos dos comandos del fragmento de seguimiento JavaScript:

ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');

En el primer comando, create acepta que los campos trackingId, cookieDomain y name se especifiquen de forma opcional como los parámetros segundo, tercero y cuarto, respectivamente. El comando send acepta un segundo parámetro hitType opcional.

Todos los comandos aceptan un parámetro fieldsObject final que también se puede usar para especificar cualquier campo. Por ejemplo, los dos comandos anteriores del fragmento de seguimiento se podrían reescribir del siguiente modo:

ga('create', {
  trackingId: 'UA-XXXXX-Y',
  cookieDomain: 'auto'
});
ga('send', {
  hitType: 'pageview'
});

En la referencia de la cola de comandos de ga() puedes consultar una lista exhaustiva de los parámetros opcionales que se permiten para cada uno de los comandos.

Pasos siguientes

Después de leer esta guía ya debes conocer bastante bien cómo ejecutar comandos con analytics.js y cómo funciona la cola de comandos. En la guía siguiente explicaremos cómo crear objetos de seguimiento.