Author: David Vallejo

  • Tracking Disqus activity with Google Tag Manager

    Today we’re starting a new serie of posts about how to track things with Google Tag Manager en Inside-GTM. So this time we’re going to learn how we can measure our visitors interactions with the Disqus Comments System.

    The posts are going to be structured this way:

    • Tracking Flow: Definition about the Definiremos que pasos vamos a seguir para poder realizar la medición
    • Tags, Rules and Macros: Here you will be able to see the screenshots about the tags, rules and Macros configuration.
    • Source Code: Here you’ll be able to copy the current javascript code used in Tags and Macros.

    Tracking Flow

    1. We’ll chjeck that the current page is really using  Disqus ( we don’t want to fire the tag if it’s not present! )
    2. We’ll wait till the page has been fully loaded before firing the Tag ( gtm.load )
    3. If 1 and 2 are already true, we will fire the tracking tag.

    Tags, Rules and Macros

    Disqus needs to have the callbacks defined before it loads. That’s is something that we can’t control in some cases, so in order to have it working in all cases, We are using Disqus API to reload their iframe with our new callbacks configuration when the page has been loaded. We are going to track for now new comments, when a visitor uses the pagination and when an users logs in into Disqus. After the visitos performs any of those actions we’re pushing the needed data to the dataLayer so we can configure a Event Tag to send that info to Google Analytics.

    Tag

    disqus_tracking_tag

    Rule

    In this case we’re going to use just one rule, that will need to match 2 conditions:

    1. Current page must be fully loaded ( gtm.load Event )
    2. Current page needs to have Disqus iframe loaded and available within the page’s DOM. ( We’re using a Macro to gather this info. This Macro is defined in the next post section  )
    tracking_disqus_rule

    Macros

    Finally we’re going to create a new Macro ( the one we were using as a condition on the tag firing rule ) , that will return “true” if Disqus iframe is available on the page DOM’s.

    isDisqusAvailableMacro

    So now, everytime that a visitors leaves a comment , or performs any of the defined actions, our dataLayer will populated with that interaction data. We just need to fire an event based on the info available in the dataLayer.

    Source Code:

    function()
    {
        // Let's see if disqus embed iframe is available on the DOM, We don't want
        // to fire it in pages where it is not available
        var iframes = document.getElementsByTagName('iframe');
        for (var i = 0; i < iframes.length; i++) { if(iframes[i].src.indexOf('//disqus.com/embed/comments/')>-1)
               return true;
        }
    }
    
  • Trackeando los comentarios en Disqus with Google Tag Manager

    Vamos a empezar una serie de posts regulares sobre cómo medir cosas con Google Tag Manager en Inside-GTM. En este caso vamos a aprender cómo
    medir las interacciones de los usuarios en nuestra web, si en ella disponemos del sistema de comentarios Disqus.

    Los posts se van a basar en la siguiente estructura:

    • Tracking Flow: Definiremos que pasos vamos a seguir para poder realizar la medición
    • Etiquetas, Reglas y Macros: Aquí se explicarán y mostrarán capturas de las configuraciones necesarias en nuestro contenedos
    • Código Fuente: Se mostrará el código fuente utilizado en las macros y etiquetas para que sea posible copiarlo, cosa que no sería posible desde las capturas de pantalla.

    Tracking Flow

    1. Comprobar que disqus está disponible en la página.
    2. Esperar a que la página se haya cargado completamente ( gtm.load )
    3. Lanzar el Tag de medición.

    Etiqueta, Reglas y Macros

    Disqus necesita disponer de la definición de los callbacks antes de que este sea cargado, es decir deberíamos tenerlo definido, antes de que el script
    este cargado en la página. En muchas situacion esto no es posible por lo que utilizando el propio API de la herramienta vamos a definir los callbacks que se ejecutarán cuando los usuarios hagan un comentario, páginen o cuando se logeen. Lo que vamos a hacer es lanzar un push al dataLayer con la información de la acción del usuario, para después a través de Google Tag Manager poder lanzar un evento.

    Etiqueta

    disqus_tracking_tag

    Reglas

    Tan solo vamos a utilizar una regla, que se va a encargar de lanzar nuestra etiqueta cuando sucedan dos cosas:

    1. Que la página haya sido completamente cargada ( gtm.load )
    2. Qué la página actual tenga el script del embed de Disqus cargado. ( Para sacar esta información utilizaremos una Macro )
    tracking_disqus_rule

    Macros

    Y por último vamos a configurar una macro que nos va a devolver “true” en el caso de que el iframe del widget the Disqus esté disponible y cargado actualmente en el DOM de la página.

    isDisqusAvailableMacro

    De está forma tan solo nos quedará configurar un tag de evento, y recoger las variables desde el dataLayer para enviar la información necesaria a Google Analytics.

    Código Fuente:

    function()
    {
        // Let's see if disqus embed iframe is available on the DOM, We don't want
        // to fire it in pages where it is not available
        var iframes = document.getElementsByTagName('iframe');
        for (var i = 0; i < iframes.length; i++) {
                 if(iframes[i].src.indexOf('//disqus.com/embed/comments/')>-1)
               return true;
        }
    }
    
  • Enviando una copia local de los hits de Universal Analytics

    En muchas ocasiones por mucho que intentemos debuggear nuestras implementaciones, estas pueden fallar en algunas situaciones pues la cantidad de casuísticas que se pueden generar del lado del cliente pueden ser infinitas.

    Con urchin.js y ga.js podríamos decirle a Google Analytics que enviase una copia de los hits de forma local,  lo cual nos podía ayudar a ver todos los hits que se estaban envíando para poder ver si por algún motivo en una transacción no se estaban envíando de forma correcta todos los valores necesarios, o porqué en algúnas situaciones los datos no se están registrando como nosotros esperamos.

    Para hacer esto vamos a utilizar las tareas ( “tasks” ) del API de Universal Analytics.

    Cada vez que se utiliza el comando “send” , analytics.js ejecuta una serie de tareas para validar, construir y enviar el hit en base a protocolo de medicion ( “measurement protocol” ).

    De acuerdo con la información publicada por Google, las siguiente table muestra las tareas actuales que ejecuta Universal Analytics    a medida que se va cargando . Estas tareas se ejecutan en el orden en el que se muestran en la tabla.

    Nombre TareaDescripción
    previewTaskAborta el hit, si tan solo se está renderizando la página para el ‘Top Sites’ de Safari.
    checkProtocolTaskAborta el hit si el protocolo no es http(s).
    validationTaskAborta el hit si los campos requeridos no son válidos .
    checkStorageTaskAborts el hit si analytics.js está fijado para utilizar cookies y estás no están disponibles en el navegador del usuario.
    historyImportTaskImporta la information de las cookies __utm* para preservar el historial del usuario durante la migración a Unviersal Analytics.
    samplerTaskEstá función se encargar de filtrar los hits de forma aleatoría en base al valor de “sampleRate“.
    buildHitTaskConstruye el its y lo almacena en el campo “hitPayload“.
    sendHitTaskEnvía el hit, con el payload almacenado en el campo “hitPayload“.
    timingTaskGenera el hit del SiteSpeed en base al sample rate fijado en “siteSpeedSampleRate“.

    Por lo tanto, en nuestro caso, vamos a sobreescribir la tarea “sendHitTask” para enviar una copia local de los hits,  y utilizaremos el valor del campo “hitPayload” para contruir nuestro hit local.

    A continuación, os muestro un pequeño snippet, donde podréis ver como realizar esto 🙂

    ga('create', 'UA-XXXXXXX-YY', 'auto');
    ga(function(tracker) {
        // Vamos a guardar la referencia a la funcion original que envía los hits 
        var originalSendHitTask = tracker.get('sendHitTask');
        // Modificamos la funcion sendHitTask para // enviar una copia local después de haber envíado
        // el hit a los servidores de Google Analytics
        tracker.set('sendHitTask', function(model) {
            // Vamos a recuperar los valores del payload,
            // para después añadirlos a nuestro hit local. 
            var payLoad = model.get('hitPayload');
            // Aquí envíamos le hit original generado por analytics.js
            originalSendHitTask(model);
            // Vamos a enviar una copia del hit a nuestro propio servidor 
            var i = new Image(1, 1);
            i.src = "/__utm.gif" + "?" + payLoad;
            i.onload = function() {
                return;
            }
        });
    });
    ga('send', 'pageview');

    Una vez que pongáis este código, esto es lo que sucederá al cargar vuestras páginas:

    local_hits_universal_analytics

    De esta forma podremos tener una copia local de los hits que se envien desde los navegadores de nuestros usuarios, bien para intentar buscar algún fallo en nuestras implementaciones,  o si queremos saber si realmente Google Analytics procesa correctamente nuestras visitas 😉

  • Nueva herramienta para probar tus filtros de Google Analytics

    Todos sabemos el peligro de jugar con los filtros de los perfiles ( ahora llamados vistas ) en Google Analytics, la posibilidad de que los hagamos mal y terminemos con datos con el formato que no queremos o con datos excluidos de forma incorrecta suele ser bastante alta. Además si nos equivocamos no hay manera de echar marcha atrás, los datos de las las horas y o incluso días en los que los filtros hayan estado configurados de manera incorrecta no serán recuperables.

    Para paliar en la manera de lo posible este problema acabamos de publicar en Analytics Debugger ( Herramienta online para depurar implementaciones de Analítica Web ) una nueva funcionalidad que nos deja construir nuestros filtros viendo los resultados en tiempo real.  Es decir podremos ver que datos se estarían capturando según las expresiones regulares que estemos utilizando así como podremos simular como quedarían los campos que estemos sobreescribendo.

    Podéis ver el siguiente video donde se muestra cómo fácilmente podemos probar nuestros filtros y como ver en tiempo real el resultado que quedaría registrado en Google Analytics.

    Con este paso Analytics Debugger deja de ser tan solo una herramienta de depurado y añade su primera herramienta que podrán utilizar los analistas para trabajar.  Como hasta ahora esta utilidad es gratuita y podrá ser utilizada por cualquier usuario 🙂

  • Introducción al DataLayer de Google Tag Manager

    Aunque parezca mentira hace ya casi año y medio que Google hizo público su herramienta de Tag Management. Durante todo este tiempo las actualizaciones de la herramienta ha sido continua aunque por desgracia no haya ningún changelog que reflejen los contínuos añadidos que va recibiendo la herramienta.

    Por lo que voy leyendo por ahí, para la gran mayoría de la gente la herramienta no es más que la manera  de moda de configurar Google Analytics ( añado el código de GTM a mi web y añado un tag de pegeview ), sin aprovechar la herramienta lo más mínimo.

    Por ello vamos a hablar del dataLayer , que es como su propio nombre indica una “capa” de datos mediante la cual vamos a pasar los datos a Google Tag Manager ( recordar que todo esto será utilizable también con cualquier otra herramienta de Tag Management ) , para poder interactuar en base a esos datos.

    Así pues el dataLayer no es más que un objeto que contendrá la información ( formato JSON ‘clave’:’valor’ ) que queramos tener accesible desde el Tag Manager.

    Para ellos deberemos inicializarlo antes del tag de Google Tag Manager ( si bien el propio gtm lo inicializará de forma implícita ) de la siguiente manera:

    <script>
      var dataLayer = datalayer || [];
    </script>

    Con esto inicializaremos nuestro objecto tan solo si no lo estaba ya anteriormente, es decir si ya tuviese algún valor en el momento de ejecutarse este código se mantendrían los valores que tenga.

    Por poner un ejemplo ilustrativo de esto pongamos un post de un blog, por ejemplo este mismo post

    <script>
    dataLayer.push({
        'categoria' : 'Google Analytics',
        'titulo' : 'Introducción al dataLayer de Google Tag Manager',
        'autor' : 'David Vallejo',
        'fecha' : '2014-02-08',
        'lenguaje' : 'es',
        'logeado': true,
        'event' : 'pageview'
     });
    </script>

    Bien ya tenemos toda la info de la página que se está visualizando, ahora lo que tenemos que hacer es crear macros para poder acceder a los datos disponibles en el dataLayer desde nuestros tags.

    Por lo tanto crearíamos una macro por cada uno de datos que tenemos de la siguiente manera:

    datalayer_macros

    Una vez hecho esto podremos utilizar los datos desde los tags o desde las reglas de la siguiente manera: {{NOMBRE_MACRO}} .

    (more…)
  • Aprende a utilizar el hitCallBack en Universal Analytics

    Ya desde la versión anterior de Google Analytics ( ga.js ), existe una función que si no está muy documentada si que se podría utilizar, estamos hablando del método hitCallback .

    Esta función lo que nos permite ( tal y como claramente indica el nombre de la función es realizar una acción solo y tan solo después de que se haya enviado un hit de forma correcta a los servidores de Google Analytics.

    Desde que se publicó Universal Analytics, esta función es todavía más flexible puesto que nos permite de forma sencilla aplicar está función a cualquier tipo de hit de forma independiente. Seguramente en algúna ocasión habremos leído posts o visto plugins para hacer seguimiento de enlaces salientes ( eventos onClick o onMousedown ), o cuando se envíe un formulario ( evento onSubmit ) , pero a la hora de implementarlos también se nos habrá dado la situación de que tal vez el usuario llegué a la página de destino antes de que se lleguen a enviar los datos de forma correcta a Google Analytics, perdiendo con ellos estos datos.

    Aquí es donde entra en escena la función hitCallback, puesto que nos va a permitir saber cuando se han terminado realmente de enviar los hits y con ello una manera de poder asegurarnos de que siempre se envíen los datos.

    El funcionamiento sería el siguiente:

    1. Paramos la acción por defecto ( bien el click del usuario, o bien por ejemplo la acción de enviar el formulario ).
    2. Enviamos los datos a Universal Analytics.
    3. Utilizamos el hitCallback para una vez que estamos seguros los datos se han enviados continuar con la acción que empezó el usuario.

    Como ejemplo os pongo un pequeño fragmento de código que se encargaría de todo esto, y que os servirá de guía para cualquier otra implementación más avanzada que queráis realizar ( comprobar si el enlace es saliente, etc, etc ). Más abajo comentaremos el script línea por línea:

    <script>
    function doLink(event,href){
    event.preventDefault();
    ga('send', 'pageview', {
    'page': location.pathname,
    'hitCallback': function() {
    location.href = href;
    }
    });
    }
    </script>
    <a href="http://www.google.es/" onClick="doLink(event,this.href);">TEST</a>

    Vamos a comentar paso a paso lo que sucede:

    <a href="http://www.google.es/" onClick="doLink(event,this.href);">TEST</a>

    Aquí tan solo tenemos un enlace ( href ), al cual le estamos diciendo que cualquier un  usuario pinche en el enlace ( evento onclick ), lance la función doLink(), con los parémetros del evento como primer parámetro y en enlace en el cual ha hecho click el usuario. Entonce veamos que pasa después.

    event.preventDefault();

    event.preventDefault(). Lo que va a hacer es detener la acción por defecto que realizaría el nevagador en el evento en cuestión, en este caso el evento sería el click y lo que haría es llevarnos al enlace que tengamos. Pues ahora mismo esto no sucederá y no redigirá al usuario, no nos preocupemos esto lo forzaremos  depués para que el usuario termine yendo a donde marca el enlace 🙂

    ga('send', 'pageview', {
    'page': location.pathname,
    'hitCallback': function() {
    location.href = href;
    }
    });

    Aquí tenemos lo que sería el _trackPageview de toda la vida en formato Universal Analytics. Al estar pasándole unos parámetros deberemos pasarle obligatoriamente el parámetro ‘page’ , o no nos recogerá bien los datos, por ello le pasamos la URI actual del usuario ( location.href ), o bien podríamos incluso personalizarla.

    Y seguido le estamos pasando el hitCallback, ¿qué quiere decir esto? , le estamos diciendo a Universal Analytics, mira cuando hayas enviado el hit de la página vista, haz esto. Por lo tanto una vez los datos se hayan enviado vamos a redigir al usuario a su página de destino.

    Pues es tan sencillo como esto, de esta forma, el usuario no se redigirá al enlace hasta que los datos e hayan enviado correctamente. Por supuesto esto es extrapolable al enviar un evento, social hit, hit de ecommerce, o cualquier otro tipo de hit disponible en Universal Analytics, así como a cualquier otro evento de JavaScript ( Form submits, etc ).

    A partir de ahora podremos estar seguros que los datos se van a enviar cuando el usuario realice una acción concreta.

  • Cómo hacer tracking de la actividad de comentarios en Disqus con Universal Analytics

    Actualmente Disqus goza de una gran aceptación en muchísimas webs, por lo que resulta realmente interesante el hecho de poder enviar eventos a nuestro perfil de Google Analytics para por ejemplo poder medir una micro-conversión cada vez que alguen usuario de nuestra web nos deja un comentario en nuestro Blog.

    disqus

    Disqus es un sistema de comentarios externo, que se puede añadir por ejemplo a nuestro WordPress fácilmente mediante un simple plugin, y permite a los usuarios de nuestra web realizar comentarios logeando a través de Facebook o de Twitter.

    Actualmente Disqus proporciona un sistema de callbacks bastante limitado, este es el listado de callbacks disponible a día de hoy:

                    callbacks: {
                        preData: [],
                        preInit: [],
                        onInit: [],
                        afterRender: [],
                        onReady: [],
                        onNewComment: [],
                        preReset: [],
                        onPaginate: [],
                        onIdentify: []
                    }

    Pero nosotros vamos a utilizar únicamente, los de nuevos comentarios, paginación, identificación. Para lo cual tendramos que añadir el siguiente código a vuestras páginas.

    window.onload = function(){
        if(window.DISQUS){
            DISQUS.reset({
                  reload: true,
                  config: function () {
                  this.callbacks.onNewComment = [function(){ ga('send', 'event', 'Disqus', 'New Comment', window.location.href); }];
                  this.callbacks.onPaginate = [function(e){ ga('send', 'event', 'Disqus', 'Pagination', window.location.href); }];
                  this.callbacks.onPaginate = [function(e){ ga('send', 'event', 'Disqus', 'User Logged', window.location.href); }];
                  }
             });
        }
    };

    Os sugiero que copieis el código directamente desde Github para evitar problemas, podéis acceder al código fuente en la siguiente dirección:

    https://github.com/thyngster/universalanalytics

    La configuración de callbacks se ha de realizar antes de que este se haya cargado, por lo que de forma habitual, deberiamos añadir la configuración antes del código principal de Disqus, sin embargo lo que vamos a hacer es utilizar la función reset para reiniciar Disqus con los nuevos valores. Esto lo hacemos tan solo cuando la página esté totalmenta cargada para ello utilizamos el evento window.onload

    El código actualmente lanza los eventos con el formato de Universal Analytics, pero se puede utilizar sin ningún problema un push al objeto _gaq como se ha hecho siempre para lanzar eventos a Google Analytics

  • Novedades en la herramienta de analítica web AngelFish Software

    No es la primera vez que hablamos de esta herramienta de Analítica Web in-house. Ya sabemos que es

    Una de las opciones más demandadas desde que la primera versión vió la luz, ha sido la disponibilidad de una versión para el sistema operativo Windows. Pues bien el mes pasado sacaron la primera versión para esta plataforma, junto con otras muchas más novedades que vamos a comentar a continuación.

    • Versión para sistemas operativos Windows
    • Read logs on UNC paths
    • Google Analytics Upload
    • Default Filters: Include Known Browsers and Exclude SharePoint Content
    • Nuevo asistente para la creación de perfiles
    • Nuevo Report: Stolen Bandwidth.
    • Nuevo Report: Leeching Domains: Averigua que dominios están haciendo hot-linking a tu contenido.
    • Nuevo Reporte: Descargas
    • Nuevo Reporte: Usuarios
    • Opción de poder aplicar filtros directamente a los logs

    Y en los últimos meses han añadido los siguientes nuevos métodos de trackeo.

    • Pass-through Authentication
    • Session ID Tracking
    • Urchin/GA Tracking

    También se han añadido un montón de mejoras tanto en script de tracking como en la interfaz como por ejemplo.

    • Indicador del métido de tracking utilizado
    • Mejorado el detelle de información en el archivo de errores
    • Posibilidad de excluir hits que terminen en /
    • Nuevo formato de logs: NCSA Combined + Cookie
    • Nuevo navegador añadido: Chrome Mobile
    • angelfish.js: Detección de dispositivos móviles
    • Utilidad para resetar el password de administrador
    • Incrementada la eficacia de procesado de logs.
    • Mejorada la velocidad de la interfaz.

    Y muchas más que podréis ver en el changelog.

    Es una buena señal de cómo va avanzando el desarrollo de la herramienta, que recordemos es la única dentro de su categoría después de que Google descontinuara Urchin hace ya más de 1 año. Una opción muy a tener en cuenta para instituciones donde la privacidad de los datos de sus usuarios sea un punto ineludible, ya que recordemos que al tratarse de una herramienta que se instala en nuestros servidor, la información no terminará en manos de terceros, así como ofrece la posibilidad de re-procesar nuestros datos si por algún motivo nuestra información se hubiese visto alterada ( un mal filtro, etc ).

    No cabe olvidar la flexibilidad que ofrece, al poder al través de filtros ( tanto a nivel de perfil como de log ), modificar los datos de los que disponemos, y la abierta posibilidad de formatos de tracking si por algún motivo el utilizar el javascript no fuera posible.

    Sin duda, si eres usuario de Urchin Software, es la opción más recomendable que existe actualmente, ya que incluso te permite la migración de tus datos actuales. Contando con el soporte de una empresa detrás de la herramienta que te permite estar seguro que si tienes algún problema tendrás un soporte al que poder acudir para solucionar tus problemas y asegurarte que la herramienta seguirá aplicando actualizaciones.

    Podéis descargar y probar la herramienta durante un periodo trial, accediendo a la siguiente dirección: http://analytics.angelfishstats.com/trial/ .

    Información: http://analytics.angelfishstats.com/features/

  • Analytics Debugger recibe su primera “gran” actualización

    Hace un tiempo comentaba en este mismo blog que habíamos lanzado una utilidad para auditar implementaciones de analítica web , se trataba de Analytics Debugger .

    La herramienta ha estado funcionando unos meses y esta semana le ha tocado su primera gran actualización. Han sido muchos meses, días y horas, pero ha merecido la pena y por ello estamos contentos, puesto que se trata de un gran paso hacia adelante. La herramienta sigue siendo gratuíta, y para realizar la auditoría de tus páginas sigues sin necesitas nada más que tu navegador consiguiendo toda la información necesaria que de otra manera te llevaría mucho tiempo conseguir y además tenían que invertir tiempo en instalar aplicaciones o plugins externos.

    Han sido muchísimos cambios, en el core de la herramienta, cambios visuales, optimizaciones, nuevas features. Aquí os dejamos el listado de los cambios realizados.

    • Nuevo site con toda la información de la herramienta www.analytics-debugger.com
      ad_new_home
    • Rediseño del interfaz de la herramienta, haciéndola más simple y sencillo de utilizar.
    • Se ha reescrito el motor de depurado, ahora soporta todos los métodos que se pueden utilizar en Google Analytics así como detacta cualquier tipo de hit enviado.
    • Simulación de tag, si utilizas Google Analytics ó Universal Analytics te muestra un tag simulado para que sepas con exactitud como se está ejecutando analytics en tu página.
      ad_sim
    • Se ha añadido soporte de depurado avanzado para Universal Analytics.
    • Se ha añadido un módulo nuevo para poder monitorizar en tiempo real los eventos que se generan en tu página web, por ejemplo al hacer click en un enlace, cuando se hace scroll en la página o cualquiera que sea la implementación que tengas realizada en tu web.
    • A partir de ahora puedes añadir tu web, y Analytics Debugger te avisará diariamente si detecta algún cambio en la configuración de Google Analytics en tu página web,
    • Antes se mostraba tan sólo el último hit envíado por cada herramienta detectada, desde ahora se pueden ver los datos de todos los hits enviados por las herramientas soportadas actualmente.
      ad_hits_debug
    • Mejorado el soporte de errores, cualquier error que tenga tu tag se mostrará, por ejemplo si utilizas llamadas a funciones que ya no son válidas, si utilizas una cadena cuando deberías utilizar un número entero, etc.
      ad_errors
    • Ahora la herramienta está bajo SSL para asegurar la privacidad de tus datos.

    Lo mejor de todo es que estamos encantados de anunciaros es que no vamos a parar aquí, en las próximas semanas habrá muchas más novedades, muchas más herramientas detectadas y quien sabe si alguna otra sorpresa más 🙂

  • Descubre todas las novedades en Piwik 1.12

    Desde hace unas semanas la nueva versión de Piwik 1.12 estaba en beta y acaba de salir de ese estado para ser una versión estable. Esta es la última versión antes de cambiar de rama a la 2.0

    La verdad es que últimamente no hace más que sorprenderme por la rápidez con la que se está acercando a otras herramientas de pago o incluso líderes en el sector.

    Vamos a hacer un repaso por las principales novedades que incluye esta nueva versión:

    Editor de Segmentos Avanzados

    piwik_adv_segments

    Una de las features más esperadas, a partir de ahora podremos segmentar nuestros datos desde la interfaz sin necesidad de recurrir al API para realizar esta acción.

    Widget de visitas en tiempo real y Mejoras en el widget de SEO

    Se ha añadido un widget nuevo para que lo agregemos a nuestro dashboard que nos dirá los usuarios y acciones en nuestra web en tiempo real. Así como se ha mejorado widget de SEO, que ahora nos da dos métricas desde Majestic SEO, la cantidad de backlinks a nuestro sitio, así como la cantidad de dominios que nos enlazan.

    piwik_real_time_seo

    Detección de dispositivos móviles

    Con la colaboración de clearcode.cc a partir de ahora Piwik detectará los dispositivos móviles. Esta función estará disponible por defecto a partir de la version 2.0, pero la podemos activar si queremos de forma manual desde el menú de plugins.

    Detección de dispositivos en Piwik
    Detección de dispositivos en Piwik

    Actualización de Proveedores

    Se ha aprovechado para actualizar el listado de proveedores.

    piwik_providers

    Customize the background/text/axis color of graphs.

    También podremos a partir de ahora personalizar el color del fondo, del texto y de los axis de los gráficos.

    piwik_graphs_colors

     
    Desde esta versión podremos enviar junto a nuestras peticiones los parémetros de latitud y longitud de la siguiente manera:

    _paq.push(['appendToTrackingUrl', 'lat=X&long=Y']);

    Incluye además muchísimas mejoras en cuanto al API se refiere. Podéis ver todos los cambios en la siguiente dirección:
    http://piwik.org/blog/2013/05/last-piwik-1-x-release-v1-12-new-features-api-improvements-screenshots/