Post on 27-Jan-2015
description
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
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.
May 24, 2012
Implementing GA is easy, right?
2
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
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
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.
May 24, 2012
5
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.
May 24, 2012
5
F AI L
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.
May 24, 2012
How to implement Event Tracking?
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>
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>
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>
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
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
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
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>
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>
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.
May 24, 2012
11
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.
May 24, 2012
11
Success
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
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
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
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
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.
May 24, 2012
Videos are even cooler
13
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.
May 24, 2012
Videos are even cooler
13
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.
May 24, 2012
Videos are even cooler
13
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
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>
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>
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>
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>
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]);">
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 AI L
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']);
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
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
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
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@eduardoceretoecereto@cardinalpath.com