Cómo obtener la fuente en Universal Analytics sin cookie utmz

Publicado el 19 de agosto del, 2014

Hace ya "bastante" que salió a la luz Universal Analytics y ya nos ha dado tiempo a descubrir sus pros y sus contras con respecto a la anterior versión de Google Analytics. Y sí, también tiene contras, bastantes además, y es sobre uno de estos puntos sobre el que vamos a hablar hoy.

Si bien es cierto que Universal Analytics presenta grandes mejoras frente al viejo código, como pueden ser tener 20 dimensiones personalizadas en vez de 5, agrupación de contenido, importación de datos offline, seguimiento de usuarios en distintos dispositivos, Measurement Protocol (para mi es lo más divertido y funcional), etc, también es muy cierto que tiene sus contras, y casi todos los puntos negativos que veo en Universal Analytics tienen que ver con la información sobre la fuente de los usuarios y sus datos relacionados.

Ya sabemos desde hace mucho que las Keywords están desapareciendo de nuestros sistemas de métricas, Google argumenta que por la privacidad, pero no sólo es por eso si no ¿por qué los muestra en los informes de AdWords? el usuario es el mismo, y su privacidad es la misma, pero claro, detrás de esto hay otros intereses, perdón!, otro interés, el de siempre.. el dinero.

¿Quién es el más beneficiado de que no sepamos las KWs por las que llegan nuestros usuarios? seguro que sin pensar y por inercia ya lo has adivinado... Google. Y es que aunque no nos la de a nosotros, Google sí la utiliza para sus intereses, como puede ser ofrecer visibilidad sobre estas KWs SÓLO a sus clientes de AdWords. Que me cuenten lo que quieran, pero mientras los clientes de AdWords sigan viendo esas KWs en sus informes la privacidad de los usuarios es una hipocresía, realmente usa ese argumento para justificarse y seguir quedando bien.

Una de las costumbres que yo tenía (y tengo) en mis proyectos es trackear yo mismo las  KWs por las que llegan los usuarios, aunque como hemos dicho, algún día llegarán a desaparecer, por lo que debemos asumirlo y resignarnos. Y otro dato que siempre me ha gustado trackear de manera interna es la fuente por la que llegan los usuarios, para así almacenarlo en una cookie y poder luego saber cuál fue la fuente por la que llegó el usuario que luego realizó una acción como una venta o una petición de formulario..

Antes esto era muy sencillo, ya que si tenías Google Analytics, con una simple consulta a la cookie utmz podías obtener la fuente por la que había llegado, y anotarlo en tu base de datos o donde quisieras una vez que el usuario realizara el objetivo que tú quieres sin necesidad de programarte nada más, pero esto con Universal Analytics se acabó. Ahora sólo puedes acceder al clientID de Universal Analytics, un identificador de usuario, y nada más. Está claro que Google guarda los datos que antes guardaba en la cookie, pero ahora lo guarda en su sistema y esto conlleva muchos dolores de cabeza para hacer cosas que antes nos parecía de lo más útil y sencillo.

Pongamos un ejemplo, un usuario llega a un site y rellena un formulario de contacto y lo envia para pedir información, días después un comercial le llama y le convence para que compre nuestro producto, el comercial anota y realiza el pedido a través del CRM y se lo manda sin que el usuario tenga que volver a entrar en la web. ¿Cómo podemos saber con Universal Analytics la fuente de cada venta realizada por los comerciales? Pues como dirían algunos, hay que liarla parda en la empresa para hacerlo....

Y es que una de las nuevas funcioalidades de Universal Analytics es que pudes importar datos de las ventas offline en Analytics y así poder tener estos datos de ventas offline en tus informes, pero claro, para esto posiblemente tengas que cambiar muchas cosas  en tu CRM para adaptarlo a Universal Analytics. Sí... hasta esto hemos llegado, a modifcar nuestro CRM tal y como Google nos lo dice para obtener un dato que antes podríamos trackear fácilmente mirando la cookie _utmz, y enviándola al comercial o al CRM para que quede grabado y así saber la fuente de cada venta offline, aunque es verdad que estos datos no podías integrarlos en Analytics al menos sí podías, por lo menos, saberlo en tu sistema.

