Google Analytics Updates How Visits Are Calculated
In a recent blog post, the Google Analytics team made announced that they are changing the way that visits (sessions) are calculated. Interestingly, they said that, “Based on our research, most users will see less than a 1% change.” Unfortunately (imho), they didn’t cover their bases with that statement as the comment section of the above cited blog post shows that lots of people are going pretty crazy about these changes.
**Update** On August 16th, the Google Analytics Team announced that there was a bug in the way visits were recorded after they launched the change. Now, people should be going less crazy as numbers are making a bit more sense. Nevertheless….
Bottom line, this is really a significant change and it seems that people aren’t understanding what is going on.
The main things that people seem to be complaining about are:
- Increase in visits
- Increase in bounce rate
- Decreased average time on site
- Decreased pages per visit
Surprisingly (maybe), I didn’t see a lot of people complaining about a decrease in conversion rate. Hmm… In any case, one comment that I saw rise above the negative spew in the GA blog comment section was by Peter at L3 Analytics. He linked to his blog post which does a nice job discussing some of the implications of the change to the way sessions are calculated. I decided to add to the discussion with this post. Some of what I’ll be saying has already been formulated by Peter. Other things will hopefullly be new , including a number questions I have based on some data in GA that I am still not understanding based upon my current knowledge of the change.
**Side Note** It upsets that people can get so negative in their comments made in forums and blog posts, especially since most of their complaints stem from a lack of understanding. Simple questions in the comment section such as “I don’t understand why 123xyz is happening….” would be nicer to address than “this data is useless, (sarcastic) thanks alot!!”
Understanding the change.
Google Analytics receives hit level data and then calculates all metrics based upon that hit level data. Every time there is a pageview, event, or transaction, a gif request is sent to the Google Analytics servers with information about that hit. Part of that gif request includes session information, and other parts of that gif request include visitor level information. I’m not going to go into the UTM gif requests in depth here, but if you really want to know what is going on check out the RUGA (Really Understanding Google Analytics) series of posts from Cardinal Path. (Kent – it would be great if you could add inner linking between posts on the blog, it’s a great series).
Here is a graphic I quickly put together. (As you can tell, I’m not much of a graphic designer).
The idea that this is trying to illustrate is a visit (session) is made up of hits. A visitor can visit the site multiple times. When a “visitor” has two or more visits, they change from being counted as a “New Visit” to a “Returning Visitor.”
**Side note: We use the term “visitor,” but technically this means “__utma Cookie.” Cookies are browser specific. So if I, Yehoshua Coren, visit example.com in a 5 minute span from 3 different browsers, GA reports that 3 “unique visitors” came to the site. Similarly, if 3 different people in my household visit example.com at different times throughout the day, this is 1 “unique visitor.” Lastly, if I visit a website repeatedly using Private Browsing (Firefox) or Incognito Mode (Chrome), etc, my cookies are cleared on browser close so I’ll be an additional “unique visitor” (with a ‘new visit’) on every subsequent visit.
So how does Google Analytics calculate visitors and visits?
When a user comes to a website tracked by Google Analytics, the javascript checks for the existence of GA’s cookies in the browser written to the domain that the user is on. If these cookies do not exist, ga.js creates these cookies. The cookie values are then passed to the Google Analytics server as a part of each hit level gif request.
Let’s take a quick look at these important cookies and some of the values in the gif request which define a visit:
The Random Unique ID is what allows GA to determine a “visitor.” This number will be the same in __utmz cookie as well.
Also note the session counter. This tells GA which number of visit to the site it was for this visitor (first, second, third etc).
**Source of images from Google’s Conversion University
According to Google, “the session number increments every time the campaign cookie is overwritten. The campaign cookie increments for every time that the campaign cookie is overwritten, even if it is in the same session.”
I might be missing something, but as far as I can tell, this wasn’t really true “then” and is less true “now.” Specifically, it used to be that the session counter would not update if a visitor came to the site via two separate campaigns. That is why in the above graphic the campaign number can be bigger than the session number.
In any case, these are the two cookie values that passed onto Google Analytics via every gif request (i.e. a hit, such as a pageview or event). A standard gif request is a whole bunch of data that looks like this:
I like using Chrome to see a parsed version which makes it easier to read.
A visit is simply a “Unique ID + Session Number.” Google Analytics records another visit every time that the Session Counter advances. The number of pageviews in a visit is counted by the number of pageview hits (_trackPageview) in a session. Similarly, the number of events per visit is determined by the number of event hits (_trackEvent) in a session. (Yep, there are different types of hits, reported by utmt in the gif request).
So what causes the session calculator to advance? Glad you asked. đ
Calculating Sessions – the old way.
Google Analytics used to use two cookies to determine session. UTMB and UTMC. In addition to having a pageview counter, the UTMB cookie also has a time stamp. By default, exactly 30 minutes after the time stamp in the cookie, the cookie expires and is deleted from the browser. (Poof! Goodbye.) So, if a user came to my site looking to learn about visitor level tracking in GA, got distracted on Twitter for 30 minutes in another tab, and then went back to my site to because they realized it was time for an Analytics Audit, the UTMB cookie would not be there and the session counter in UTMA and UMTZ advances on the next hit. If however, after every 25 minutes of Twitter distraction, they continued what they were doing on my site, their session would be extended. Sessions also used to end when a user closed their browser. This was due to UTMC. UTMC existed as long as their browser was open. Closed browser, visit over.
So, GA used to look for 2 different cookies. If either was missing, the session counter advanced on the next hit (i.e. pageview or event) and it was a new visit.
So, let’s take the following scenario. I’m searching on Google for arts and crafts paper.
- Google Search: “metallic craft paper” >
- Land on example.com home page. View for 5 pages | 3 minutes on site >
- Back to Google.com | 1 minute > Search for “american made metallic paper” >
- Return via SERP to example.com, this time a more relevant internal page >
- 19 pageviews later I purchase a nice roll of hard to find paper.
In the old way of tracking visits, GA would report:
1 New Visits with 25 pageviews. The visit would be attributed to “metallic craft paper” while the sale would have been attributed to “american made metallic paper,” as the UTMZ campaign cookie was updated. This, of course, is called ‘last click attribution.’ So if the visit is attributed to “metallic craft paper”, what about the “american made metallic paper” keyword? It would be there, but the number of visits would be listed as 0. (**Everyone should check out Michael Whitaker’s blog on this topic).
So, did I visit the site once or twice? Was the purchase made by a “New Visitor” or a “Returning Visitor.” It really depends on how you look at it, but in my humble opinion, I actually visited site twice. There is really nothing to say that had my 2nd organic search brought up a different site on the SERPs that I more interested in, I wouldn’t have clicked there. I believe that this is a significant part of the reason by GA changed how they deal with sessions.
Calculating Sessions – the new way.
1). There is no more UTMC cookie. Gone, deprecated, goodbye. That means that if I accidentally close my browser (oops!) or my computer crashes (d’oh!) and then reopen to the same site, GA will only look for UTMB. If I haven’t been idle for 30 minutes, the session continues.
2). Every time UTMZ gets updated, the session counter advances. The session is no longer solely dependent upon the utmb & utmc ”session cookies.” Remember how above it was possible for the campaign counter to advanced but the session counter to stay the same? That is no longer possible now. The GA session counter will always advance when the UTMZ cookie is updated.
Let’s take a quick look a real example that happened the day that Google Analytics made the change:
In this example, I’m using visitor level tracking by via custom variables. This visitor, let’s call him or her 1033107639
- Very first visit to the site was via a click on a Google Product Ad.
- 2nd visit is from a Google Product Ad. Either 30 min of inactivity happened, or user went back to Google and clicked on another listing.
- Visits 3-6 were via branded keywords. Might mean that 30 minutes expired between visits 3-4, 4-5, 5-6.
- 7th visit, back to Google… Clicked on product ad.
- Visits 8-11, category type keyword search. Might mean that 30 minutes expired between visits 8-9, 9-10, 10-11.
- Visit 12, product type keyword search
- Visits 13 -14, product specific search.
One thing that I didn’t take into account while trying to recreate this particular visitor’s buying process was tabbed browsing. This makes it a lot easier to have a more fragmented looking data set. The user interaction with the site will look like they are jumping all over the place between different channels and keywords, when if fact, they might be using Google Product Search in one tab and Google Web Search in another. Each time they enter the site from one of these different sources, it will update GA’s cookies and another visit will ensue.
**UPDATE** The multiple visits via the same campaign source (UTMZ values) in points 3 & 5 above were caused by the GA bug that was fixed August 16th. Using the API, I pulled down hour of day data for this particular user ID and discovered that there were not 30 minutes between visits. A takeaway from this is to always question the accuracy of data, even if you think you have a rock-solid implementation. In my case, the implementation was right on but there was a bug. But oftentimes I find implementation problems specifically because the data is fishy. In the use case above, 4 visits in a row for aluminum coat rack on the same day was “fishy.” With that said, the process of a user going back and forth between search engines and the site is accurate. After the bug fix, this the above visitors would have made 6 visits to the site, instead of 14. Before the August 11th session change, this would have been counted as 2 visits.
Implications
I’ve been examining the impact of this change on GA’s reported data on lot of different sites (with unique visitors per month of 1K, 3K, 50K, 150K, 350K, 1.2M, 4.8M, 5.5M and 7.5M respectively). The biggest changes I have seen are on ecommerce sites. Perhaps on a future post I’ll do some statistical analysis by site type. For many out there commenting on the forums, common shifts look like this:
More Visits
The first and most obvious change is to see the number of visits increase while unique visitors remain the same.
This is happening because whereas previously a visitor could back and forth between a site and search engines, comparison shopping engines and the like all within one visit, now each time they return to the site from a with a different source, medium, campaign, ad content, keyword or gclid, it is a new visit. (That was a mouthful).
**UPDATE** After GA fixed the bug, the number of increased visits for a number of sites should not be as inflated. However, for the same site I analyzed above, we are still seeing a significant increase in visits compared to unique visitors. Albeit, not a 30% plus increase, but there is definitely a change.
Visitor Recency
We see lots of visitors to the site returning via a different source within what used to be counted as the same session.
**UPDATE**
After the bug fix, we still see a significant number of visitors returning to the site via a different source within what used to be counted as the same visit. However, the numbers are not nearly as inflated.
Visitor Loyalty
From the visitor loyalty distribution, we see that many of the previous “1 time” visitors are indeed coming back to the site many times as a part of their shopping process.
While it is true that many of the previous “1 time” visitors are indeed coming back to the site multiple times, it is not nearly as many as previously indicated when there was a bug.
Average Time on Site, Pages per Visit and other “visit” related metrics.
These metrics will tend to look “worse” since sessions are being updated more frequently.
Since a fundamental way of looking at one’s site via GA has changed, the average person (and even some analysts) need to be very careful about drawing conclusions from data. For example, ”If I’m seeing a large decrease in average time on site it means that users are finding my content less meaningful than they used to, right?” Well…yes and no. All things being equal, yes. But now that the way sessions are calculated has changed the sudden drop means that users are going back and forth to your site more than you thought they were. Their average time per visit is less, but the aggregate amount of time a user spends on the a site is the same.
The same goes for pages per visit. Visits are starting anew after a visitor has viewed less pages since they are updating their campaign cookies.
The same goes for bounce rate. Visitors will now be more likely to see one page and then come back to the site and have it be a bounce then it used to be, where their return to the site would simply extend the session and result in the visit not being a bounce.
Last but not least, conversion rate. Especially for ecommerce sites, a visitor who goes back and forth between the search engines, CSEs, and the ecomm site will have many more visits until conversion. This is a great boon of information for those who have access to multiple touch attribution models, including the Multi Channel Funnels in Google Analytics which is in Beta. For everybody else, it will look like there is a drop in conversion rate.
For all of the above, I recommend that people use custom reports and/or data directly from the API to create some calculated “per visitor” metrics. These will be most helpful for measuring any year over year or month over month changes.
**UPDATE** I thought I would throw in this chart of Percent of New Visits over time. This was definitely one of the data points that was most impacted by the bug. That said, we definitely see that the % New Visits metric has been impacted pre and post session change. The question, of course, remains for the analyst to figure out how to interpret this change. I often view % New Visits as a metric that informs me about acquisition potential (or success). The change in the way sessions are calculated will provide a more accurate portrayal as to where the “first touch” visitors to the site are really coming from.
In the previous paradigm, a user’s first visit (“new visit”) to a site might be reported as the 3rd or 4th click they made from an external source, all within the same session. Now, through segmentation and analysis of the % New Visits metric across multiple channels, we’ll be able to see more accurately where that first visit really came from, and where the greatest acquisition potential lies.
Of course, until Multi Channel Funnels become available for all in Google Analytics we won’t really have a super deep understanding of attribution (and even then, it will still be lacking). For now, I think it is great that we’ll be able to more accurately see where those initial visits to our website are truly sourcing from. Where they go afterwards is still anyone’s guess.
Lingering Questions
So, there are still some things which are really eluding me. I’d love to hear some answers from colleagues about the following two issues.
1). Cookies aren’t updating as expected. Verified in gif requests as well….
So, how in the world are sessions actually tracked now?
2). Big increase in Visits to Adwords in absence of new clicks.
I would expect that a visits to other channels would increase. But in this case, there is an increase in visits relative to the increase in clicks. Clicks have always been calculated much in the same way that visits are now calculated. Namely, if I clicked on an ad, went back to Google and clicked on an Organic listing,
- In the old paradigm, 1 visit for the Google / Organic keyword and 0 visits 1 click for the Google / Adwords keyword
- New paradigm,1 visit for the Google / Organic keyword and 1 visits 1 click for the Google / Adwords keyword
In both cases there was always a click recorded in Adwords. This is the biggest stumper I’ve found to date.
**UPDATE** New analysis reveals that neither the cookie question or the Adwords click question have changed post bug fix
Best,
Yehoshua
Peter McNicholl says
This is a MUST READ article on GA. Thank you so much for your effort in this!
Merlin George says
Brillant stuff man..
Joppiesaus says
Hi Yehoshua, excellent article!
I myself made a simple counting mechanism that measures clicks. Each click gets its own ID (and with it the corresponding IP adres and time stamp).
These clicks are redirected to websites that have Google Analytics on them.
My finding: Google Analytics measures up to 50% less visits compared to my click measurement.
Reading this article I think I kind of get why
this is happening because of the way visits are âcalculatedâ.
My idea to get our click measurement more in line with Google Analytics visits is to add a unique UTM_campaign value with my click ID to every clicked URL.
Do you think this would result in more comparable clicks and Visits in Google Analytics? Or do you guys have other tips regarding this? Google Forums haven’t been any help I’m afraid…
Yehoshua Coren says
@5dc08e85912076bc0ba93aea515a5dd8:disqus
The issue probably lies in the “redirects” more than anything else.
What are you trying to accomplish with the click tracking? Measuring “outbound” clicks to other domains? Affiliate marketing? Something else?
Joppiesaus says
Hi Yehoshua,
What I’m hoping to accomplish is to create a measurement ‘system’ that our users would trust and gives me insight in all the measured clicks for all the users. Maybe in the future I could even offer a paid service based on the clicks measured by my own system. Ofcourse if they would see huge differences between Google Analytics and my system this could never be the case.
The clicks are measured server-side based. Looking at how we track, we are basically in the middle of the click process for a visitor:
â (A) Start website with URL to user’s website
â (B) Redirect via our click-measurement-tool
â (C) Final user’s website.
The URL on A would look something like this: http://mydomain.com/Api.asmx/GetClick?p1=5554ADD80E3D4336422B3EECEFA047&p2=B96225E18EF142588A051DB2C6E895
Then (B) the information on the URL is collected on my redirect tool and added with UTM information for tracking. Something like: http://www.usersite.nl/vacature-details/1624/9721129/Assemblage-medewerker.html?utm_source=usersite.nl&utm_medium=OurName&utm_campaign=Ourname&click=442614ABE4D21231C985FF4F2DDFFD
Then on (C) the visitor is redirected and the UTM information (source, medium, campaign) can be seen in Google Analytics.
The difference in measurement B (clicks measured server side) and C (visits Google Analytics) is enormous. I was wondering if adding the unique ID 442614ABE4D21231C985FF4F2DDFFD to the UTM_campaign would minimize this difference.
I can’t test this properly on short term, thats why I’m looking online for some information on this if I’m on the right track.
Brian says
I can’t seem to find a date on this article. The UPDATE comments don’t have dates either, or if they did, were missing a year.
Eduardo Cereto Carvalho says
Somewhere in August 2011, based on the page url
od3n says
good stuff for analytics geek!
Notleilani dot com says
Wow. I do check on my visitors almost everyday and it’s making me paranoid! This has been educating! Lol
Brooke says
Any idea as to why a session would be created with EACH page refresh? For some reason there is a problem on an SSL site that I am managing and the Bounce Rate is 99% and Pageviews/Visit is .99 so nearly 100% and 1 exactly. I presume cookies are not being issued maybe.
Yehoshua Coren says
@disqus_lPobVELivr:disqus – please either post or email me the URL and I’ll let you know what the issue is.
Best,
Yehoshua
Hero Snow Removal says
Question: Say I have my home page set to open 2 or 3 (or more) tabs, all of which are different PAGES, on a given WEBSITE. If I merely open my browser which is set to open multiple PAGES of that website via multiple tabs simultaneously; then close this browser: would Google consider this a bounce?
It’s my understanding that this would be considered 2 (however many tabs are set to open) page views, from the same visitor. Meaning this would be more than the required 1 page view to qualify as a bounce. Is this the case? Any evidence, proof, opinion regarding it?
Yehoshua Coren says
Any time there are more than one interactive hit during a session, it is not considered a bounce. In the example you gave above, each tab loads a new page executing more than one pageview. There would not be a bounce.
Hero Snow Removal says
Thanks Yehoshua!
Kael says
Question: just to make sure for myself too. If I use UTM tagging to track insite banner traffic (insite product promotions), the UTM tag will create a new visit/increase the session counter and cut off the refferral data? If this is true, what is a smooth workaround for this case?
Yehoshua Coren says
Correct. You should stop that internal banner tagging right away. Instead, use event tracking to track clicks on promotions.
Marc Kennedy says
Yehoshua,
How do I use event tracking to do this?
wolfgang puck says
maybe I’m blind, but I don’t see a timestamp/date on this article. Good read, and I haven’t finished it yet, but you should definitely have the date and time of your posts listed. It’s very useful info to me as a reader.
John says
Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I canât wait to read lots of your posts. Thanks for sharing.
unique clicks
AlekSano says
We have decreased avg. session duration in our site since 29th April, can be there some google analytics update or similar situation like you wrote in 2011 ? thanx so much.
noman kt says
Analytics all sessions down on this site http://softrainy.blogspot.com what should i do now help some one
Yehoshua Coren says
You should add Google Analytics to the site via the blogger backend.
Louis says
When comparing my website’s sessions and user figures in GA from time period July 2012 – July 2013 & July 2013 – July 2014, my sessions have gone down, but users have gone up. Can anyone explain why this would be?
tellItLikeItIs says
There used to be a “sites also visited” reference in google ad planner – was that replaced with some other functionality someplace? i can’t seem to locate it – thanks for any replies
Great article, ninja!
Excelanto says
Thanks for your valuable posting.I have collect more than information from your website. It is really wonderful blog. please added more than tips. i’m working in at cms company in chennai.Here providing very low price CMS , responsive webdesign and ERP. you have any more than information kindly make me call this number 044-42127512 or send your mail [email protected].
Excelanto says
Thanks for your valuable posting.I have collect more than information from your website. It is really wonderful blog. please added more than tips. i’m working in at content management system in chennai.Here providing very low price CMS , responsive webdesign and ERP. you have any more than information kindly make me call this number 044-42127512 or send your mail [email protected].
Excelanto says
Thanks for your valuable posting.I have collect more than information from your website. It is really wonderful blog. please added more than tips. i’m working in content management in chennai.Here providing very low price CMS , responsive webdesign and ERP. you have any more than information kindly make me call this number 044-42127512 or send your mail [email protected].
GR says
Hi Ninja,
by any mean do you know if Google changed the way of counting sessions vs visits since April 2014. Sessions keep dropping since April…so maybe Google did not count visits (2013) the same way they are counting sessions (2014)
Thanx
Yehoshua Coren says
If your account was automatically upgraded to Universal Analytics around that time, and if you had any session based settings in your GA Classic tracking code snippets, you may notice a difference. My hunch is that you have more of an acquistion issue than a tracking issue.
Excelanto says
Thanks for your valuable posting.I have collect more than information from your website. It is really wonderful blog. please added more than tips. i’m working in Top ERP Company In India.Here providing very low price and Quality ERP,Cloud ERP, CMS , responsive webdesign and ERP. you have any more than information kindly make me call this number 044-42127512 or send your mail [email protected]….
Excelanto says
Thanks for your valuable posting.I have collect more than information from your website. It is really wonderful blog. please added more than tips. i’m working in Erp in india.Here providing very low price and Quality ERP,Cloud ERP, CMS , responsive webdesign and ERP. you have any more than information kindly make me call this number 044-42127512 or send your mail [email protected].
shakil says
We have following data in our reportsGoogle Impression report = 605 clicks
Organic traffic report = 900 sessions
Why there is discrepancy in clicks and sessions ? Is it due to the reasoning you have given in the last section ” 2). Big increase in Visits to Adwords in absence of new clicks. –
shakil says
HI Yehoshua,
Question:
We have following data in our reportsGoogle Impression report = 605 clicks
Organic traffic report = 900 sessions
Why there is discrepancy in clicks and sessions ? Is it due to the reasoning you have given in the last section ” 2). Big increase in Visits to Adwords in absence of new clicks. –
Sam C says
Does anyone know if a single page view can and/or always counts as a session? Does the presence of an engagement hit have any impact on this? I have been searching for an answer to this question and can’t seem to find one.
Yehoshua Coren says
A single page view will always be a part of a session.
Loeez says
Is there a minimum duration on a webpage to be considered as a session? I gave a vendor tracked URLs and noticed a lot of clicks on them, but no sign of this traffic on GA. I tested the same links myself today and did see my session recorded by GA. I’m wondering if it means people clicked on the links but bounce right away (less than 10seconds? or 20? on the website?). Thanks!
Yehoshua Coren says
There is not minimum duration. If the GA javascript loads and send a hit of data to the GA servers, then a session will be initialized.
Pucca SegĂșn MĂ©ndez says
Hi Yehoshua, you may help me out here.
How come that I get a different value for âsessionsâ when I use this add-on report and Google Analytics directly? (using the same dates, property, view, etc.)
Please help! Thanks a lot.
Textile Student says
This is awesome !!! like it so much ….!
Vishy says
How does GA knows where the traffic is coming from. I mean suppose if I search on bing.com, how does GA knows that I came from bing.com ?
Hut Solutions for Home says
Hey that content gave me good idea about google analytics. I wish to know something problem about my analytics and hope i will get my answers here.
when i observe traffic data on google analytics with source/medium as my primary dimension and landing page as secondary dimension, i sued to to see 00:00:00 average session duration and 0% bounce rate with 0 pages/session / more than 0 pages/session.
Can you please define how this could be?
I have implemented scroll tracking and chat as events