Why the Death of Sessions is a Myth
We are not really in an “Age of User-Centric Analytics” yet — rather the Opposite
Especially since the advent of Google Analytics 4, I have been hearing the argument ever more frequently: Sessions have become irrelevant. We are in an age of “user-centric” Analytics. Not really. But what would be the ideal measurement time frame?
A myth that became popular when GA4 became a thing
The argument that Sessions are irrelevant and that we are in the age of user-centric Analytics has often been used by people trying to sell you on Google Analytics 4. The same GA4 was and is in its foundation still Firebase Analytics, a mobile-only solution that did not know Sessions and was merely an Event logging machine with some User properties.
Long before GA4 actually had Sessions after all, I remember a conversation with a GA Product Manager who wanted some input for what would be the most sensible approach to content flow reports. When I said that I analyze content flow mostly within Sessions, he lamented that there won’t be a Session scope anytime soon, as Session calculation was too processing-intense. Processing-intense or not, other tools don’t have a problem even offering ad-hoc calculation of different Session lengths (e.g., see this Adobe Analytics example). So it probably depends on the data model—another topic that would fill another article (the often-praised, supposedly superior GA4 data model).
So the unfounded;) conspiracy theory would be that Google, in an attempt to brush over a glaring hole in the data model of their next-gen Analytics solution, started to spread the myth that Sessions are an outdated concept and all that is important nowadays are Users and Events.
Later, Google had to succumb to the pressure of customers and monkey-patched Sessions into GA4. And the way they have done this is such a grave misconstruction (sessionization in the client anyone??) that I sometimes wish Google removed it and started all over again.
I am talking about Sessions, not session_start Events
While we are lashing out at GA4 (sorry, it’s not that bad), let’s make sure we don’t confuse Web Analytics with Google Analytics: When I say “Sessions”, I mean Session scope, not “session_start” Events. So the important thing behind a Session is that it groups together all interactions that happened within a certain time frame, usually until 30 minutes of inactivity. This time frame is of course arbitrary, as the ideal Session length is hard to determine — we’ll get to that ideal time frame again in a bit.
“Sessions are only important for Marketing, but not Web Analytics”
In a recent and once again excellent Analytics Pioneers Community Training, somebody asked: “Do we still need the Session logic? Won’t it all be more and more User-centric in the future?”. Somebody argued that Sessions were important for Marketing, but not for Web Analytics, because Sessions have a Traffic Source (e.g. a Campaign), and that makes them important for Marketers, because Marketers want to analyze the traffic that their campaigns bring, and if somebody visits a site multiple times, we need to know which was the traffic source for each of those Visits (Sessions), etc.
While this sounds a bit like confusing Sessions with GA4 session_start Events, I agree that this a typical and important use case for performance marketers. But saying that Sessions are not important for Web Analytics or even talking about having to “educate Marketing” on that — I don’t agree. Let’s look at some examples:
Examples why Sessions are important
1. Shops with different products
Imagine you have a brick-and-mortar shop and regular customers. Your least favorite customer Franz comes in one day and buys bread. A week later, he visits again to buy pants, but he can’t find anything that fits and leaves. It is of course not uninteresting to know that both “Visits” were by Franz. But if I am the owner of this shop (and have installed video cameras), I need to be able to look at each Visit separately: The Franz that wanted to buy bread and the Franz that tried to buy pants will have a completely different journey, as both Visits come with completely different intents.
Time frame of intent as the ideal measurement unit
Let’s take a step back. What would be the ideal measurement time frame? Because Sessions, of course, are not ideal! People stop in the middle of buying, wash the dishes, and then finish their purchase in what is technically a new Session. So would the ideal time frame be simply “until the next purchase”? No, because when do we end that time frame if Franz does not find what he wants and abandons the shop, but then comes again to buy something completely unrelated? We will mix together his current unsuccessful purchase journey for pants with his next one for cat food.
The ideal measurement unit would thus be neither Session nor Users, but “time frame of intent”. Here, we have different types of intent, e.g. “buy clothes”, “buy groceries”, “inform about offers”, “contact support”, “return products”, and we then analyze user behaviour in these time frames of intent, ignoring that there can be two or more completely different intents that are handled in parallel (e.g. buy bread and return empty bottles).
Working with time frames of intent is difficult (at least within an Analytics tool), as it would require knowing or guessing the intent of each visitor. It would also require an Analytics tool that can group user behaviour in time frames of user intent. But User scope is definitely too long. So, given the complexity inherent in time frames of intent, Session scope remains our closest guess to “time frame of intent”.
Btw, it is not so far-fetched to work in time frames of intent: Some CDPs or Retargeting solutions for example have long allowed for intent-centered logic. E.g., a user gets into an audience of “wants to buy” when she adds a product to the cart. You can then define rules when that intent ends, so when the user is removed from the Audience again, e.g., “has purchased” or “has not bought after x days/hours”. See also the last part of this post.
Enough philosophy, back to our example: Similarly to the brick-and-mortar shop Analyst, an Amazon shop Analyst would be fired quickly if she dissected at User scope only. Let’s look at this simple example of a fallout report (left = User, right = Session scope). The rates are drastically better in User scope (CR up by 70%), because more and more users will at some point get to a product page and order something. But that one successful conversion journey for the bread completely cloaks the unsuccessful one for the pants! It hides the fact that I may need to optimize my pants-buyer journey. User scope makes things wishy-washy!

