Para que Google Analytics determine que dos hits distintos pertenecen al mismo usuario, se debe enviar un identificador único asociado con ese usuario en particular con cada hit.
La biblioteca analytics.js lo hace mediante el campo ID de cliente, una cadena única generada al azar que se almacena en las cookies del navegador, de modo que las visitas posteriores al mismo sitio se puedan asociar con el mismo usuario.
Según la configuración predeterminada, analytics.js usa una sola cookie propia llamada
_ga
para almacenar el ID de cliente, pero se pueden personalizar el nombre, el dominio
y la fecha de vencimiento de la cookie. Otras cookies que crea analytics.js son _gid
, AMP_TOKEN
y _gac_<property-id>
. Estas cookies almacenan otros IDs generados de forma aleatoria y la información de la campaña sobre el usuario.
El uso de cookies permite que analytics.js identifique usuarios únicos en todas las sesiones de navegación, pero no puede identificar a usuarios únicos en diferentes navegadores o dispositivos. Si tu sitio tiene su propio sistema de autenticación, puedes usar la función User-ID, además del ID de cliente, para identificar con mayor precisión a un usuario en todos los dispositivos que utiliza para acceder al sitio.
En esta guía, se explica cómo personalizar la configuración de cookies y establecer el campo de ID del usuario para medir con mayor precisión la actividad del usuario en todas las sesiones.
Configuración de los campos de cookies
En la siguiente tabla, se muestran los valores predeterminados de los campos de cookies que utiliza analytics.js:
Nombre del campo | Value Type | Valor predeterminado |
---|---|---|
cookieName |
text | _ga |
cookieDomain |
text |
El resultado de la siguiente expresión de JavaScript:document.location.hostname
|
cookieExpires |
integer | 63072000 (dos años, en segundos) |
cookieUpdate |
boolean |
true
|
cookieFlags |
text |
|
Para modificar cualquiera de estos valores, puedes especificarlos en el fieldObject
, pasa el comando create
. Por ejemplo:
ga('create', 'UA-XXXXX-Y', {
'cookieName': 'gaCookie',
'cookieDomain': 'blog.example.co.uk',
'cookieExpires': 60 * 60 * 24 * 28 // Time in seconds.
'cookieUpdate': 'false',
'cookieFlags': 'SameSite=None; Secure',
});
El campo de cookie más común que se debe configurar es cookieDomain
. Por lo tanto, el comando create
acepta el campo cookieDomain
como un tercer parámetro opcional por conveniencia:
ga('create', 'UA-XXXXX-Y', 'blog.example.co.uk');
Configuración automática del dominio de cookies
La etiqueta recomendada de Google Analytics establece la string 'auto'
para el campo cookieDomain
:
ga('create', 'UA-XXXXX-Y', 'auto');
Especificar 'auto'
como cookieDomain
habilita la configuración automática del dominio de cookies, lo que le indica a analytics.js que determine automáticamente el mejor dominio de cookies para usar.
La configuración automática del dominio de cookies establece la cookie _ga
en el dominio de nivel más alto que pueda. Por ejemplo, si la dirección de tu sitio web es blog.example.co.uk
, analytics.js establecerá el dominio de las cookies en .example.co.uk
. Además, si
analytics.js detecta que estás ejecutando un servidor de manera local (p.ej., localhost
),
se establecerá automáticamente el cookieDomain
en 'none'
.
Vencimiento de las cookies
Cada vez que se envía un hit a Google Analytics, la hora de vencimiento de la cookie se actualiza para que sea la hora actual más el valor del campo cookieExpires
. Esto significa que, si usas el período predeterminado de cookieExpires
de dos años y un usuario visita tu sitio todos los meses, su cookie nunca vencerá.
Si estableces el tiempo de cookieExpires
en 0
(cero) segundos, la cookie se convierte en una cookie basada en sesión y vence una vez que finaliza la sesión actual del navegador:
Actualización de cookies
Cuando cookieUpdate
se establezca en true
(el valor predeterminado), analytics.js actualizará las cookies en cada carga de página. Esto actualizará el vencimiento de la cookie para que se establezca en relación con la visita más reciente al sitio. Por ejemplo, si el vencimiento de la cookie se establece en una semana, y un usuario visita con el mismo navegador cada cinco días, el vencimiento de la cookie se actualizará en cada visita y, por lo tanto, nunca vencerá.
Cuando se establece en false
, las cookies no se actualizan en cada carga de página. Esto tiene el efecto de que el vencimiento de la cookie sea relativo a la primera vez que un usuario visitó el sitio.
Marcas de cookies
Agrega marcas adicionales a la cookie cuando se configura. Las marcas deben estar separadas por punto y coma.
Cómo obtener el ID de cliente de la cookie
No debes acceder directamente a los conjuntos de analytics.js de la cookie, ya que el formato de la cookie podría cambiar en el futuro. En cambio, los desarrolladores deben usar readyCallback
para esperar hasta que se cargue analytics.js y, luego, obtener el valor clientId
almacenado en la herramienta de seguimiento.
ga(function(tracker) { var clientId = tracker.get('clientId'); });
Inhabilitación de cookies
En algunos casos, es posible que desees usar tu propio mecanismo de almacenamiento (como localStorage
o un Service Worker) para conservar el ID de cliente en todas las sesiones sin usar cookies. Para inhabilitar la configuración de cookies de analytics.js, configura el campo storage
como 'none'
.
ga('create', 'UA-XXXXX-Y', { 'storage': 'none' });
Si almacenas el campo clientId
por tu cuenta, deberás asegurarte de configurar el campo cliendId
cuando crees el seguimiento.
ga('create', 'UA-XXXXX-Y', { 'storage': 'none', 'clientId': '76c24efd-ec42-492a-92df-c62cfd4540a3' });
Para inhabilitar las cookies _gac_<property-id>
, configura el campo storeGac
como false
en el comando create
:
ga('create', 'UA-XXXXX-Y', {
storeGac: false,
});
Cómo usar localStorage para almacenar el ID de cliente
En la siguiente muestra de código, se indica cómo modificar la etiqueta de JavaScript para usar localStorage
a fin de almacenar el ID de cliente en lugar de cookies:
var GA_LOCAL_STORAGE_KEY = 'ga:clientId';
if (window.localStorage) {
ga('create', 'UA-XXXXX-Y', {
'storage': 'none',
'clientId': localStorage.getItem(GA_LOCAL_STORAGE_KEY)
});
ga(function(tracker) {
localStorage.setItem(GA_LOCAL_STORAGE_KEY, tracker.get('clientId'));
});
}
else {
ga('create', 'UA-XXXXX-Y', 'auto');
}
ga('send', 'pageview');
ID de usuario
User-ID permite analizar grupos de sesiones en varios dispositivos mediante una cadena de ID que representa a un usuario y es única, persistente y no proporciona identificación personal. Para obtener información sobre por qué deberías implementar el User-ID, consulta el artículo Beneficios de usar la función User-ID.
Para implementar el ID de usuario con analytics.js, sigue estos pasos:
- Proporciona tu propio ID de string único, persistente y que no permita la identificación personal para representar a cada usuario que accedió. Este ID suele proporcionarse mediante un sistema de autenticación.
- Establece el ID de usuario en la herramienta de seguimiento:
ga('create', 'UA-XXXXX-Y', 'auto', { userId: USER_ID }); ga('send', 'pageview');
Cómo administrar la autenticación después de cargar la página
Cuando compilas aplicaciones de una sola página o algún otro sitio web dinámico que controla el acceso del usuario después de la carga inicial de la página, el proceso de configuración del valor del ID de usuario en la herramienta de seguimiento no puede ocurrir en el momento de la creación.
En esos casos, puedes usar el comando set
para configurar el valor en el rastreador en cuanto se conozca.
// Creates the tracker and sends a pageview as normal // since the `userId` value is not yet known. ga('create', 'UA-XXXXX-Y', 'auto'); ga('send', 'pageview'); // At a later time, once the `userId` value is known, // sets the value on the tracker. ga('set', 'userId', USER_ID); // Setting the userId doesn't send data to Google Analytics. // You must also use a pageview or event to send the data. ga('send', 'event', 'authentication', 'user-id available');
Cuando se utiliza este enfoque, los hits enviados antes de configurar el campo userId
no contendrán valores de ID de usuario. Sin embargo, mediante un proceso conocido como unificación de sesión, Google Analytics puede asociar estos hits con el usuario correcto en el momento del procesamiento.