Home | History | Annotate | Download | only in static
      1 <div id="pageData-name" class="pageData">Tutorial: Google Analytics</div>
      2 <div id="pageData-showTOC" class="pageData">true</div>
      3 
      4 <p>This tutorial demonstrates using Google Analytics to track the usage of your
      5 extension.</p>
      6 
      7 <h2 id="toc-requirements">Requirements</h2>
      8 <p>
      9   This tutorial expects that you have some familiarity writing extensions for
     10   Google Chrome.  If you need information on how to write an extension, please
     11   read the <a href="gettingstarted.html">Getting Started tutorial</a>.
     12 </p>
     13 
     14 <p>
     15   You will also need a <a href="http://www.google.com/analytics">Google
     16   Analytics account</a> set up to track your extension.  Note that when setting
     17   up the account, you can use any value in the Website's URL field, as your
     18   extension will not have an URL of its own.
     19 </p>
     20 
     21 <p style="text-align: center">
     22   <img src="images/tut_analytics/screenshot01.png"
     23        style="width:400px;height:82px;"
     24        alt="The analytics setup with info for a chrome extension filled out." />
     25 </p>
     26 
     27 <p>
     28   Also note that Google Analytics requires version <strong>4.0.302.2</strong>
     29   of Google Chrome to work correctly.  Users with an earlier version of Google
     30   Chrome will not show up on your Google Analytics reports.  View
     31   <a href="faq.html#faq-dev-14">this FAQ entry</a> to learn how to check which
     32   version of Google Chrome is deployed to which platform.
     33 </p>
     34 
     35 <h2 id="toc-installing">Installing the tracking code</h2>
     36 
     37 <p>
     38   The standard Google Analytics tracking code snippet fetches a file named
     39   <code>ga.js</code> from an SSL protected URL if the current page
     40   was loaded using the <code>https://</code> protocol.  <strong>It is strongly
     41   advised to use the SSL protected ga.js in an extension</strong>,
     42   but Google Chrome extension
     43   pages are hosted under <code>chrome-extension://</code> URLs, so the tracking
     44   snippet must be modified slightly to pull <code>ga.js</code> directly from
     45   <code>https://ssl.google-analytics.com/ga.js</code> instead of the default
     46   location.
     47 </p>
     48 
     49 <p>
     50   Below is a modified snippet for the
     51   <a href="http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html">asynchronous
     52   tracking API</a> (the modified line is bolded):
     53 </p>
     54 
     55 <pre>
     56 (function() {
     57   var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
     58   <strong>ga.src = 'https://ssl.google-analytics.com/ga.js';</strong>
     59   var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
     60 })();
     61 </pre>
     62 
     63 <p>
     64   Here is a background page which loads the asynchronous tracking code and
     65   tracks a single page view:
     66 </p>
     67 
     68 <pre>
     69 &lt;!DOCTYPE html>
     70 &lt;html>
     71  &lt;head>
     72    ...
     73  &lt;/head>
     74  &lt;body>
     75    &lt;script>
     76      var _gaq = _gaq || [];
     77      _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
     78      _gaq.push(['_trackPageview']);
     79 
     80      (function() {
     81        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
     82        ga.src = 'https://ssl.google-analytics.com/ga.js';
     83        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
     84      })();
     85    &lt;/script>
     86 
     87    ...
     88  &lt;/body>
     89 &lt;/html>
     90 </pre>
     91 
     92 <p>
     93   Keep in mind that the string <code>UA-XXXXXXXX-X</code> should be replaced
     94   with your own Google Analytics account number.
     95 </p>
     96 
     97 <h2 id="toc-tracking-pageviews">Tracking page views</h2>
     98 
     99 <p>
    100   The <code>_gaq.push(['_trackPageview']);</code> code will track a single
    101   page view.  This code may be used on any page in your extension.  When
    102   placed on a background page, it will register a view once per browser
    103   session.  When placed on a popup, it will register a view once every time
    104   the popup is opened.
    105 </p>
    106 
    107 <p>
    108   By looking at the page view data for each page in your extension, you can
    109   get an idea of how many times your users interact with your extension per
    110   browser session:
    111 </p>
    112 
    113 <p style="text-align: center">
    114   <img src="images/tut_analytics/screenshot02.png"
    115        style="width:300px;height:119px;"
    116        alt="Analytics view of the top content for a site." />
    117 </p>
    118 
    119 <h2 id="toc-debugging">Monitoring analytics requests</h2>
    120 
    121 <p>
    122   To ensure that tracking data from your extension is being sent to Google
    123   Analytics, you can inspect the pages of your extension in the
    124   Developer Tools window (see the
    125   <a href="tut_debugging.html">debugging tutorial</a> for more information).
    126   As the following figure shows, you should see requests for a file named
    127   <strong>__utm.gif</strong> if everything is set up correctly.
    128 </p>
    129 
    130 <p style="text-align: center">
    131   <img src="images/tut_analytics/screenshot04.png"
    132        style="width:683px;height:418px;"
    133        alt="Developer Tools window showing the __utm.gif request" />
    134 </p>
    135 
    136 <h2 id="toc-tracking-events">Tracking events</h2>
    137 
    138 <p>
    139   By configuring event tracking, you can determine which parts of your
    140   extension your users interact with the most.  For example, if you have
    141   three buttons users may click:
    142 </p>
    143 
    144 <pre>
    145   &lt;button>Button 1&lt;/button>
    146   &lt;button>Button 2&lt;/button>
    147   &lt;button>Button 3&lt;/button>
    148 </pre>
    149 
    150 <p>
    151   Write a function that sends click events to Google Analytics:
    152 </p>
    153 
    154 <pre>
    155   function trackButton(button_id) {
    156     _gaq.push(['_trackEvent', 'button' + button_id, 'clicked']);
    157   };
    158 </pre>
    159 
    160 <p>
    161   And call it when each button is pressed:
    162 </p>
    163 
    164 <pre>
    165   &lt;button onclick="trackButton(1);">Button 1&lt;/button>
    166   &lt;button onclick="trackButton(2);">Button 2&lt;/button>
    167   &lt;button onclick="trackButton(3);">Button 3&lt;/button>
    168 </pre>
    169 
    170 <p>
    171   The Google Analytics event tracking overview page will give you metrics
    172   regarding how many times each individual button is clicked:
    173 </p>
    174 
    175 <p style="text-align: center">
    176   <img src="images/tut_analytics/screenshot03.png"
    177        style="width:300px;height:482px;"
    178        alt="Analytics view of the event tracking data for a site." />
    179 </p>
    180 
    181 <p>
    182   By using this approach, you can see which parts of your extension are
    183   under-or-overutilized.  This information can help guide decisions about UI
    184   redesigns or additional functionality to implement.
    185 </p>
    186 
    187 <p>
    188   For more information about using the event tracking API, see the
    189   Google Analytics
    190   <a href="http://code.google.com/apis/analytics/docs/tracking/eventTrackerOverview.html">developer
    191   documentation</a>.
    192 </p>
    193 
    194 <h2 id="toc-samplecode">Sample code</h2>
    195 
    196 <p>
    197   A sample extension that uses these techniques is
    198   available in the Chromium source tree:
    199 </p>
    200 
    201 <blockquote>
    202   <a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/analytics/">.../examples/tutorials/analytics/</a>
    203 </blockquote>
    204 </p>
    205