Google Analytics Web Tracking (ga.js) Changelog

We periodically update the Google Analytics JavaScript Tracking Code (ga.js) in order to deliver new features and to repair defects discovered in previous versions.

This page documents any changes made to the ga.js tracking code. We recommend that you periodically check this list for any new announcements. You can also subscribe to changes via the feeds listed under the Subscribe section below.

Note that you and your users might not see the updated ga.js tracking code right away because:

  • Changes are incrementally rolled out over several days across Google's global data center infrastructure.
  • Users of your website might have older versions of our javascript cached in their browsers.

Subscribe To Related Changelogs

Includes all Collection, Configuration, and Reporting APIs.

Includes Web Tracking (ga.js and analytics.js), Android SDK, iOS SDK, and Measurement Protocol.

  • Hits that do not contain a valid tracking id are now dropped.
  • Yahoo secure search is now correctly classified as an organic source.
  • Added support for unprefixed prerendering apis. Prerendering now works in IE11 in addition to Chrome.
  • Maintenance release.

The following changes have been pushed to the latest version of the tracking code:

  • Added support for specifying local currencies with _set, e.g. gaq.push(['_set', 'currencyCode', 'EUR'])

The following changes have been pushed to the latest version of the tracking code:

  • The maximum allowed site speed sample rate (_setSiteSpeedSampleRate) has been increased from 10% to 100%.
  • The _setAccount method now trims any leading and trailing spaces.

The following changes have been pushed to the latest version of the tracking code:

  • Updated the list of organic search engines detected by default. Added ‘startsiden.no’, ‘rakuten.co.jp’, ‘biglobe.ne.jp’, and ‘goo.ne.jp’. Removed ‘search’ and added ‘conduit.com’, ‘babylon.com’, ‘search-results.com’, ‘avg.com’, ‘comcast.net’, and ‘incredimail.com’ all of which were previously attributed together as ‘search’.

The following changes have been pushed to the latest version of the tracking code:

  • The limit on custom variable length has been increased from 64 to 128 characters. Additionally, the length is now checked before URL encoding.
  • The rate limit for event hits has been relaxed. You can now send 10 hits with 1 additional hit per second (previously this was limited to 1 hit every 5 seconds). Note that the 500 hits per session limit still applies.
  • __utmv cookies are now written with a different variable separator (caret instead of comma) to be compatible with RFCs. This should fix some of the issues related to cookie encoding issues seen by customers.

Changes to Site Speed data collection:

  • Site speed data is now automatically collected for all web properties at a 1% sample rate. The _trackPageLoadTime function, previously required to opt-in to site speed data collection, is now deprecated.
  • The default sample rate may be adjusted using the new _setSiteSpeedSampleRate function.
  • If a virtual path is used in the _trackPageview call, that path will now also be associated with any site speed data collected from that page.

This release contains the following new feature:

  • Events can be marked as non-interaction by setting the new opt_noninteraction parameter of the _trackEvent() method to true. Marking an event as non-interaction indicates that hits from the tagged event will not impact bounce rate. For more information, see the ga.js reference.

This release contains the following bug fix:

  • Fixed an issue where propagating the AdWords gclid URL parameter on internal site links could result in inflated paid visit counts.

This release fixes a bug which caused inflated numbers of visits and/or a decrease in the number of new visitors for some sites. The first effect primarily affected sites with organic traffic coupled with specific user behavior. The second effect was only on sites using an unsupported tracking configuration with multiple trackers.

Changes to session calculations:

  • One campaign per session: If a new campaign is started during an existing session, the tracking script will now automatically start a new session. A new campaign will be triggered by a change to any of the following fields: campaign id, name, source, medium, term, content, or gclid.
  • The tracking script no longer starts a new session in the event that a user closes the browser.

Changes to cross-domain tracking:

  • The call to _setAllowHash(false) is no longer required when configuring cross-domain tracking. Pages that already include a call to _setAllowHash(false) will continue to work, but it is no longer required when setting up a new site.
  • The tracking script will now attempt to repair linker parameters that have been mangled by HTTP redirectors and browsers. Approximately 85% of linker values that are currently discarded due to encoding changes introduced by redirectors and browsers should now be successfully restored and accepted by the tracking script.

This release contains one new feature:

  • The tracking code now postpones hits for prerendered pages until those pages are viewed by the user. If a prerendered page is never viewed, no hits are sent. This feature is only available to sites using the async tracking script. You can learn more about prerendering in Google Webmaster Central Blog.

This release contains a variety of bug fixes and refactorings, and one new feature:

This release contains the following bug fixes.

  • Fixed a bug in cross domain tracking that caused incorrect encoding of campaign data in some cases.
  • Fixed a bug in cross domain tracking that caused cookies to be loaded from the URL more than once, causing incorrect cookies in some cases.
  • Fixed a bug in Custom Variables that caused some values to be encoded in reports.

This release contains regular maintenance including bug fixes and refactorings. There is no change to the public APIs or functionality.

This release contains updates and one new feature.

  • POST support:

    • The tracking code can now send much larger tracking beacons. Traditionally, beacons have been sent via HTTP GET requests, which are limited to 2048 characters by some browsers and proxies. Requests over this limit were dropped and the data never reached Google Analytics. Starting with this release, requests longer than 2048 characters will be sent via HTTP POST, which has no such limit. The tracking code will now support beacons up to 8192 characters.

This release contains the following bug fixes.

  • Fixed a bug that prevented _addIgnoredOrganic and _addIgnoredRef from working properly on the first visit to a site.
  • Fixed an issue related to tracking code running across multiple iframes.

This release contains regular maintenance including bug fixes and refactorings. There is no change to the public APIs or functionality.

This release contains bug fixes and API cleanup.

  • Bug fixes:

    • Fixed event tracking bug. Calling _trackEvent no longer requires calling_initData or _trackPageview first.
    • Updated async snippet so that it can be placed in the head on any page without causing problems in IE 6 and 7. See the Asynchronous Tracking Guide for the new snippet. This update occurred on 3/22/2010.
    • Expanded async syntax to support calling methods on the _gat object.
  • Updated tracker initialization APIs to be consistent with async syntax. Also deprecated old functions.

    • Added _gat._createTracker(opt_account, opt_name) function. Allows trackers to be named and later retrieved by their name.Use this instead of _gat._getTracker(account).
    • Added _gat._getTrackerByName(name). Retrieves the tracker with the given name.
    • Added tracker._getName(). Returns the name given to the tracker when it was created.
    • Deprecated _gaq._createAsyncTracker(account, opt_name). Use _gat._createTracker instead.
    • Deprecated _gaq._getAsyncTracker(name). Use _gat._getTrackerByName instead.
  • See the Tracker Reference for details on these API changes.

This release contains updates to the default search engine list and new functions to control cookie timeouts. In addition, the asynchronous GA snippet is launched that reduces the ga.js latency impact on the page.

  • Updated the default search engine list

    • Added Naver, Eniro and Daum search engines.
    • Removed Looksmart, Gigablast, Club-internet, Netsprint, Intera, Nostrum and Ilse from the list.
  • Added functions to control cookie expiration times for all stored cookies. Deprecated existing cookie timeout functions. See the JS API documentation for more details.

    • _setVisitorCookieTimeout(cookieTimeoutMillis) replaces the _setCookiePersistence function.
    • _setSessionCookieTimeout(cookieTimeoutMillis) replaces the _setSessionTimeout function.
    • _setCampaignCookieTimeout(cookieTimeoutMillis) replaces the _setCookieTimeout function.
  • Launched asynchronous GA snippet. See documentation on how to try it out.

  • _setVar function is now deprecated. Custom Variables feature replaces _setVar. See documentation for more details.

This release contains:

  • Added a new function to retrieve visitor level custom variables. See the function documentation for more details.

    • _getVisitorCustomVar(index)
  • Instead of waiting for window.onload, Site Overlay content is loaded as soon as ga.js is executed.

This release contains a new feature:

  • Added an optional boolean parameter to _addOrganic function to specify if new organic sources are added to the beginning or the end of the organic source list. See the documentation for more details.

    • _addOrganic(newOrganicEngine, newOrganicKeyword, opt_prepend)

This release contains regular maintenance for performance improvements and refactorings. There is no change to the public APIs or functionality.

This release contains multiple bug fixes and performance improvements:

  • Proper encoding for search terms for organic searches, web page path info for (utmp), and user defined values when used with the linker feature (ie: _link and _linkByPost functions).
  • The search engine Rambler is added to the organic search list
  • Organic search parsing is corrected for search engine http://kvasir.no
  • New organic search engines defined by the user are now added to the top of the list
  • Removed deprecated _trackEvent(action, label, value) function and replaced it with _trackEvent(category, action, label, value)
  • Referrer URLs are now stored as case sensitive. For example: www.domain.com/PaGe.HtMl will be reported with case information.
  • Added a 1200 character limitation to GASO token size.
  • New function was added to allow overriding the default timeouts for cookies: _setCookiePersistence(timeout)