Universal Analytics sólo nos ofrece un Id de usuario, que se genera aleatoriamente y no podemos consultar desde javascript la fuente u otros datos que recolecta analytics.

Es lo que nos pasa en el ejemplo del envio de los formularios de contacto que hemos comentado antes, ya no podemos saber la fuente, ni la KW para guardar en nuestro CRM estos datos y conocer para cada venta que hizo un comercial llamando por teléfono que fuente originó el contacto, y es un dato muy importante.

Para solucionar esto tenemos varias opciones, unas más complejas y que conllevan otros muchos desarrollos como es la carga de datos offline, o la propia generación de los datos a enviar a Analytics por medio de  Measurement Protocol, y otras más sencillas que aunque no ideales, deberían funcionar igual de bien.


Método mediante dimensiones personalizadas en Google Analytics


  1. Creando una dimensión personalizada, donde meteremos el clientID que analytics nos proporciona al cargarlo, a esta dimensión la llamaremos “cid”, pongamos que es la tercera que creamos en nuestra configuración.


    La función para obtener este id es
    <script language="javascript">
    ga(function(tracker) {
    var clientId = tracker.get('clientId');
    });
    </script>    

    Y cuando el usuario haga el envio se añadirá también al envio de Analytics el valor para la dimensión 3
    ga('set', {
    Así que podemos o usar Google   dimension1: 'VALOR_RECOGIDO_DEL_FORM_CAMPO_clientID'
    }
  2. En elCRM  deberemos de tener registro de este envio de formularios, donde uno de los campos será este clientId obtenido de Analytics.
  3. El comercial algún día consultará en el CRM a quién llamar, y hará una llamada al usuario que realizó la petición de información, y si completa la transacción, en el envio a Analytics de los datos de esta transacción, le pondremos como  parámetro "cid" el que abremos obtenido en nuestro CRM porque ya había sido almacenado cuando aquel usuario envió el formulario de contacto. Así atribuimos a aquel usuario esta nueva transacción y por lo tanto a esta transacción tendrá como fuente la misma que el usuario que hizo la petición de información.

 

Método trackeo interno mediante JavaScript y cookies.

Para tener un mínimo tracking interno de la fuente por la que llegan los usuarios podemos usar javascript y cookies de manera que sepamos la fuente cuando este usuario haga alguna acción que queramos medir, por ejemplo el envio de un formulario y su posterior transacción por parte del comercial.

Para ello he cogido una función que analiza cuando el usuario tiene referer y es de Google analizamos el parámetro ved para saber que tipo de resultado es.


Además ya aprovechamos para introducir unas variables personalizadas para saber otros datos que nos pudieran parecer interesantes.




La teoría del proceso

  • Cuando llega un usuario se comprueba si tiene dos cookies

    MiReferencia: Esta coockie alamacenará la url de referencia por la que llegó, así podemos analizar y comprobar la url exacta de referencia

    trackInterno: Esta cookie la usaremos para obtener la fuente y medio en base la la ruta de referencia por la que llegó el usuario la primera vez, y le asignaeremos uno de estos valores

     'Google: normal (universal) search result',
    'Google: normal result thumbnail (e.g. for an application, recipe, etc.)',
    'Google: normal result thumbnail (e.g. for an application, recipe, etc.)',
    'Google: sitelink',
    'Google: one-line sitelink',
    'Google: breadcrumb',
    'Google: “Jump to” link',
    'Google: more results link (listed mainly for Q&A websites)',
    'Google: local search result',
    'Google: local search result marker pin icon',
    'Google: dictionary definition link',
    'Google: blog search result',
    'Google: book search result',
    'Google: book search result thumbnail',
    'Google: book search result author link',
    'Google: image search result in basic image search / universal search',
    'Google: image search result [probably not in use any more]',
    'Google: image search result (thumbnail)',
    'Google: image search result preview title link',
    'Google: image search result preview grey website link underneath title',
    'Google: image search result preview thumbnail',
    'Google: image search result preview “View image” link',
    'Google: image search result preview “Visit page” link',
    'Google: in-depth article result',
    'Google: in-depth article result thumbnail',
    'Google: map search result',
    'Google: map search result website link',
    'Google: map search result thumbnail',

    'Google: news result',
    'Google: news result thumbnail',
    'Google: news result video thumbnail',
    'Google: news sub-result (i.e. the same story from a different site)',
    'Google: patent result',
    'Google: patent result thumbnail',
    'Google: patent result “Overview” / “Related” / “Discuss” link',
    'Google: shopping search result',
    'Google: video result',
    'Google: video result thumbnail',
    'Google: authorship thumbnail link',
    'Google: authorship “by [author]” link',
    'Google: knowledge graph link',
    'Google: knowledge graph main image',
    'Google: knowledge graph repeated sub-link (e.g. album track listing)',
    'Google: adword (i.e. sponsored search result)',
    'Google: adword sitelink',
    'Google: adword one-line sitelink',
    'Google: sponsored shopping result (main column of universal search)',
    'Google: sponsored shopping result thumbnail (main column of universal search)',
    'Google: sponsored shopping result (right column of universal search)',
    'Google: sponsored shopping result thumbnail (right column of universal search)'


    Si viene desde Google identificaremos además en que tipo de resultado hizo click en las serps. Esto se obtiene a partir del parámetro “ved” que muchas veces pasa Google. Es un parámetro codificado en base64 y que ha sido completamente destripado :)

    Estas cookies tendrán una duración de 2 meses, al igual que tengo yo configuración de Analytics.

  • Creamos dos dimensiones personalizadas, una para cada cookie, en mi caso para las dos cookies antes explicadas las he llamado trackInternoy MiReferenciay tienen en el administrador de analytics  los índices 7 y 8 respectivamente.



