Sat. Oct 5th, 2024

Enviar evento y dimensión personalizada si se está ejecutando el experimento de Google Optimize


Me gusta mucho Google OptimizeTiene una interfaz de usuario bastante intuitiva, configurar experimentos es fácil y hay integraciones para ambos. Administrador de etiquetas de Google y Análisis de Google integrado en el sistema. Sigue siendo una herramienta de prueba A/B del lado del cliente basada en JavaScript, por lo que los problemas con el parpadeo y la carga asincrónica están siempre presentes (aunque esto se mitiga un poco con el fragmento que oculta la página).

Un problema con la integración de Google Analytics es la dificultad de crear segmentos para sesiones en las que los usuarios participaron activamente en el experimento. De hecho, no hay ninguna señal específica en Google Analytics que te indique AHORA El usuario está “experimentando” un experimento. Encontrará la Nombre del experimento y Identificación del experimento Dimensiones, sí, pero tienen un inconveniente:

El Nombre del experimento y Identificación del experimento Las dimensiones son de ámbito de usuario ¡durante la duración del experimento!

Entonces, si el usuario participa en un experimento, todos sus accesos y sesiones desde ese momento hasta que el experimento finalice se anotarán con los valores de Nombre del experimento e ID del experimento.

Pero quiero saber exactamente y solo Las sesiones en las que mis usuarios vieron el contenido del experimento. Quiero usar esta información para crear segmentos en los que pueda ver otros objetivos de conversión o embudos distintos de los configurados en Optimize. Esto es cada vez más importante si desea utilizar Optimize para algunas pruebas de concepto de personalización rápidas, ya que entonces es important saber cómo reaccionó el usuario durante la sesión cuando vio el cambio en el contenido.

De todos modos, para que todo esto funcione con el enrarecido… análisis.js fragmento y Administrador de etiquetas de GoogleUsaremos una característica sobre la que rara vez he escrito: customTask. Vale, ya he escrito sobre ello. infinidad.

Con customTaskPodemos agregar automáticamente una dimensión personalizada con alcance de sesión a todos los resultados que participaron en un experimento y, en algunos casos extremos, también enviaremos un evento a GA para asegurarnos de que los datos se transfieran.


incógnita


El boletín informativo de Simmer

Suscríbete a la Boletín informativo de Simmer ¡Para recibir las últimas noticias y contenidos de Simo Ahava en tu bandeja de entrada de correo electrónico!

Cómo funciona

Cuando llegas a una página donde se está ejecutando un experimento de Optimize (es decir, la página es (uno de) los objetivos del experimento), tus visitas de Google Analytics contendrán lo siguiente: &exp parámetro con un valor que consta de todos los identificadores de experimentos y variantes en los que participa el usuario:

Esta clave es lo que GA utiliza para atribuir el usuario a estos experimentos en specific. Por lo tanto, una vez que ese resultado llega a GA, mi ID de cliente se asociará con esos dos ID de experimento hasta que el experimento finalice.

Ahora, lo que realmente quiero que suceda es que se agregue una dimensión personalizada a esa visita a la página si tiene la &exp clave. Para esto, necesito usar customTask para que pueda rastrear las solicitudes a Google Analytics y, en caso de que contengan esta clave, agregar dinámicamente el parámetro de dimensión personalizada con la cadena del experimento. ¡De esa manera, enviaré los datos del experimento a Google Analytics correctamente en la dimensión personalizada que elija!

Si estas usando Administrador de etiquetas de Google Para implementar Google Optimize, se aplicará el mismo código, pero en lugar de aprovechar un hit de Vista de página, la etiqueta Optimize utilizará un código especial. hitType === 'information' hit, que lleva los datos de tu experimento a GA.

Desafortunadamente para nosotros, esto information El tipo de hit no está expuesto en Google Analytics, por lo que no podemos usarlo para segmentar a nuestros visitantes, ni tampoco sirve de nada combinarlo con una dimensión personalizada. Por lo tanto, debemos configurar Google Tag Supervisor para que envíe un evento Cuando un information Se encuentra un golpe que también tiene el &exp parámetro con él.

Implementar mediante analytics.js

Si estás usando el análisis.js fragmento, esto es lo que debes hacer:

