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)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

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