GA Async — why and how does it work?


Google Analytics does all sorts of cool things that are completely opaque to non-techies (like me). The “asynchronous ga.js snippet” is a great example of that.  I wanted to understand this one in my usual tech-for-non-techies fashion, so here goes:

Before async, GA told us all to put our analytics code at the bottom of the page. There was a good reason for this.  Web pages often load from top to bottom, so having the code at the bottom of the page enhances the user experience. This is web-person speak for, “Let’s keep users from twiddling their thumbs while waiting for the GA code to load.”  Google Analytics isn’t all that “heavy” to start with, but I remember a day not too long ago when many Google servers went down.  Not only couldn’t we read our gmail or our Google Docs, but web pages that had the Google Analytics code near the top of the page wouldn’t load.

The downside of the “bottom of the page” is that users who are in a hurry (and who isn’t?) may navigate away from a page before the code loads. When that happens, we no longer get to see the pageview, correct time on site, etc.

Enter the async code. Although Google Analytics uses the analogy of a separate lane for traffic, it still left me wondering, “now why exactly does this work?”

So here is how:

When the Google Analytics tracking code does its usual thing, it makes a request for ga.js. Then you execute all the tracking functions for your page, whether it’s just tracking the pageview, setting a custom variable, recording an ecommerce transaction, etc. With the old version, all those functions wait for the ga.js script to load. If you’ve put your code at the top of the page, the rest of your page will also be waiting. If you’ve put your code at the bottom, GA will be waiting on the rest of the page.

With the new async code, everything that you want your page to do — set those custom variables, or manage your ecommerce, or what have you — now gets queued up. The page makes the request for ga.js, but nobody waits for it except other GA functions that you have on the page.

When the server responds, all the other GA functions in the queue are then allowed to do their thing. Variables can get set, scripts can run, you name it. This way, you can have the code at the top of the page without holding up the rest of the content. And because it’s at the top, it’s likely to finish before the bottom of the page completes loading, so you’re less likely to lose data to visitors clicking off the page before it’s completely loaded.

You can read more about the asynchronous code at on the Google Analytics code site.


Our founder, Robbin Steif, started LunaMetrics in 2004. She is a graduate of Harvard College and the Harvard Business School, and has served on the Board of Directors for the Digital Analytics Association. Robbin is a winner of a BusinessWomen First award, as well as a Diamond Award for business leadership. In 2017, Robbin sold her company to HS2 Solutions and has since retired from LunaMetrics.

  • Well done for explaining that in a non-technical way! Great post.

    Nikki Rae

  • Mat

    Well done to, even for an non-english speaker like me 😉

    Thanks !

Contact Us.

Follow Us



We'll get back to you
in ONE business day.
Our Locations
THE FOUNDRY [map] LunaMetrics

24 S. 18th Street
Suite 100

Pittsburgh, PA 15203


4115 N. Ravenswood
Suite 101
Chicago, IL 60613


2100 Manchester Rd.
Building C, Suite 1750
Wheaton, IL 60187