<script>
  // Analytics.js snippet
  (perform(i,s,o,g,r,a,m)perform(),i(r).l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)(0);a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
)(window,doc,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXXX-Y','auto')

  // NEW: Add customTask discipline to tracker
  ga('set', 'customTask',  perform(mannequin) {

    // Change this to the Customized Dimension index to which you wish to ship the experiment information!
    var customDimensionIndex = '6';
    
    // Ensure that the brand new hit is barely generated as soon as (thanks Vibhor Jain!)
    var hasNewHitBeenGenerated = false;
    
    var globalSendTaskName = '_' + mannequin.get('trackingId') + '_sendHitTask';
    
    var originalSendTask = window(globalSendTaskName) = window(globalSendTaskName) || mannequin.get('sendHitTask');
    
    mannequin.set('sendHitTask', perform(sendModel) {
      var ga = window(window('GoogleAnalyticsObject'));
      var hitPayload = sendModel.get('hitPayload');
      if (sendModel.get('exp')) {
        if (sendModel.get('hitType') === 'information' && !hasNewHitBeenGenerated) {
          var tracker = sendModel.get('identify');
          originalSendTask(sendModel);
          ga(tracker + '.ship', 'occasion', 'Optimize', sendModel.get('exp'), {nonInteraction: true});
          hasNewHitBeenGenerated = true;
          return;
        }
        if (hitPayload.indexOf('&cd' + customDimensionIndex + '=') === -1) {
          sendModel.set('hitPayload', hitPayload + '&cd' + customDimensionIndex + '=' + sendModel.get('exp'), true);
        }
      }
      originalSendTask(sendModel);
    });
  });
  // NEW BLOCK ENDS

  ga('require', 'GTM-XXXXXX');
  ga('ship', 'pageview');
script>

El cambio al fragmento de código analytics.js modificado por Optimize authentic es el bloque completo que comienza con // NEW:... y terminando con // NEW BLOCK ENDS.

Este código escucha todos los hits de GA enviados con el rastreador predeterminado y, si tienen el &exp parámetro, entonces la dimensión personalizada se agrega dinámicamente a los resultados, junto con la cadena de identificación del experimento con la que está asociado el usuario. Tenga en cuenta que debe cambiar el valor de var customDimensionIndex para reflejar el índice de dimensión personalizada que ha creado en Google Analytics. Prefiero utilizar un Dimensión personalizada con ámbito de sesiónpero también puedes usar hit-scoped para una mayor granularidad.

Eso es todo lo que necesitas hacer con análisis.jsEn las páginas que no están incluidas en el experimento, no se envía ninguna dimensión personalizada ni ningún hit adicional. Las operaciones seguirán como siempre.

Implementar a través de Google Tag Supervisor

En Google Tag Supervisor, debes crear una nueva Variable de JavaScript personalizaday dale un nombre como {{JS – customTask – Optimizar experimento}}La variable debería verse así:

perform() {
  return perform(mannequin) {
    
    // Change this to the Customized Dimension index to which you wish to ship the experiment information!
    var customDimensionIndex = '6';

    // Ensure that the brand new hit is barely generated as soon as (thanks Vibhor Jain!)
    var hasNewHitBeenGenerated = false;
    
    var globalSendTaskName = '_' + mannequin.get('trackingId') + '_sendHitTask';
    
    var originalSendTask = window(globalSendTaskName) = window(globalSendTaskName) || mannequin.get('sendHitTask');

    mannequin.set('sendHitTask', perform(sendModel) {
      var ga = window(window('GoogleAnalyticsObject'));
      var hitPayload = sendModel.get('hitPayload');
      if (sendModel.get('exp')) {
        if (sendModel.get('hitType') === 'information' && !hasNewHitBeenGenerated) {
          var tracker = sendModel.get('identify');
          originalSendTask(sendModel);
          ga(tracker + '.ship', 'occasion', 'Optimize', sendModel.get('exp'), {nonInteraction: true});
          hasNewHitBeenGenerated = true;
          return;
        }
        if (hitPayload.indexOf('&cd' + customDimensionIndex + '=') === -1) {
          sendModel.set('hitPayload', hitPayload + '&cd' + customDimensionIndex + '=' + sendModel.get('exp'), true);
        }
      }
      originalSendTask(sendModel);
    });
  };
}

Es prácticamente exactamente el mismo código que usarías en el análisis.js.

Luego, ve a tu Google Optimize etiqueta y desplácese hacia abajo hasta Campos a configurar. Agregue un nuevo campo con:

Nombre del campo: Tarea personalizada
Valor: {{JS – customTask – Optimizar experimento}}

Para que se vea así:

Y eso debería ser todo. Ahora, cuando navegues por las páginas de experimentos, deberías ver un resultado con el tipo 'information' siendo enviado, e inmediatamente después ocurre un evento que se ve así:

Resumen

Realmente me gustaría que la integración de Optimize y Google Analytics nos diera un resultado o una dimensión que pudiéramos usar para segmentar las sesiones que participaron activamente en un experimento. En este momento, o bien necesitas replicar las condiciones de prueba en un segmento (y si tomas una muestra de solo una parte de tus visitantes, ni siquiera esto será suficiente) o usar una solución como la que se describe en este artículo.

Incluso si esto fuera superfluo e innecesario, estoy emocionado de mostrar otro caso de uso interesante para customTaskEstoy bastante segura de que si no le hubiéramos dado ya a nuestro bebé un nombre precioso, el mundo lo habría conocido como Tarea personalizada AhavaPor ahora, tendrá que conformarse con su apodo. Así de mucho lo quiero. customTask!

Related Post

Leave a Reply

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