Luchando contra el (not provided): añadir la keyword potenciada a nuestro Analytics

Siguiendo con la serie de artículos sobre implementaciones en Google Analytics para poder mejorar nuestro reporting SEO, y tras tratar el tema sobre cómo capturar las posiciones en google para keywords y landings, ahora le toca a un sistema con el que mejorar nuestros datos sobre keywords, especialmente sobre las famosas keywords «(not provided)».

Ejemplo keywords (not provided) en Analytics

Cómo luchar contra el (not provided)

Recordemos que las keywords «(not provided)» son aquellas que Google nos oculta de su referrer cuando el usuario navega por una versión del buscador en «https» (usuarios logados, búsquedas desde algunos navegadores, etc). Estas keywords ocultas son uno de los motivos fundamentales por los que muchos nos estamos viendo obligados a dejar de lado el análisis keyword centrista. Puedes ver la introducción que hice sobre este tema en el pasado eShow. Sobre esta base, en este artículo intentaremos mejorar un poco el registro de keywords «(not provided)» en nuestro Google Analytics para trabajar con más herramientas de las que solemos hacerlo de forma sencilla.

Un nuevo indicador: la Keyword Potenciada

Una de las primeras diferenciaciones que tenemos que hacer para poder lidiar con nuestra nueva visión del reporting SEO es la keyword potenciada. Recordemos que lo que hacemos es buscar un análisis basado en landings (páginas de aterrizaje) y, por lo tanto, necesitamos asociar distintas informaciones útiles a estas landings.

Una de estas informaciones, seguramente la más importante para que todo acabe teniendo sentido, es la keyword potenciada. Esta viene a representar aquella keyword por la que se están haciendo los esfuerzos en SEO para posicionar la página. Partimos de la idea de que si bien los usuarios llegan a cada una de nuestras webs a partir de infinidad de keywords exactas diferentes, la keyword que nosotros estamos trabajando en realidad es única, porque esa es la única forma que existe a día de hoy de poder conseguir una optimización suficiente en On Page y en Off Page de nuestras páginas: optimizamos hacia una única keyword y esta nos trae tráfico de varias keywords reales (derivadas de esta primera).

Así pues la keyword potenciada parte de una premisa clara:

Cada página (URL exacta) intenta posicionarse por una keyword exacta. Esa es la keyword que potenciamos.

Partiendo de esta asociación, tenemos muchas opciones distintas a nuestro alcance para incluirla en Analytics, como: variables personalizadas, títulos de página, eventos, etc.

Pero todas estas ideas acaban siendo poco prácticas y, a la hora de trabajar con nuestros informes, nos encontramos con distintas trabas para extraer ciertas informaciones. Y es que realmente las keywords deben estar en su sitio: en las campañas y a ser posible en la propia dimensión de keywords de Analytics.

Así que lo que vamos a ver a continuación, son distintas formas por las que incluir en Analytics la Keyword potenciada asociada a nuestras variables de campaña y en especial a las propias keywords que ya existen.

El sistema de Ben Alvord

Ben Alvort publicó en 2013 en SeoMoz, un estupendo post sobre cómo sobreescribir las keywords de Analytics que nosotros queramos que fueran visitas «(not provided)». Me hizo llegar su artículo por Twitter y la verdad es que desde entonces he estado trabajando en distintas formas e implementaciones que parten de su idea inicial.

🔗 Overwriting (not provided) Keywords with Inferred Keywords in Google Analytics

Una idea realmente genial y que funciona. Él la presenta como un simple archivo javascript que podemos incluir en nuestras páginas y que ante una visita de Google con «(not provided)» busca en un listado de URLs que nosotros le habremos definido previamente y, si la página actual está entre ellas, sustituye el «(not provided)» por lo que ahí aparezca.

La base es perfecta y lo importante de las ideas es justo eso. Pero en su forma de aplicarlo, para mi, había algunos detalles que terminar de ajustar.

  • Por un lado, cargar un archivo entero para Analytics resulta incómodo. No me parece mal cuando realizas muchos cambios en el tracking por defecto que hace la herramienta, pero solo para un añadido me parece excesivo.
  • Por otro, no resulta práctico tener que usar un listado de URLs: a la que tengas una web medianamente grande se hace imposible mantenerlo. No puedes ir cargando un javascript con un listado de cientos o miles de URLs. Necesitamos algo más automático.
  • Por último, y como él mismo anunció en su post, este método sobrescribe las keywords reales para todos los perfiles de Google Analytics por lo que, si lo aplicas, no podrás tener ningún perfil con los datos reales que debería haber capturado Analytics. Pierdes la visión de la realidad, algo que es peligroso.

