GAS - Google Analytics on Steroids

  • 5,879 views
Uploaded on

This was a quick introduction to GAS targeted to non-technical folks for a local meetup group. …

This was a quick introduction to GAS targeted to non-technical folks for a local meetup group.

https://github.com/CardinalPath/gas

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • thank a lot
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
5,879
On Slideshare
0
From Embeds
0
Number of Embeds
6

Actions

Shares
Downloads
70
Comments
1
Likes
14

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. May 24, 2012 GAS - Google Analytics on Steroids Eduardo Cereto Carvalhowww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 1
  • 2. May 24, 2012 Implementing GA is easy, right?www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 2
  • 3. May 24, 2012 What the basic implementation gives you? • One pageview every time a page loads • That doesn’t seem a lot but with just that GA can calculate everything you see on the reportswww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 3
  • 4. May 24, 2012 What else could you want? • E-commerce • Custom Vars • Page Interactions ⃪ Eventswww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 4
  • 5. May 24, 2012www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 5
  • 6. May 24, 2012 L I A Fwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 5
  • 7. May 24, 2012 How to implement Event Tracking?www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 6
  • 8. May 24, 2012 How to implement Event Tracking? <a href="#" onClick="_gaq.push([_trackEvent, Videos, Play, Babys First Birthday]);">Play</a>www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 6
  • 9. May 24, 2012 How to implement Event Tracking? <a href="#" onClick="_gaq.push([_trackEvent, Videos, Play, Babys First Birthday]);">Play</a>www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 6
  • 10. May 24, 2012 How to implement Event Tracking? <a href="#" onClick="_gaq.push([_trackEvent, Videos, Play, Babys First Birthday]);">Play</a>From: https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuidewww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 6
  • 11. May 24, 2012 The documentation is not perfect • There’s so much more you can do with events,Video usage is just one small example; • The docs are just examples, you should never implement events like that in the real world; • Videos don’t even have a play button most of the time.You probably use a player like youtube.www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 7
  • 12. May 24, 2012 What is GAS https://github.com/CardinalPath/gas • A library to help you implement GA • Implement a lot of events so you don’t have to • Open Source • Tested on large deployments • Easy to get involved • Regular bug-fixes and new features • Spoiler: I’m the main developerwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 8
  • 13. May 24, 2012 What GAS gives you for free? • Outbound links • Web Form usage • Download links • Video Usage • Youtube • Vimeo • HTML5 <video /> • Email: links usage • Scroll percentagewww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 9
  • 14. May 24, 2012 Just upload gas.js and implement GAS instead of GA <script type="text/javascript"> var _gas = _gas || []; _gas.push([_setAccount, UA-YYYYYY-Y]); // REPLACE WITH YOUR GA NUMBER _gas.push([_setDomainName, .mydomain.com]); // REPLACE WITH YOUR DOMAIN _gas.push([_trackPageview]); _gas.push([_gasTrackForms]); _gas.push([_gasTrackOutboundLinks]); _gas.push([_gasTrackMaxScroll]); _gas.push([_gasTrackDownloads]); _gas.push([_gasTrackYoutube]); _gas.push([_gasTrackVimeo]); _gas.push([_gasTrackMailto]); (function() { var ga = document.createElement(script); ga.type = text/javascript; ga.async = true; ga.src = /gas.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s); })(); </script>www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 10
  • 15. May 24, 2012 Just upload gas.js and implement GAS instead of GA <script type="text/javascript"> var _gas = _gas || []; _gas.push([_setAccount, UA-YYYYYY-Y]); // REPLACE WITH YOUR GA NUMBER _gas.push([_setDomainName, .mydomain.com]); // REPLACE WITH YOUR DOMAIN _gas.push([_trackPageview]); _gas.push([_gasTrackForms]); _gas.push([_gasTrackOutboundLinks]); _gas.push([_gasTrackMaxScroll]); _gas.push([_gasTrackDownloads]); _gas.push([_gasTrackYoutube]); _gas.push([_gasTrackVimeo]); _gas.push([_gasTrackMailto]); (function() { var ga = document.createElement(script); ga.type = text/javascript; ga.async = true; ga.src = /gas.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s); })(); </script>www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 10
  • 16. May 24, 2012www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 11
  • 17. May 24, 2012 s s c e u c Swww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 11
  • 18. May 24, 2012 Events are multidimensional. So you can drill-down into themwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 12
  • 19. May 24, 2012 Events are multidimensional. So you can drill-down into themwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 12
  • 20. May 24, 2012 Events are multidimensional. So you can drill-down into themwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 12
  • 21. May 24, 2012 Events are multidimensional. So you can drill-down into themwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 12
  • 22. May 24, 2012 Videos are even coolerwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 13
  • 23. May 24, 2012 Videos are even coolerwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 13
  • 24. May 24, 2012 Videos are even coolerwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 13
  • 25. May 24, 2012 What do you do if your site has multiple domains?www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 14
  • 26. May 24, 2012 What do you do if your site has multiple domains?<script type="text/javascript"> var _gaq = _gaq || []; _gaq.push([_setAccount, UA-XXXXX-X]); _gaq.push([_setDomainName, mysite.com]); _gaq.push([_setAllowLinker, true]); _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>www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 14
  • 27. May 24, 2012 What do you do if your site has multiple domains?<script type="text/javascript"> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push([_setAccount, UA-XXXXX-X]); var _gaq = _gaq || []; _gaq.push([_setDomainName, mysite.com]); _gaq.push([_setAccount, UA-XXXXX-X]); _gaq.push([_setAllowLinker, true]); _gaq.push([_setDomainName, myothersite.com]); _gaq.push([_trackPageview]); _gaq.push([_setAllowLinker, true]); _gaq.push([_trackPageview]);  (function() {    var ga = document.createElement(script); ga.type = text/javascript; ga.async = true;   (function() {    ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/     var ga = document.createElement(script); ga.type = text/javascript; ga.async = true;ga.js;     ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/    var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s); ga.js;  })();     var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s);   })();</script> </script>www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 14
  • 28. May 24, 2012 What do you do if your site has multiple domains?<script type="text/javascript"> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push([_setAccount, UA-XXXXX-X]); var _gaq = _gaq || []; _gaq.push([_setDomainName, mysite.com]); <a href="http://www.myothersite.com/intro" _gaq.push([_setAccount, UA-XXXXX-X]); _gaq.push([_setAllowLinker, true]); onclick="_gaq.push([_link, http://www.myothersite.com/intro.html]); return false;">See my blog</a> _gaq.push([_setDomainName, myothersite.com]); _gaq.push([_trackPageview]); _gaq.push([_setAllowLinker, true]); _gaq.push([_trackPageview]);  (function() {    var ga = document.createElement(script); ga.type = text/javascript; ga.async = true;   (function() {    ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/     var ga = document.createElement(script); ga.type = text/javascript; ga.async = true;ga.js;     ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/    var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s); ga.js;  })();     var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s);   })();</script> </script>www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 14
  • 29. May 24, 2012 What do you do if your site has multiple domains?<script type="text/javascript"> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push([_setAccount, UA-XXXXX-X]); var _gaq = _gaq || []; _gaq.push([_setDomainName, mysite.com]); <a href="http://www.myothersite.com/intro" _gaq.push([_setAccount, UA-XXXXX-X]); _gaq.push([_setAllowLinker, true]); onclick="_gaq.push([_link, http://www.myothersite.com/intro.html]); return false;">See my blog</a> <a href="http://www.mysite.com/" _gaq.push([_setDomainName, myothersite.com]); _gaq.push([_trackPageview]); onclick="_gaq.push([_link, http://www.mysite.com/]); return false;">Go back to my site</a> _gaq.push([_setAllowLinker, true]); _gaq.push([_trackPageview]);  (function() {    var ga = document.createElement(script); ga.type = text/javascript; ga.async = true;   (function() {    ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/     var ga = document.createElement(script); ga.type = text/javascript; ga.async = true;ga.js;     ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/    var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s); ga.js;  })();     var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s);   })();</script> </script>www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 14
  • 30. May 24, 2012 What do you do if your site has multiple domains?<script type="text/javascript"> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push([_setAccount, UA-XXXXX-X]); var _gaq = _gaq || []; _gaq.push([_setDomainName, mysite.com]); <a href="http://www.myothersite.com/intro" _gaq.push([_setAccount, UA-XXXXX-X]); _gaq.push([_setAllowLinker, true]); onclick="_gaq.push([_link, http://www.myothersite.com/intro.html]); return false;">See my blog</a> <a href="http://www.mysite.com/" _gaq.push([_setDomainName, myothersite.com]); _gaq.push([_trackPageview]); onclick="_gaq.push([_link, http://www.mysite.com/]); return false;">Go back to my site</a> _gaq.push([_setAllowLinker, true]); <form name="f" method="post" onsubmit="_gaq.push([_linkByPost, this]);"> _gaq.push([_trackPageview]);  (function() {    var ga = document.createElement(script); ga.type = text/javascript; ga.async = true;   (function() {    ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/     var ga = document.createElement(script); ga.type = text/javascript; ga.async = true;ga.js;     ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/    var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s); ga.js;  })();     var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s);   })();</script> </script>www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 14
  • 31. May 24, 2012 What do you do if your site has multiple domains?<script type="text/javascript"> <script type="text/javascript"> L var _gaq = _gaq || []; _gaq.push([_setAccount, UA-XXXXX-X]); var _gaq = _gaq || []; I _gaq.push([_setDomainName, mysite.com]); <a href="http://www.myothersite.com/intro" _gaq.push([_setAccount, UA-XXXXX-X]); _gaq.push([_setAllowLinker, true]); onclick="_gaq.push([_link, http://www.myothersite.com/intro.html]); return false;">See my blog</a> <a href="http://www.mysite.com/" _gaq.push([_setDomainName, myothersite.com]); _gaq.push([_trackPageview]); onclick="_gaq.push([_link, http://www.mysite.com/]); return false;">Go back to my site</a> _gaq.push([_setAllowLinker, true]); A <form name="f" method="post" onsubmit="_gaq.push([_linkByPost, this]);"> _gaq.push([_trackPageview]);  (function() {    var ga = document.createElement(script); ga.type = text/javascript; ga.async = true; F   (function() {    ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/     var ga = document.createElement(script); ga.type = text/javascript; ga.async = true;ga.js;     ga.src = (https: == document.location.protocol ? https://ssl : http://www) + .google-analytics.com/    var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s); ga.js;  })();     var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(ga, s);   })();</script> </script>www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 14
  • 32. May 24, 2012 How to do it with GAS? _gas.push([_setAccount, UA-XXXXX-1]); _gas.push([_setAllowLinker, true]); _gas.push([_setDomainName, mysite.com]); _gas.push([_setDomainName, myothersite.com]); _gas.push([_gasMultiDomain, click]); _gas.push([_trackPageview]);www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 15
  • 33. May 24, 2012 How to do it with GAS? _gas.push([_setAccount, UA-XXXXX-1]); s s e _gas.push([_setAllowLinker, true]); c _gas.push([_setDomainName, mysite.com]); c _gas.push([_setDomainName, myothersite.com]); u _gas.push([_gasMultiDomain, click]); S _gas.push([_trackPageview]);www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 15
  • 34. May 24, 2012 GAS can do a lot more for you • You can extend GAS by adding plugins • GAS helps you if you need to use _setAllowAnchor(true) • GAS fixes bad formatted events for you • GAS helps you if you want to send data to multiple accounts at the same timewww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 16
  • 35. May 24, 2012 What else can you expect from GAS in the future • Support for more video players • Support for tracking social widgets usage • More customization options if you are a developerwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 17
  • 36. May 24, 2012 https://github.com/CardinalPath/gas Eduardo Cereto Carvalho @eduardocereto ecereto@cardinalpath.comwww.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 18