SlideShare a Scribd company logo
1 of 36
Download to read offline
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
May 24, 2012



            Implementing GA is
                easy, right?




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




www.CardinalPath.com   © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.    5
May 24, 2012




                                                                 L
                                                      I
                                         A
                             F


www.CardinalPath.com   © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.    5
May 24, 2012


    How to implement Event
          Tracking?




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




www.CardinalPath.com   © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.   11
May 24, 2012




                                                            s s
                                               c e
                                   u c
                            S


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



      Videos are even cooler




www.CardinalPath.com   © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.   13
May 24, 2012



      Videos are even cooler




www.CardinalPath.com   © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential.   13
May 24, 2012



      Videos are even cooler




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

More Related Content

Similar to GAS - Google Analytics on Steroids

Rompa el manual antes de usar
Rompa el manual antes de usarRompa el manual antes de usar
Rompa el manual antes de usar
Cristian Reatti
 
Scalar Enterprises Web services overview presentation
Scalar Enterprises Web services overview presentationScalar Enterprises Web services overview presentation
Scalar Enterprises Web services overview presentation
Steve Wood
 
Search Engine Steroids: Remarketing & Rich Snippets by Ben Herman
Search Engine Steroids: Remarketing & Rich Snippets by Ben HermanSearch Engine Steroids: Remarketing & Rich Snippets by Ben Herman
Search Engine Steroids: Remarketing & Rich Snippets by Ben Herman
CorrieHerman
 

Similar to GAS - Google Analytics on Steroids (20)

@DavidMihm @SLCSEM Local Search Ranking Factors 2012
@DavidMihm @SLCSEM Local Search Ranking Factors 2012@DavidMihm @SLCSEM Local Search Ranking Factors 2012
@DavidMihm @SLCSEM Local Search Ranking Factors 2012
 
Why Visual Business Analysis is More Effective?
Why Visual Business Analysis is More Effective?Why Visual Business Analysis is More Effective?
Why Visual Business Analysis is More Effective?
 
Developing Data Products
Developing Data ProductsDeveloping Data Products
Developing Data Products
 
Shaklee System for Online Prospecting and Training - YFP Intro
Shaklee System for Online Prospecting and Training - YFP IntroShaklee System for Online Prospecting and Training - YFP Intro
Shaklee System for Online Prospecting and Training - YFP Intro
 
Rompa el manual antes de usar
Rompa el manual antes de usarRompa el manual antes de usar
Rompa el manual antes de usar
 
MasterCard's Jennifer Stalzer presents The Evolution of the Corporate Newsroo...
MasterCard's Jennifer Stalzer presents The Evolution of the Corporate Newsroo...MasterCard's Jennifer Stalzer presents The Evolution of the Corporate Newsroo...
MasterCard's Jennifer Stalzer presents The Evolution of the Corporate Newsroo...
 
Wordpress Dashboard
Wordpress DashboardWordpress Dashboard
Wordpress Dashboard
 
Webtrends Website Update
Webtrends Website UpdateWebtrends Website Update
Webtrends Website Update
 
Mobile: Session 4: Social CRM and Facebook go to College
Mobile: Session 4: Social CRM and Facebook go to College Mobile: Session 4: Social CRM and Facebook go to College
Mobile: Session 4: Social CRM and Facebook go to College
 
Social Media Privacy Concerns in the Job Search
Social Media Privacy Concerns in the Job SearchSocial Media Privacy Concerns in the Job Search
Social Media Privacy Concerns in the Job Search
 
What's the Half-Life of Your Data?
What's the Half-Life of Your Data?What's the Half-Life of Your Data?
What's the Half-Life of Your Data?
 
Lean Startup in the Enterprise
Lean Startup in the EnterpriseLean Startup in the Enterprise
Lean Startup in the Enterprise
 
Scalar Enterprises Web services overview presentation
Scalar Enterprises Web services overview presentationScalar Enterprises Web services overview presentation
Scalar Enterprises Web services overview presentation
 
Solving Biz Problems With SugarExchange: Session 4:
Solving Biz Problems With SugarExchange: Session 4: Solving Biz Problems With SugarExchange: Session 4:
Solving Biz Problems With SugarExchange: Session 4:
 
Being Influential Online
Being Influential OnlineBeing Influential Online
Being Influential Online
 
Search Engine Steroids: Remarketing & Rich Snippets by Ben Herman
Search Engine Steroids: Remarketing & Rich Snippets by Ben HermanSearch Engine Steroids: Remarketing & Rich Snippets by Ben Herman
Search Engine Steroids: Remarketing & Rich Snippets by Ben Herman
 
Improving Search Engine Optimization (SEO) with Google Analytics
Improving Search Engine Optimization (SEO) with Google AnalyticsImproving Search Engine Optimization (SEO) with Google Analytics
Improving Search Engine Optimization (SEO) with Google Analytics
 
The Team Workshop Method
The Team Workshop MethodThe Team Workshop Method
The Team Workshop Method
 
Organizing With Skedi Family Calendar
Organizing With Skedi Family CalendarOrganizing With Skedi Family Calendar
Organizing With Skedi Family Calendar
 
“Double your Inquiry-to-Close Rate with Next Generation Demand Funnel”
“Double your Inquiry-to-Close Rate with    Next Generation Demand Funnel”“Double your Inquiry-to-Close Rate with    Next Generation Demand Funnel”
“Double your Inquiry-to-Close Rate with Next Generation Demand Funnel”
 

Recently uploaded

Recently uploaded (20)

Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 

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
  • 5. May 24, 2012 www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 5
  • 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
  • 16. May 24, 2012 www.CardinalPath.com © 2012 Cardinal Path, Inc, All Rights Reserved. Proprietary and Confidential. 11
  • 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