Los valores que se ponen en estas cookies son en base a la url de referencia que pasa el navegador.  Al analizar esta url de referencia comprobamos si viene de alguno de los buscadores identificados por Google como “organic” (me he basado en la misma lista), si no pertenece a ese grupo pero lleva otro referer lo marcaré como tráfico de referencia y si no lleva nada será “Direct”.

También identifico si tiene el parámetro gcliden la url para saber si viene de AdWords, aunque aun no lo enlazo para saber los datos de esa campaña, ser podría hacer, y si no lleva ese parámetro me fijo si en el referer tiene el parámetro adck que también es el usado por Google para enlazar los anuncios.



Cómo hacer esto en 5 pasos

 

  1. Descarga el archivo ver_analytics.js, botón derecho del ratón y darle a "Guardar enlace como".
  2. Súbelo a tu servidor.
  3. Crea desde el administrador de Analytics las dos dimensiones personalizadas y llámalas trackInterno y MiReferencia


    Dimensiones personalizadas


  4. Fíajte en el número de la columna índice, y los sustiyes luego en el código donde pone "dimension7: readCookie('MiReferencia')," y "dimension8: readCookie('trackInterno')"

    dimensiones

  5. Copia este código y sustituye el texto en rojo por los datos de tu dominio y cuenta de analytics.
     *Para los que tengáis tuneados y sepáis un poco cómo va todo esto, os marco en verde las líneas a añadir a vuestro código.

 

<script type="text/javascript" src="midominio.com/ved_analytics.js"></script>

<script language="javascript">

    compruebaCookie();

  (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', 'XX-XXXXX-X', {
       'cookieDomain': 'midominio.com'
    });
   
    ga('set', {           
        dimension7: readCookie('MiReferencia'),
        dimension8: readCookie('trackInterno')
        });
  
  ga('send', 'pageview');   

</script>



Con esto obtendremos en Analytics informes de este tipo

 

trackInterno 
Universal analytics track sources

 

 


MiReferencia 

 

¿Cómo obtener este valor para usarlo en un formulario?

Si queremos enviar estos datos en el envio de un formulario sólo tendrás que crear el campo en tu formulario y cargar el valor llamando a las funciones readCookie('trackInterno')readCookie('MiReferencia') desde javascript y listo :)

