Cambiar el nombre del objeto ga

Hay casos en los que se quiere añadir analytics.js a la página, pero la variable ga ya se está usando con otro fin. En esta situación, analytics.js proporciona un mecanismo para cambiar el nombre del objeto ga global.

Cambiar el nombre del objeto global

La etiqueta de Google Analytics permite cambiar el nombre del objeto ga global modificando el parámetro final aprobado en la función minificada. También deberás actualizar todas las invocaciones de la cola de comandos y cambiar ga() por otro nombre que elijas.

Por ejemplo, si quieres cambiar el nombre del objeto ga a analytics, puedes modificar la etiqueta de la siguiente manera:

<!-- 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','analytics');

analytics('create', 'UA-XXXXX-Y', 'auto');
analytics('send', 'pageview');
</script>
<!-- End Google Analytics -->

Cambiar manualmente el nombre del objeto global

El nombre del objeto global se puede cambiar porque analytics.js, cuando se carga, busca una cadena almacenada en una variable global llamada GoogleAnalyticsObject. Si la encuentra, utiliza el nombre de la cadena como nuevo nombre de la cola de comandos global.

Por ejemplo, si estás utilizando el método $.getScript de jQuery para cargar analytics.js, puedes cambiar el nombre del objeto global por el siguiente código:

<script>
// Instructs analytics.js to use the name `analytics`.
window.GoogleAnalyticsObject = 'analytics';

// Use jQuery to load analytics.js.
$.getScript('//www.google-analytics.com/analytics.js', function() {

  // Creates a tracker and sends a pageview using the renamed command queue.
  analytics('create', 'UA-12345-1', 'auto');
  analytics('send', 'pageview');
});
</script>

La etiqueta asíncrona alternativa

A diferencia de la etiqueta estándar de Google Analytics, la etiqueta asíncrona alternativa no permite cambiar el nombre del objeto ga global de forma predeterminada.

Sin embargo, con la técnica descrita anteriormente, puedes cambiar el nombre del objeto global ga y seguir disfrutando de las ventajas de precarga del la etiqueta asíncrona alternativa.

La siguiente versión modificada de la etiqueta asíncrona alternativa asigna el valor analytics a la variable GoogleAnalyticsObject y cambia el nombre de todas las instancias de ga por analytics:

<!-- Google Analytics -->
<script>

// Instructs analytics.js to use the name `analytics`.
window.GoogleAnalyticsObject = 'analytics';

// Creates an initial analytics() function.
// The queued commands will be executed once analytics.js loads.
window.analytics = window.analytics || function() {
  (analytics.q = analytics.q || []).push(arguments)
};

// Sets the time (as an integer) this tag was executed.
// Used for timing hits.
analytics.l = +new Date;

// Creates a default analytics object with automatic cookie domain configuration.
analytics('create', 'UA-12345-1', 'auto');

// Sends a pageview hit from the analytics object just created.
analytics('send', 'pageview');
</script>

<!-- Sets the `async` attribute to load the script asynchronously. -->
<script async src='//www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->