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 :)

 

 

 


Zeokathace Hace más de 5 años y 65 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)".

Errioxahace Hace más de 5 años y 65 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

Contacta

Lánzate y pregunta!


He leído y acepto la política de privacidad

Mecagoenlos.com te informa que los datos de carácter personal que nos proporciones rellenando el presente formulario serán tratados por Lino Uruñuela. como responsable de esta web.

La finalidad de la recogida y tratamiento de los datos personales que te solicitamos es para enviar un correo con los datos que introduzcas, sin guardarse en ninguna base de datos.

Legitimación: Al marcar la casilla de aceptación, estás dando tu legítimo consentimiento para que tus datos sean tratados conforme a las finalidades de este formulario descritas en la política de privacidad.

Como usuario e interesado te informamos que los datos que nos facilitas estarán ubicados en los servidores de Linode.com (proveedor de hosting de Mecagoenlos.com) cumpliendo la ley de protección de datos. Ver política de privacidad de Linode.com.

Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en info@mecagoenlos.com, así como el derecho a presentar una reclamación ante una autoridad de control. Más información aquí.

Últimos posts

Últimos comentarios


Fran Javietr

Hola Lino como podemos añadir a este código la identificación de la ip del bot, como sabes hay falsos bots y una forma de saber si son l
Post: Monotorizar GoogleBot con Google Analytics

Javier

Buenas Lino, ¿Alguna novedad sobre cómo considera Google los links en PDFs? Se me ocurre que, siguiendo con este experimento, se po
Post: Link building con PDF

Francisco

Flaco. Por lo general, no dejo comentarios pero, en tu caso, voy a hacer una excepción pues, sencillamente... ¡sos un genio!, Gracias.
Post: Cómo cargar css y js y no bloquear la carga de contenido

Juan Francisco Gancia

Excelente artículo, gracias! Te encuentro de casualidad por un post de hace 10 años.
Post: Diferencias entre url indexada y url accesible

Lino Urnuela

@Emirodgar gracias! Pero parece que en tema de imágenes las pilla lo hagas cómo lo hagas parece, eso sí, siempre que no tengas un fall
Post: Indexar imágenes en Google usando Lazy Load

Emirodgar

Muy interesante el experimento. Yo estaba probando con los nuevos formatos webp y pero al final, como eran pocas imágenes y usaba Masonry,
Post: Indexar imágenes en Google usando Lazy Load

Lino Uruñuela

Completamente de acuerdo :) Pero en este experimento solo quería comprobar el método usado para hacer lazy load, en este caso con xmlht
Post: Indexar imágenes en Google usando Lazy Load

Francisco Morales

Lino muy interesante las distintas formas de cargar la imagen. Pero no crees que lo realmente interesante de aplicar Lazy Loading es cargar
Post: Indexar imágenes en Google usando Lazy Load

javier

Buenas , esto del onclik ha cambiado actuamente en algunas web que tengo las lee y sigue enlaces
Post: ¿Cómo ejecuta, interpreta e indexa Google el contenido cargado mediante javascript?

David Girona

Antes de Nada muchas gracias por la aportación. Estoy probando de poner en marcha este procedimiento y me surgen un par de dudas. En
Post: Cómo añadir el valor del meta Robots a Google Analytics via Google Tag Manager