SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
for Developers
for Developers
@brunobar79
Analytics
Lo  que  pensamos  los  programadores…
• Herramienta  de  Marke.ng

• SEO  

• E-­‐commerce  

• Publicidad  (Adsense  /  Adwords)

• Social  Media
Analytics
Lo  que  no  todos  saben…
• Velocidad  del  si.o

• Browser  Info  

• Mobile  Stats

• Alertas

• Eventos
Tracking Code
Tracking Code (ga.js)
El  más  u.lizado:  
<script type="text/javascript">!

!

  var _gaq = _gaq || [];!
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);!
  _gaq.push(['_trackPageview']);!

!

  (function() {!
    var ga = document.createElement('script'); ga.type = 'text/
javascript'; ga.async = true;!
    ga.src = ('https:' == document.location.protocol ? 'https://
ssl' : 'http://www') + '.google-analytics.com/ga.js';!
    var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);!
  })();!

!

</script>!
Universal Analytics (analytics.js)
El  nuevo  código:  
<!-- 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','ga');!

!

ga('create', 'UA-XXXX-Y');!
ga('send', 'pageview');!

!

</script>!
<!-- End Google Analytics -->!
Universal Analytics (analytics.js)
Ventajas
•   Script  mejorado  (ej.  plugins)  
•   Protocolo  de  Medición  (HTTP  Requests)  
•   Mejoras  en  reportes  (Dimensiones  custom)

•   User-­‐Centric  Approach
Desventajas  
•     Cambió  toda  la  sintaxis!    
Eventos
Eventos
Permite   registrar   la   interacción   del   usuario   con  
determinados  elementos  de  la  web

Ejemplos

•      Ajax  Callbacks  
•      Descargas  de  archivos  
•      Tracking  de  enlaces,  por  ejemplo  de  salida  
•    Interacción  con  diferentes    botones  
•    Cualquier  otro  evento  JS  
Eventos
Tienen  4  parámetros:
•  Categoría

•  Acción

•  E.queta

•  Valor

Estructura  del  código  Javascript  (versión  clásica)

_gaq.push(['_trackEvent','category','ac.on','label_opt',  value_opt]);
Estructura  del  código  Javascript  (versión  universal  analy8cs)  

ga('send','event',category,  ac.on,  label_opt,  value_opt);
Eventos
Los  reportes  se  encuentran  en  
Menu  ::  Comportamiento  ::  Eventos
Error Tracking
Tracking de Errores JS
¿Por qué?
•  Demasiados  navegadores

•  Somos  devs  (Los  peores  testers  del  mundo)  
!

•  Para  el  backend  hay  logs,  para  el  frontend  no  


•  Lleva  5  minutos  implementarlo!  
!
!
Tracking de Errores JS
¿Cómo?
•  Capturando  el  evento  window.onerror  
window.onerror = function(message, url, linenumber) {
alert("JavaScript error: " + message + " en línea " +
linenumber + " de " + url);
}

•  Recibe  3  argumentos:  

    message:    Mensaje  de  error  o  excepción  
url:  La  url  del  archivo  que  con.ene  el  error  
linenumber:    La  línea  donde  ocurrió  el  error



Tracking de Errores JS
¿Cómo  lo  registramos  en  Analy<cs?  
  •  Lanzando  un  evento  con  Google  Analy.cs  
!

    Version  clásica  (ga.js)  
!

window.onerror = function(message, url, linenumber) {
! _gaq.push(['_trackEvent','JS  ERROR',message,url  +  ':'  +  linenumber]);

}
!

!

    Version  universal  analy8cs  (analy8cs.js)

window.onerror = function(message, url, linenumber) {
          ga('send','event',  'JS  ERROR',message,url  +  ':'  +  linenumber);  
}
Tracking de Errores 404
¿Cómo  lo  registramos  en  Analy<cs?  
Con  una  pág.  404  propia  podemos  saber  

desde  donde  viene  el  link  mal  apuntado.  
!
Ejemplo