1. Capturando la keyword potenciada solo en visitas «(not provided)».

Para solucionar todos estos problemas, pero basándome en la misma idea, he creado un nuevo script que para mis intereses resulta mucho más práctico y que permite llevarlo a la realidad sin demasiado esfuerzo. No digo que sea mejor ni peor que el de Ben, simplemente es un poco distinto y a mi me resulta más claro y simple de implementar.

Este script tiene algunas características nuevas:

  • Por un lado, vamos a acortar el script todo lo posible, evitando funciones y variables innecesarias, lo cual lo hará más difícil de leer, pero más manejable.
  • Vamos a evitar el listado de URLs, sacando con jquery los datos del propio HTML, lo que implica que deberás tener ciertos conocimientos de javascript para evitar saturar la carga de la web.
  • Por último, si bien vamos a modificar lo que captura Analytics, vamos a incluir el nuevo contenido de forma que nos permita disponer de un perfil con datos originales.

1.1. Definiendo la variable de keyword potenciada.

Como decíamos, necesitamos esta keyword potenciada disponible para poder capturarla en Analytics. Por suerte, si nuestro SEO es medianamente decente esta keyword debería estar escrita tal cual en un gran número de partes de nuestro HTML (sino, poco podremos estar posicionando). Así que lo único que necesitamos es algún framework javascript que nos ayude a recoger la variable de la parte del HTML que deseemos.

Os doy distintas opciones para rescatar la keyword potenciada de la propia página con jquery:

La keyword potenciada es el propio title de la página
var enhancedKeyword = $('title').html();
La keyword potenciada es el title de la página hasta cierto carácter que añade texto al final

Por ejemplo en titles con formato «title | Mi blog»

var sepCharacter = '|';

var enhancedKeyword = $(‘title’).html().split(sepCharacter)[0];

La keyword potenciada es el title de la página pero a partir cierto carácter pues hemos añadido texto al principio

Por ejemplo en titles con formato «title | Mi blog»

var sepCharacter = '|';

var enhancedKeyword = $(‘title’).html().split(sepCharacter)[1];

Hemos creado una etiqueta meta-title con la keyword exacta
var enhancedKeyword = $('meta[name="title"]').attr('content');
Hemos usado el meta-keywords y la keyword potenciada es la primera keyword que ahí aparece
var enhancedKeyword = $('meta[name="keywords"]').attr('content').split(',')[0];
Hemos usado el meta-description y la keyword potenciada es la primera frase que ahí aparece
var enhancedKeyword = $('meta[name="description"]').attr('content').split('.')[0];
La keyword es el H1 de la página
var enhancedKeyword = $('h1').html();
El programador nos ha añadido la keyword a un atributo del body de la página
...

var enhancedKeyword = $(‘bodt’).data(‘kw’);

Etc…

Vemos que se trata solo de tener un poco de control con el javascript (o de pedirle un favor a ese coleguita que todos tenemos siempre a mano). Con este, sacamos de cualquier parte fija del HTML nuestra keyword potenciada. A partir de que la tenemos recogida y definida como variable, ya podemos trabajar sin esos listados de URLs tan grandes.

1.2. Reescribiendo el referrer de Analytics, solo en el caso de que la keyword actual sea «(not provided)».

Para esto, nos bastará con copiar el siguiente código…

  • Al final de la página,
  • después de crear la variable enhacedKeyword.
  • y antes de la llamada a Analytics (si llamamos a _trackPageview antes de incluir este código no sucederá nada).

📢 La situación es importante: si lo incluimos antes de las propias etiquetas que contienen la keyword potenciada, javascript no podrá recogerlas (no estamos en el onReady); si lo incluimos tras el propio Analytics, el tracking se enviará antes de que cambiemos nada.

El código:

var enhancedKeyword = /* Tu definición... de donde quieras sacarlo */'';

if (!enhancedKeyword) enhancedKeyword = ‘(not set)’;

