Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GAS - Google Analytics on Steroids

GAS - Google Analytics on Steroids

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

https://github.com/CardinalPath/gas

Tweet

More Decks by Eduardo Cereto Carvalho

Other Decks in Programming

Transcript

  1. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 GAS - Google Analytics on Steroids Eduardo Cereto Carvalho 1
  2. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 Implementing GA is easy, right? 2
  3. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. 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 reports 3
  4. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 What else could you want? • E-commerce • Custom Vars • Page Interactions ⃪ Events 4
  5. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 How to implement Event Tracking? 6
  6. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 How to implement Event Tracking? 6 <a href="#" onClick="_gaq.push(['_trackEvent', 'Videos', 'Play', 'Baby\'s First Birthday']);">Play</a>
  7. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 How to implement Event Tracking? 6 <a href="#" onClick="_gaq.push(['_trackEvent', 'Videos', 'Play', 'Baby\'s First Birthday']);">Play</a>
  8. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 How to implement Event Tracking? 6 From: https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide <a href="#" onClick="_gaq.push(['_trackEvent', 'Videos', 'Play', 'Baby\'s First Birthday']);">Play</a>
  9. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. 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. 7
  10. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 What is 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 developer 8 https://github.com/CardinalPath/gas
  11. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. 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 percentage 9
  12. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 Just upload gas.js and implement GAS instead of GA 10 <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>
  13. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 Just upload gas.js and implement GAS instead of GA 10 <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>
  14. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 Events are multidimensional. So you can drill-down into them 12
  15. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 Events are multidimensional. So you can drill-down into them 12
  16. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 Events are multidimensional. So you can drill-down into them 12
  17. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 Events are multidimensional. So you can drill-down into them 12
  18. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 Videos are even cooler 13
  19. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 Videos are even cooler 13
  20. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 Videos are even cooler 13
  21. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 What do you do if your site has multiple domains? 14
  22. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 What do you do if your site has multiple domains? 14 <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>
  23. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 What do you do if your site has multiple domains? 14 <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> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_setDomainName', 'myothersite.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>
  24. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 What do you do if your site has multiple domains? 14 <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> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_setDomainName', 'myothersite.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> <a href="http://www.myothersite.com/intro" onclick="_gaq.push(['_link', 'http://www.myothersite.com/intro.html']); return false;">See my blog</a>
  25. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 What do you do if your site has multiple domains? 14 <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> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_setDomainName', 'myothersite.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> <a href="http://www.myothersite.com/intro" onclick="_gaq.push(['_link', 'http://www.myothersite.com/intro.html']); return false;">See my blog</a> <a href="http://www.mysite.com/" onclick="_gaq.push(['_link', 'http://www.mysite.com/']); return false;">Go back to my site</a>
  26. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 What do you do if your site has multiple domains? 14 <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> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_setDomainName', 'myothersite.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> <a href="http://www.myothersite.com/intro" onclick="_gaq.push(['_link', 'http://www.myothersite.com/intro.html']); return false;">See my blog</a> <a href="http://www.mysite.com/" onclick="_gaq.push(['_link', 'http://www.mysite.com/']); return false;">Go back to my site</a> <form name="f" method="post" onsubmit="_gaq.push(['_linkByPost', this]);">
  27. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 What do you do if your site has multiple domains? 14 <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> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_setDomainName', 'myothersite.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> <a href="http://www.myothersite.com/intro" onclick="_gaq.push(['_link', 'http://www.myothersite.com/intro.html']); return false;">See my blog</a> <a href="http://www.mysite.com/" onclick="_gaq.push(['_link', 'http://www.mysite.com/']); return false;">Go back to my site</a> <form name="f" method="post" onsubmit="_gaq.push(['_linkByPost', this]);"> F A I L
  28. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 How to do it with GAS? 15 _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']);
  29. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 How to do it with GAS? 15 _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']); Success
  30. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. 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 time 16
  31. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. 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 developer 17
  32. www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary

    and Confidential. May 24, 2012 18 https://github.com/CardinalPath/gas Eduardo Cereto Carvalho @eduardocereto [email protected]