window.onload = function(){
!var referrer = document.referrer!=""?"Referrer:"+document.referrer:null;
gaq.push(["_trackEvent","ERROR 404”,"Not found:"+location.href,referrer]);
}!

!
Tracking de Errores 500
¿Cómo  lo  registramos  en  Analy<cs?  
Con  una  pág.  500  propia  debemos:  
• Retornar  el  error  en  el  html  como  un  String  en    js  
• Usar  ese  String  como  parámetro  del  evento  
!
Ejemplo

window.onload = function(){
!var referrer = document.referrer!=""?"Referrer:"+document.referrer:null;
var data = ["_trackEvent",

"ERROR 500”,
!
”<?php echo ($error_data); ?>”,
referrer];
!
_gaq.push(data);

!

}
Tracking de Errores
VENTAJAS  
• Podemos  ver  desde  donde  vino  el  usuario  
• Cual  fue  el  error  
• En  que  archivo  y  línea  
• Con  que  Browser,    Versión  y    S.O.  



!
!
!

#PRICELESS  
Tracking de Errores
EJEMPLOS
Alertas
Alertas
GAP.js
GAP.js
¿Qué  es?    
Wrapper  en  Javascript,  autodetecta  la  versión,  
provee  una  API  única.  
Ventajas  
!•  Evitamos  manejar  la  sintaxis  de  las  2  versiones  


• Cambiar  de  versión  es  transparente  
•  El  trackeo  de  errores  es  MUY  fácil!  
•  No  depende  de  ninguna  librería  (ej.  jQuery)  
•  Es  crossbrowser
GAP.js
Ejemplos:  
  -­‐  Asignando  un  evento  a  un  link    (  crossbrowser  )  
      
    Código  Javascript  

!
!GAP.track.addListener(document.getElementById("btn"),'click',!
function(){!
! GAP.track.event('buttons','btn','top-menu',1);!
});!
!
!
!
GAP.js
Ejemplos:  
  -­‐  Asignando  un  evento  a  un  link  con  data-­‐akributes  
!
    Código  Javascript  
      GAP.track.element('click',document.getElementById("link"));!

!
!
    !Código  HTML  
<a href="http://aa.com" data-ga-category="Event-cat" data-ga!action="my action" data-ga-label="some label" data-ga!value="1" id=”link”>my link!</a>
!
GAP.js
Ejemplos:  
  -­‐  Asignando  un  evento  a  todos  los  elementos    con

      data-­‐akributes  u.lizando  jQuery  
      
    !Código  Javascript  
!

$("[data-ga-category]").each(function(e){!
!
GAP.track.element("click",this);!
});!
!

!
    !Código  HTML  
<a href="http://aa.com" data-ga-category="Event-cat" data-gaaction="my action" data-ga-label="some label" data-gavalue="1" id=”link”>my link!</a>
GAP.js
Ejemplos:  
Tracking  de  errores  javascript  
    
!
    Código  Javascript  
!
!
GAP.track.errors();
!
!
GAP.js

#DEMO    
Links

  

GAP.js:    bit.ly/GAPdotJS        


GA  Debugger:    bit.ly/GADebugger    
!

Slides:    bit.ly/GA4DEVS  
¿Preguntas?
We are hiring!
CakePHP + jQuery
Part time & Remote

bruno@thehackerway.co
¡Gracias!

Weitere ähnliche Inhalte

Ähnlich wie Google Analytics para Desarrolladores

Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Fátima Casaú Pérez
 
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
nacho mascort
 
Curso Google Analytics cein
Curso Google Analytics ceinCurso Google Analytics cein
Curso Google Analytics cein
Cein
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
cok12v
 

Ähnlich wie Google Analytics para Desarrolladores (20)

Google analytics tuning
Google analytics tuningGoogle analytics tuning
Google analytics tuning
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008
 
Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5
 
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
 
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
 
Web cryptography
Web cryptographyWeb cryptography
Web cryptography
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
Google App Engine1
Google App Engine1Google App Engine1
Google App Engine1
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Introducción a la analítica web - Menorca 2013
Introducción a la analítica web - Menorca 2013Introducción a la analítica web - Menorca 2013
Introducción a la analítica web - Menorca 2013
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
Seguridad
SeguridadSeguridad
Seguridad
 
Curso Google Analytics cein
Curso Google Analytics ceinCurso Google Analytics cein
Curso Google Analytics cein
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 
.NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta
.NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta.NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta
.NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta
 
Effective Network Layer: API lovers and Apps
Effective Network Layer: API lovers and AppsEffective Network Layer: API lovers and Apps
Effective Network Layer: API lovers and Apps
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Kürzlich hochgeladen (11)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 

Google Analytics para Desarrolladores

  • 4. Analytics Lo  que  pensamos  los  programadores… • Herramienta  de  Marke.ng
 • SEO  
 • E-­‐commerce  
 • Publicidad  (Adsense  /  Adwords)
 • Social  Media
  • 5.
  • 6. Analytics Lo  que  no  todos  saben… • Velocidad  del  si.o
 • Browser  Info  
 • Mobile  Stats
 • Alertas
 • Eventos
  • 8. Tracking Code (ga.js) El  más  u.lizado:   <script type="text/javascript">! !   var _gaq = _gaq || [];!   _gaq.push(['_setAccount', 'UA-XXXXX-X']);!   _gaq.push(['_trackPageview']);! !   (function() {!     var ga = document.createElement('script'); ga.type = 'text/ javascript'; ga.async = true;!     ga.src = ('https:' == document.location.protocol ? 'https:// ssl' : 'http://www') + '.google-analytics.com/ga.js';!     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);!   })();! ! </script>!
  • 9. Universal Analytics (analytics.js) El  nuevo  código:   <!-- 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','ga');! ! ga('create', 'UA-XXXX-Y');! ga('send', 'pageview');! ! </script>! <!-- End Google Analytics -->!
  • 10. Universal Analytics (analytics.js) Ventajas •   Script  mejorado  (ej.  plugins)   •   Protocolo  de  Medición  (HTTP  Requests)   •   Mejoras  en  reportes  (Dimensiones  custom)
 •   User-­‐Centric  Approach Desventajas   •    Cambió  toda  la  sintaxis!    
  • 12. Eventos Permite   registrar   la   interacción   del   usuario   con   determinados  elementos  de  la  web
 Ejemplos
 •      Ajax  Callbacks   •      Descargas  de  archivos   •      Tracking  de  enlaces,  por  ejemplo  de  salida   •    Interacción  con  diferentes    botones   •    Cualquier  otro  evento  JS  
  • 13. Eventos Tienen  4  parámetros: •  Categoría •  Acción •  E.queta •  Valor Estructura  del  código  Javascript  (versión  clásica) _gaq.push(['_trackEvent','category','ac.on','label_opt',  value_opt]); Estructura  del  código  Javascript  (versión  universal  analy8cs)   ga('send','event',category,  ac.on,  label_opt,  value_opt);
  • 14. Eventos Los  reportes  se  encuentran  en   Menu  ::  Comportamiento  ::  Eventos
  • 16. Tracking de Errores JS ¿Por qué? •  Demasiados  navegadores
 •  Somos  devs  (Los  peores  testers  del  mundo)   ! •  Para  el  backend  hay  logs,  para  el  frontend  no   
 •  Lleva  5  minutos  implementarlo!   ! !
  • 17. Tracking de Errores JS ¿Cómo? •  Capturando  el  evento  window.onerror   window.onerror = function(message, url, linenumber) { alert("JavaScript error: " + message + " en línea " + linenumber + " de " + url); } •  Recibe  3  argumentos:  
    message:    Mensaje  de  error  o  excepción   url:  La  url  del  archivo  que  con.ene  el  error   linenumber:    La  línea  donde  ocurrió  el  error 

  • 18. Tracking de Errores JS ¿Cómo  lo  registramos  en  Analy<cs?    •  Lanzando  un  evento  con  Google  Analy.cs   !    Version  clásica  (ga.js)   ! window.onerror = function(message, url, linenumber) { ! _gaq.push(['_trackEvent','JS  ERROR',message,url  +  ':'  +  linenumber]);
 } ! !    Version  universal  analy8cs  (analy8cs.js)
 window.onerror = function(message, url, linenumber) {          ga('send','event',  'JS  ERROR',message,url  +  ':'  +  linenumber);   }
  • 19. Tracking de Errores 404 ¿Cómo  lo  registramos  en  Analy<cs?   Con  una  pág.  404  propia  podemos  saber  
 desde  donde  viene  el  link  mal  apuntado.   ! Ejemplo
 window.onload = function(){ !var referrer = document.referrer!=""?"Referrer:"+document.referrer:null; gaq.push(["_trackEvent","ERROR 404”,"Not found:"+location.href,referrer]); }! !
  • 20. Tracking de Errores 500 ¿Cómo  lo  registramos  en  Analy<cs?   Con  una  pág.  500  propia  debemos:   • Retornar  el  error  en  el  html  como  un  String  en    js   • Usar  ese  String  como  parámetro  del  evento   ! Ejemplo
 window.onload = function(){ !var referrer = document.referrer!=""?"Referrer:"+document.referrer:null; var data = ["_trackEvent",
 "ERROR 500”, ! ”<?php echo ($error_data); ?>”, referrer]; ! _gaq.push(data); ! }
  • 21. Tracking de Errores VENTAJAS   • Podemos  ver  desde  donde  vino  el  usuario   • Cual  fue  el  error   • En  que  archivo  y  línea   • Con  que  Browser,    Versión  y    S.O.   
 ! ! ! #PRICELESS  
  • 25.
  • 27. GAP.js ¿Qué  es?     Wrapper  en  Javascript,  autodetecta  la  versión,   provee  una  API  única.   Ventajas   !•  Evitamos  manejar  la  sintaxis  de  las  2  versiones  
 • Cambiar  de  versión  es  transparente   •  El  trackeo  de  errores  es  MUY  fácil!   •  No  depende  de  ninguna  librería  (ej.  jQuery)   •  Es  crossbrowser
  • 28. GAP.js Ejemplos:    -­‐  Asignando  un  evento  a  un  link    (  crossbrowser  )            Código  Javascript   ! !GAP.track.addListener(document.getElementById("btn"),'click',! function(){! ! GAP.track.event('buttons','btn','top-menu',1);! });! ! ! !
  • 29. GAP.js Ejemplos:    -­‐  Asignando  un  evento  a  un  link  con  data-­‐akributes   !    Código  Javascript        GAP.track.element('click',document.getElementById("link"));! ! !    !Código  HTML   <a href="http://aa.com" data-ga-category="Event-cat" data-ga!action="my action" data-ga-label="some label" data-ga!value="1" id=”link”>my link!</a> !
  • 30. GAP.js Ejemplos:    -­‐  Asignando  un  evento  a  todos  los  elementos    con
      data-­‐akributes  u.lizando  jQuery            !Código  Javascript   ! $("[data-ga-category]").each(function(e){! ! GAP.track.element("click",this);! });! ! !    !Código  HTML   <a href="http://aa.com" data-ga-category="Event-cat" data-gaaction="my action" data-ga-label="some label" data-gavalue="1" id=”link”>my link!</a>
  • 31. GAP.js Ejemplos:   Tracking  de  errores  javascript       !    Código  Javascript   ! ! GAP.track.errors(); ! !
  • 33. Links  
 GAP.js:    bit.ly/GAPdotJS         
 GA  Debugger:    bit.ly/GADebugger     ! Slides:    bit.ly/GA4DEVS  
  • 35. We are hiring! CakePHP + jQuery Part time & Remote bruno@thehackerway.co