if ( (document.referrer.indexOf(«/aclk») == -1 && !document.referrer.match( /[\?&]q=([^&#]+)/gi ) ) && document.referrer.split(«?»)[0].indexOf(«www.google.») != -1 )

{

var newReferrer = document.referrer.split(«?»)[0] + ‘?q=(not provided) ‘ + enhancedKeyword;

_gaq.push([«_setReferrerOverride»,newReferrer]);

}

Vemos que el código es mucho más breve, pues hemos resumido todas las llamadas y evitado funciones que podían ser reemplazadas por llamadas exactas.

Aparte de eso hemos cambiado el comportamiento brevemente.

El código de Ben buscaba la keyword potenciada en la lista de URLs. Si la encontraba sustituía la keyword capturada en Analytics por esta, además siempre la incluía como proveniente de «google.com».

El nuevo código la busca en el HTML. Si no la encuentra, realiza el reemplazo igualmente por «(not set)» para indicarnos que hay páginas en las que no tenemos esa keyword potenciada y luego se realiza el reemplazo, pero manteniendo al principio de la keyword el «(not provided)».

Mantener el «(not provided)» en la keyword cumple una triple funcionalidad:

  • Por un lado, nos informa de que esa keyword ha sido forzada y no dada por Analytics.
  • Por otro, y ya que no estamos repitiendo el «(not provided)» exacto en todas las keywords, nos permite crear un segmento avanzado o un filtro en Analytics que nos permita seguir viendo qué porcentaje de tráfico «(not provided)» tiene nuestra web (basta con filtrar por: ^(not provided).
  • Por último, nos va a permitir crear perfiles en Analytics que mantengan los datos como estaban hasta ahora…

1.3. Creando perfiles para diferenciar keywords reales y manipuladas.

Como decíamos, es importante poder disponer de un perfil que contenga el tráfico tal cual debería ser capturado sin nuestras manipulaciones. Veamos cómo conseguirlo con este código.

1) Crearemos un nuevo perfil: «Tráfico con KW reales». Ese será el único que tenga el «(not provided)» sin keyword.

2) Crearemos el siguiente filtro avanzado en Google Analytics: (admin>perfiles>filtros)

En el cual:

  • Detectamos si la keyword cumple con la siguiente expresión regular: \(not provided\) (.+)
  • Es decir, es un texto que empieza por «(not provided)» pero tiene algo detrás.
  • En caso de que sea así lo reemplazamos por «(not provided)» otra vez.

En definitiva, este filtro lo que hace es eliminar la keyword añadida que nosotros hemos puesto con el código.

3) Así que lo aplicaremos a todos aquellos perfiles que queramos limpios de este añadido (en nuestro caso al perfil «Tráfico con KW reales».

4) Iremos al informe en tiempo real y provocaremos dos tipos de visitas:

  • Logados en Google o desde «https» buscando nuestra web y clicando.
  • Sin estar logados y vigilando que la URL no empiece por «https» hacemos lo mismo.

Deberemos observar como en los perfiles sin el filtro se captura la keyword manipulada y en el perfil con tráfico filtrado no.

Si todo es correcto, empezaremos a disfrutar de datos más ricos en keywords.

2. Demos un paso más: almacenando siempre la keyword potenciada

Este sistema es genial para poder seguir realizando análisis de keywords como lo hacíamos hasta ahora. Hemos quitado un poco del desastre que nos provocaba el «(not provided)» pero no nos enfoca directamente hacia el análisis por landings o simplemente hacia un análisis donde las keywords potenciadas tengan un papel más importante que simples suplentes del «(not provided)».

Para este análisis basado en landings, tendremos que seguir observando las keywords desde las distintas landings de nuestra web, tengan o no «(not provided)». Por lo tanto el siguiente paso que hay que atreverse a dar es el de lidiar siempre, exista o no «(not provided)», con la keyword potenciada: es decir, incluirla como parte de nuestra keyword aunque ya dispongamos de la real.

Para ello, lo que haremos será dar dos pasos más:

1) Cambiaremos el código para enviar siempre «[keyword] @ [Keyword potenciada]» como keyword. Lo cual sigue siendo correcto pues nos informará no sólo desde que keyword llega el usuario sino que, además, por cuál apostábamos nosotros en SEO.

2) Cambiaremos nuestros perfiles para poder tener un perfil limpio de la keyword potenciada, es decir, tal cual se capturaban los datos hasta ahora. Veremos, además, que podremos hacer todo lo contrario y disponer también de un perfil libre de las keywords reales.

2.1. El código para indicar siempre la keyword potenciada:

var enhancedKeyword = /* Tu definición */'';

if (!enhancedKeyword) enhancedKeyword = ‘(not set)’;

var regex = /[\?&]q=([^&#]+)/gi;

var q = regex.exec( document.referrer );

q = ( q == null) ? ‘(not provided)’ : q[1];

if ( document.referrer.indexOf(«/aclk») == -1 && document.referrer.split(«?»)[0].indexOf(«www.google.») != -1 )

{

var newReferrer = document.referrer.split(«?»)[0] + ‘?q=’ + q + ‘ @ ‘ + enhancedKeyword;

_gaq.push([«_setReferrerOverride»,newReferrer]);

}

Este código se implementa exactamente igual que el anterior, definiendo antes la variable enhacedKeyword, y copiándolo antes de la propia llamada a Analytics, pero guardará la keyword de una forma distinta a como lo hacía antes.

2.2. Los perfiles para filtrar datos

Como antes, querremos tener perfiles con distintos tipos de datos. Ahora las posibilidades se multiplican porque podemos querer tener perfiles con las keywords expresadas de tres formas distintas:

  • [keyword] (dato original)
  • [keyword potenciada]
  • [keyword] @ [keyword potenciada]

Para el último, si hemos incluido bien el código, no hará falta hacer nada. Con no incluir ningún filtro bastará, pues ya estamos enviando así los datos. En cambio, para tener perfiles con los dos primeros serán necesarios dos tipos de filtros distintos: Uno para quitar la keyword real y otro para quitar la keyword potenciada:

Filtro para ver sólo la keyword real:

Filtro para ver sólo la keyword potenciada:

Ambos filtros son bastante sencillos:

  • Indicamos como campo A la expresión regular: (.*) @ (.*)
  • Y elegimos en cada caso qué parte queremos recoger la $A1 es la primera parte (la keyword real) y $A2 la segunda parte (la potenciada)

Una vez creados estos filtros deberemos escoger en cada uno de nuestros perfiles que dato queremos ver, sabiendo que si no incluimos ninguno veremos ambas keywords a la vez.

3. Pero ¿Y si quiero ambos tipos de keywords a la vez pero separadas en dos dimensiones distintas?

Ya en un análisis bastante avanzado podríamos querer guardar ambas keywords (real y potenciada) en dos dimensiones distintas de Analytics. Para eso os recomendaría hacer uso de la dimensión «contenido de campaña» que es el valor que normalmente se llena usando la variable «utm_content» en las campañas de Analytics. Este valor está vacío en el tráfico SEO con lo que podemos fácilmente mover la keyword real o la potenciada a esta variable. En este caso vemos como crear un filtro que desplace la keyword real hacia esta dimensión.

El problema de hacer esto último es que tenemos que empezar a ser un poco intrusivos con Analytics. Empezamos a manipular más cosas que simplemente las keywords y por lo tanto debemos tener un conocimiento bastante amplio de los informes personalizados y saber dónde guardamos cada cosa. Deberemos crear nuestros propios informes que desglosen keywords de los dos tipos y, sobre todo, tener cuidado con otros buscadores pues recordemos que con este código solo estamos manipulando las keywords para Google.

Dicho esto, también es cierto que si te manejas con soltura entre dimensiones y métricas, no lo dudes, 2 dimensiones siempre son mejores que una 😉

Conclusión: Distintas metodologías, escoge la que mejor se adapte a tu forma de trabajar

Durante este post hemos visto distintos pasos que dar para conseguir siempre un mismo objetivos:

Añadir la keyword potenciada a nuestros informes de keywords para, mediante perfiles, poder trabajar con menos influencia del efecto «(not provided)» en nuestra web.

Ninguna de las soluciones presentadas es definitiva. Simplemente, cada una presenta los datos de una forma distinta, por lo que deberías escoger aquella que mejor se adapte a tu forma principal de trabajar:

  • Si sigues anclado en los informes por keywords y solo necesitas deshacer un poco el efecto del «(not provided)», la solución en formato «(not provided) [keyword potenciada]» y solo para visitas «(not provided)» será tu opción.
  • Si trabajas en un modelo landing-centrista, y empiezas a dar más importancia a las keywords potenciadas que a las propias keywords, la opción de incluir ambas a la vez en el parámetro keyword será tu mejor aliada.
  • Por último, si tu forma de trabajar es tan avanzada que sabes cómo sacarás partido a los distintos tipos de keywords por separado, el añadido de mover la keyword real al «utm_content» será la opción más versátil.
  • Para todo lo intermedio tenemos infinidad de posibilidades con los perfiles con filtros avanzados. Solo se trata de pensar y aplicar la solución correcta.

¡Mucha suerte! Y no dudéis en contarme vuestra experiencia con los distintos códigos.

Iñaki Huerta
CEO de IKAUE

Director de IKAUE. Analista Digital y SEO hace más de 15 años. Internet Lover, Creador de Hilillos y DataHacker.

También te puede interesar

¡Suscríbete!

RECIBE NUESTRA NEWSLETTER

Registrar nueva cuenta

IKAUE MARKETING ONLINE, S.L. es la Responsable del Tratamiento de tus datos, con la finalidad de gestionar tu registro y remitirte nuestra Newsletter con las últimas novedades y/o promociones. Tienes derecho de acceso, rectificación, supresión, limitación, oposición al tratamiento y portabilidad. Puedes ejercitar tus derechos [email protected]. Más información en la Política de privacidad.