Google Analytics registra muchos tipos de datos predeterminados asociados a una página web, como la URL o el título, pero también permite registrar cualquier otro dato que necesitemos a través de las dimensiones personalizadas. Estas dimensiones las podemos utilizar para registrar la fecha de publicación de un post, su autor o las categorías a las que pertenece, por poner tan solo algunos ejemplos.

En este post vamos a ver específicamente como utilizar las dimensiones personalizadas para registrar las categorías de WordPress asociadas a los posts y como crear informes y análisis por categorías. En este caso concreto de categorías, los grupos de contenido de Google Analytics son un concepto que encaja mucho mejor que las dimensiones personalizadas, pero tras mucho probar, he encontrado bastante más útil el uso de dimensiones personalizadas.

Definir la dimensión personalizada

Las dimensiones personalizadas se crean a nivel de propiedad. Para crearlas entramos al panel de administración de Google Suite Analytics y seleccionamos la cuenta y propiedad deseada. Entre las opciones disponibles para la propiedad, seleccionamos “Definiciones personalizadas > dimensiones personalizadas” y pulsamos el botón “Dimensión personalizada nueva”.

En la pantalla que aparece solo es necesario añadir el nombre deseado para la dimensión. En este caso, “Categoría” parece un nombre más que evidente. El ámbito lo dejamos en “Hit”.

Crear dimensión personalizada
Crear dimensión personalizada en Google Suite Analytics

El código de ejemplo para usar que ofrece la propia interfaz de GA es aglo así:

var dimensionValue = 'SOME_DIMENSION_VALUE';
ga('set', 'dimension3', dimensionValue);

Fíjate en la segunda línea, es el nombre o key de la dimensión. En este caso es dimension3. Google Analytics crea este identificador de forma automática por orden de creación: dimension1, dimension2, etc. Si no tenías ninguna, esta sería la primera y recibirá el identificador dimension1.

Para utilizar la dimensión personalizada, el código anterior se debe colocar antes de enviar el hit de pageview, por ejemplo:

ga('create', 'UA-XXXXXXXX-X', 'auto');
ga('set', 'dimension3', 'Deportes');
ga('send', 'pageview');

Con el nuevo gtag:

gtag('set', {'category': 'Deportes'});
gtag('config', 'UA-XXXXXXXX-X', {
    'custom_map': {'dimension3': 'category'}
});

Implementar en WordPress

Este paso es muy sencillo. Basta añadir el código anterior en el action wp_head estableciendo el valor de la dimensión personalizada igual al nombre de la categoría del post actual:

add_action( 'wp_head', 'cyb_add_google_analytics' );
function cyb_add_google_analytics() {
    ?>
    <script>
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
            (i[r].q=i[r].q||[]).push(arguments)},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,document,'script','//www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-XXXXXXXX-X', 'auto');
 
        <?php if( is_singular( 'post') ) {
 
            $postid = get_queried_object_id();
            $categories = get_the_category( $postid );
            ?>
            ga('set', 'dimension3', <?php echo json_encode( $categories[0]->name ); ?>);
 
        <?php } ?>
 
        ga('send', 'pageview');
 
    </script>
    <?php
}

O con el nuevo gtag:

add_action( 'wp_head', 'cyb_add_google_analytics' );
function cyb_add_google_analytics() {

    $dimensions = [];
    ?>
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXX-X"></script>
    <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());
 
        <?php if( is_singular( 'post') ) {
 
            $postid = get_queried_object_id();
            $categories = get_the_category( $postid );
 
            $dimensions['category'] = $categories[0]->name;
 
        } ?>
 
        gtag('set', <?php echo json_encode( $dimensions ); ?> );
        gtag('config', 'UA-XXXXXXXX-X', {
            'custom_map': {
                'dimension3': 'category'
             }
        });

    </script>
    <?php
}

Si utilizas el plugin AMP para WordPress, puedes hacer el tracking de categorías de este modo:

add_filter( 'amp_post_template_analytics', 'cyb_amp_add_google_analytics' );
function cyb_amp_add_google_analytics( $analytics ) {

  if ( ! is_array( $analytics ) ) {
    $analytics = array();
  }
 
  $postid = get_queried_object_id();
  $categories = get_the_category( $postid );
 
  // Ver https://developers.google.com/analytics/devguides/collection/amp-analytics/
  $analytics['cyb-googleanalytics'] = array(
    'type' => 'googleanalytics',
    'config_data' => array(
      'vars' => array(
        'account' => "UA-XXXXXXX-X"
      ),
      'extraUrlParams' => array(
        // cambia cd3 por cdX donde X es
        // el índice de tu dimensión personalizada
        'cd3' => $categories[0]->name
      ),
      'triggers' => array(
        'trackPageview' => array(
          'on' => 'visible',
          'request' => 'pageview'
        ),
      ),
    ),
  );

  return $analytics;
 
}

Este ejemplo añade solo la primera categoría encontrada para el post ($categories[0]->name). Si utilizas múltiples categorías por post, la cosa se complica un poco, ya que una dimensión personalizada no puede tener múltiples valores.

Una solución bastante habitual es añadir todas las categorías separadas por coma (u otro carácter) en un mismo string; no me parece óptima pero puede ser válida, pero la verdad que no es mi caso y no he investigado mucho el tema. En este artículo sugieren una solución combinando dimensiones y métricas personalizadas, por si os es de interés.

Informes y vistas por categoría

Ahora viene lo interesante, crear informes para ver el tráfico en cada categoría. Podemos crear un informe personalizado, por ejemplo, “Sesiones por categoría”. Vamos a “Personalización > Informes personalizados > Nuevo informe personalizado”. En el grupo de métricas seleccionamos las que deseemos, en este caso “Sesiones”, y en el desglose de dimensiones seleccionamos la dimensión personalizada correspondiente a las categorías:

Crear informe de sesiones por categoría
Crear informe personalizado

Y así podríamos tener un informe con esta pinta:

Informe de sesiones por categoría
Informe de sesiones por categoría

Y todavía más interesante son las vistas dedicadas a cada categoría. Todo un panel de Google Analytics para cada categoría. En el administrador, seleccionamos la propiedad deseada y en el desplegable de “Vistas” pulsamos en “Crear nueva vista”. Básicamente es darle un nombre, elegir una zona horaria para los informes y poco más.

Una vez creada la vista, la seleccionamos y vamos a los filtros. Aquí se pueden elegir varios métodos. Yo he elegido un tipo de filtro personalizado, opción “incluir” y en el campo de filtro buscamos nuestra dimensión personalizada para las categorías. En el patrón de filtro ponemos el nombre de la categoría que se debe incluir y listo. También se pueden utilizar expresiones regulares.

Filtro para vista en Google Analytics
Crear un filtro en la vista de cada categoría

Y ahora ya sí, tendremos acceso a todo tipo de datos del tráfico en cada una de las categorías. Podremos ver todos los datos de audiencia, adquisición, comportamiento, conversiones, monetización, eventos ….. todo lo que ofrece Google Analytics pero dedicado a cada una de las categorías que tengamos en WordPress.

Selección de vistas en Google Analytics
Selección de vistas en Google Analytics