Ahora cuando guardemos los datos de contacto del formulario en nuestro CRM también guardaremos la fuente que devuelve la función readCookie('trackInterno') y  el tipo de resultado readCookie('MiReferencia')  por la que ha llegado ese usuario. Cuando el comercial realice la transacción ya tendremos esta fuente por la que entró el "ya cliente" y exactamene con que url lo hizo (si nos lo ofrece el navegador).



¿Y si queremos ver en Analyticsla fuente de la venta que hizo el comercial por teléfono?

Si también queremos verlo representado en Analytics tendremos que realizar también el paso 1, para asociar el usuario real a esta venta, aunque eso por la nueva política de cookies es ilegal ya que no se puede asociar ese clientID a datos personales, cosa que sí harás si guardas su mail o su teléfono.

Si lo quieres hacer totalmente legal no tedrás más remedio que usar la importación de datos de Universal Analytics... pero ese ya es otro post,  recomiendo leer este artículo de Iñaki Huerta que lo explica muy bien :)

 

PD: Creo que todo está correcto, quizás me haya confundido en algo crear el post, pero si no os funcionase decídmelo :)

 

 

 


Zeokat (@)hace Hace más de 9 años y 214 días

Buen tutorial, algo complejo para los que no dominamos analitycs tan a fondo pero bueno, aprender es bueno :P

Me preguntaba sino sabrias de alguna forma de obtener la palabra clave del tráfico orgánico, que ahora Google nos pone un bonito "(not provided)".

Errioxa (@)hace Hace más de 9 años y 214 días

@Zeokat no, es imposible saberlo si Google no quiere dártelo, al servidor le llega cierta información mediante el referer, y si Google no pasa la KW es imposible

Sobre el tema de que es demasiado complicado, el segundo método está listo para que descargues el fichero js, y añadas lo verde a tu código de analytics y funcionará solo :)



Lea otros artículos de Google Analytics

Últimos posts

Últimos comentarios


JaviLazaro
Ya me has dado la necesidad de crear un comaando en bash para hacer estas cosas. Gracias Lino por estos tips
Post: Obtener KWs de varias fuentes usando la línea de comandos

Señor Muñoz
Lino, el 11% más de clicks y el 47% más de impresiones diarias ¿es algo constante o depende de cada sitio web?
Post: Diferencias entre la exportación de datos de Search Console usando BigQuery o usando la API

Carlos
Hola En mi blog tengo artículos atemporales (es decir, no caducan nunca, de manera que sirve para quien lo lea hoy o lo lea dentro de 5
Post: Tratamiento de urls que tienen un tiempo de vida muy corto

Profe Ray
Veo que hay comentarios de hace 5 años y de hace 3 años. ¿Habrá algun post actualizado sobre este tema o sigue funcionando? Lo cierto es
Post: Cómo cargar css y js y no bloquear la carga de contenido

Pepe
Muchas gracias por el articulo!! Muy buena información.
Post: Qué es ofuscar enlaces y cómo mejora el enlazado interno

María
Sí, he buscado el archivo robots.txt y todo está correcto. La última versión vista con error fue el 08/11/2021 y la última vez que el
Post: Errores críticos originados por el robots.txt

Lino
@María un placer verte por aquí :) Lo primero, a veces, con el robots.txt no se puede "forzar" a que lo rastree, si tu site no es muy p
Post: Errores críticos originados por el robots.txt

María
Hola Lino, tengo el mismo problema. El probador de robots de google me indica: "Error al obtener el archivo robots.txt Tienes un archivo ro
Post: Errores críticos originados por el robots.txt

Mario
Estoy tratando de vincular los datos en Google Data Studio y he combinado los datos de la tabla "Impresión del sitio" con "Impresión de UR
Post: Datos incoherentes y cálculo de la posición media en Search Console

José B. Moreno Suárez
Yo hace tiempo que agrupaba con stemmers. Ahora, además, comparo con un proceso las keywords que aportan impresiones a una URL determinada
Post: Clustering de keywords SEO en Google Search Console - Parte II