Contenu connexe
Similaire à GAS - Google Analytics on Steroids (20)
GAS - Google Analytics on Steroids
- 1. May 24, 2012
GAS - Google Analytics
on Steroids
Eduardo Cereto Carvalho
www.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
reports
www.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 ⃪ Events
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 4
- 6. May 24, 2012
L
I
A
F
www.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', 'Baby's 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', 'Baby's 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', 'Baby's First Birthday']);">Play</a>
From: https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide
www.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 developer
www.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 percentage
www.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
- 17. May 24, 2012
s s
c e
u c
S
www.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 them
www.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 them
www.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 them
www.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 them
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 12
- 22. May 24, 2012
Videos are even cooler
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 13
- 23. May 24, 2012
Videos are even cooler
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 13
- 24. May 24, 2012
Videos are even cooler
www.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 time
www.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
developer
www.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.com
www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 18