Google Analytics nivel Dios para sitios multi-idioma o multi-dominio de un mismo grupo

  • 28 Jun 2019
  • Analytics, Drupal, Google Tag Manager

Cuando se publica un proyecto nuevo, una de las primeras herramientas que conectamos a nuestro sitio es sin dudas Google Analytics. Según BuiltWith, GA es usado por más del 50% de los sitios top. Y extrañamente, el tercer país que más cariño le brinda, es Rusia. Ahora bien, que sucede cuando no tenemos solo un sitio si no, distintos dominios localizados en distintas partes del mundo, cada uno con su correspondiente idioma y su contenido. La primer pregunta que debemos hacernos es que información es relevante para el cliente, pero no solo. Porque su deseos pueden cambiar de un día a otro y debemos siempre estar preparados a esperar lo inesperado. Si agrupamos todos los sitios bajo la misma propiedad, vamos a tener que trabajar duro para recoger datos a nivel regional por idioma o dominio. Si en cambio cada sitio envia sus datos a un propiedad solo suya, nuestro cliente será interesado solo a datos a nivel global. Entonces? Por qué no hacer las dos cosas?

Todos para uno y uno para todos

La idea entonces sería que cada sitio envie la información de analytics a una propiedad solo suya y además a una común para todos los sitios del grupo o empresa. Imaginemos entonces que tenemos los siguientes dominios:

  • super-empresa.com
  • super-empresa.com.ar
  • super-empresa.com.br
  • super-empresa.com.uy

En GA tendremos que crear primero una cuenta destinada a uso esclusivo del cliente. Luego, una propiedad (Properties & Apps) por cada uno de los dominios y uno más donde tendremos todos los dominios. Para esta última, será importante crear un filtro que se ocupe de agregar el dominio a cada página. En las primeras no es necesario ya que son de uso exclusivo de cada dominio.

Crear filtro en GA para agregar el dominio a las páginas

En la administración de GA seleccionamos la propiedad global y seleccionamos filtros (filters). Agregamos un nuevo de tipo avanzado donde crearemos dos variables o campos. Una será el hostname y la otra será la request uri. Concatenando ambas variables obtendremos la información completa en cada visita.

Los filtros son muy útiles, no solo para alterar la información que está recibiendo GA, si no también para excluir visitas, ya sea por ip o por dominio.

Cross-domain

Qué pasa si un usuario entra a uno de los sitios del grupo y a través de un link interno accede al sitio dedicado a su posición? GA guarda el ID del visitante dentro una cookie. Si este visitante cambia de dominio, los datos guardados en la cookie original no podrán ser leidos por el nuevo dominio. Para preservar el ID del cliente durante su neurótica visita a través de los distintos dominios necesitamos modificar ligeramente el código JS de GA. Con Drupal 7 esto es super simple, basta visitar admin/config/system/googleanalytics seleccionar multiple top-level domains e ingresar en el campo list of top-level domains la lista de los distintos dominios.

Configuración de GA en Drupal para multiples dominios

Usar más de una propiedad GA en Drupal 7

El módulo de Google Analytics para Drupal 7 nos deja ingresar solo un ID de propiedad (y bien que hace). Para enviar el pageview también a otra propiedad, es suficiente agregar dos líneas de javascript en el campo Code snippet (after) dentro las opciones avanzadas.

ga('create', 'UA-XXXXXXXX-X', 'auto', 'grsTracker');
ga('grsTracker.send', 'pageview');

Enviar un TAG de Google Tag Manager a dos propiedades distintas de Google Analytics

Como ya tenemos las visitas a nuestras páginas en dos propiedades de GA ahora no estaría nada mal hacer lo mismo con los eventos o tags cargados a través de Google Tag Manager. Para lograrlo esto, el mecanismo es el siguiente: A la variable de tipo Google Analytics Settings agregamos un campo dentro more settings → fields to set que ejecute un código JS. 

Lo primero de todo es crear una variable de tipo custom javascript con el siguiente código (todo el mérito para Simo Ahava) y luego agregamos esta variable como campo personalizado en la configuración de Google Analytics.

function() {
	// console.log('Running customTask function...');
	// Replace newTrackingIds value with the UA property to which you want to duplicate this tag
	var newTrackingIds = ['UA-XXXXXXXX-X'];

	var globalSendTaskName = '_' + newTrackingIds[0] + '_originalSendTask';
	return function (customModel) {
		try {
			// console.log('Running customTask created function...');
			window[globalSendTaskName] = window[globalSendTaskName] || customModel.get('sendHitTask');

			customModel.set('sendHitTask', function (sendModel) {
				// console.log('Running `sendHitTask`...');

				var hitPayload = sendModel.get('hitPayload');
				var trackingId = new RegExp(sendModel.get('trackingId'), 'gi');
				window[globalSendTaskName](sendModel);

				for (var i = 0; i < newTrackingIds.length; i++) {
					var newTrackingId = newTrackingIds[i];
					// console.log('Set hitPayload on ' + newTrackingId);
					sendModel.set('hitPayload', hitPayload.replace(trackingId, newTrackingId), true);
					window[globalSendTaskName](sendModel);
				}
			});
		} catch (e) {
			console.log('Error running customTask function within Google Tag Manager.');
		}
	};
}

Campo personalizado en GTM