Similar case: Content flow reports (e.g., how do people move from website section to section). As mentioned, I usually want the flow to start when the Visit starts, and end when the Visit ends. Otherwise, there will be more “strange” flows like users going from the order confirmation page (last Visit) to the homepage (start of next Visit). See the following example and how big the difference is if we change the scope from Visitor (User) to Session (Visit): In User Scope, it looks like people come to the Homepage from Product pages, but that changes massively in Session scope where the Product page is much less important, and StaticPage (Campaign Landing Pages) leaps ahead. Both User and Session views can be relevant, but it is important to have both.

You might also say: “Lukas, your examples are fine for big shops with repeat buyers, but if I am selling yachts or nuclear power plants (like the renowned Dr. h.c. Markus Baersch on atomkraftwerke24.de), it is unlikely somebody buys multiple times, so it is fine to focus on Users only!” But even then: The user will not buy a nuclear plant directly. She will come multiple times, with different intents. The first time, she wants to learn more about the plants, later she will come to compare offers, then she will want to talk to somebody to test the radiation, etc.
2. Normalizing how we count metrics
Let’s stick with the shop example. If many of your customers come regularly, how do you want to report on their interactions with the assortment, e.g. product categories? You can count every Hit (only option in GA4). You can also count once per Session (GA3 doesn’t offer that for E-Commerce, but at least for Goals) or once per User. I personally find counting once per Session the best approach in most cases, so if the tool lets me, I normalize most E-Commerce metrics on a Session scope and make only these metrics available to the regular Analytics users (because they will get confused otherwise). See also my article/video on how to create metrics that count once per Visit or Visitor.

Why Session? Hit scope is too much because it counts each reload, each back-and-forth of indecisive users. There are also often tracking issues as it is hard to make sure something gets tracked exactly once only. Moreover, assortment categories where people compare a lot of similar products get overvalued in their importance. See some examples in the table where the Hit-level is at more than 3 times the Visit-level (e.g. #7), and others where it is less than twice (#10). These differences are interesting in terms of “within-category browsing depth”, but the question “which category gets the most traffic” should be focused primarily on a Session scope. User scope on the other hand is too little, especially when looking at reports with Conversions (think of the 2 Visits, 1 Order example of Franz again).
3. Short-lived Cookies = Users become ever more inaccurate
Browsers are treating cookies very differently these days, e.g., Safari deletes your regular JS cookie after a maximum of 7 days. In Chrome, cookies still live forever. But even if we still had endless cookies everyhwere, we live in a world of multiple devices where the same “User” can quickly have Sessions on many different hardwares and browsers. While some rare businesses have the luxury to actually tie each or at least most of those devices to the same user, that is an exception.

All this is exacerbated by privacy frameworks like GDPR which scrutinize sticky user identifiers. The French CNIL GDPR interpretation allows some Analytics tools if they limit their tracking to a Session cookie only. So in our world of many devices, browser restrictions, and privacy regulations, the Session more and more becomes the only unit that is measured consistently. In other words:
Talking about the “age of the user” in Analytics is a grave misconception of the times we are living in.
Isn’t Attribution related to Conversion Events enough?
Another view in the aforementioned discussion was “It is enough to attribute Traffic Sources to a purchase/conversion Event, it does not matter much how many sessions were in between”. I find this a rather limited view of Web Analytics. As if all we do with Analytics tools is checking out which Traffic Sources lead to how many conversions. Maybe if you are a performance marketing agency… What about all the “Product Analytics”, all the steps in-between that make or break the user journey once somebody arrives on our site?
Let’s look at Adobe Analytics again, which has long offered to attribute Custom Dimensions to expire after anything you like. An On-Site Search Term / Marketing Campaign / Product List Name can expire after a Hit, after a Session, after 3 minutes, after n days, after a purchase Event, after a “search result click” Event, after a “checkout start” Event etc., and you can even make it product-specific (so Search Term x expires only if that product that was clicked for term x also gets purchased). With Adobe’s Attribution iQ, you can even change that on the fly to any time frame in days (no support for product scope though). This is not the same as analyzing based on the “intent time frame”, but it is not so far from it.
But what about user-centric tools like CDPs?
Yes, some modern technologies like CDPs are all “User-centric”, focusing on building audiences based on User profiles with attributes. So I don’t deny that in a CDP, the unit is and has to be the User. But that does not mean that Sessions are irrelevant in general. Trying to build up User profiles and analyzing User journeys with the help of the Session scope are simply two different pairs of shoes. Both have their legitimate use cases.
Still don’t agree?
You may! :) I want to learn from you in that case, so please post a comment. Of course, I am also happy about any other comments.
Coming up soon:
Is the “Pageview” becoming irrelevant, since “modern tools” employ an “Event-driven data model” where everything is “just an Event”?