Understanding Session-level vs. Event-level attribution in Google Analytics hero image

Understanding Session-level vs. Event-level attribution in Google Analytics

1 Sept 2026 • 6 min read

Last non-direct click attribution is used in both the Traffic Acquisition and Advertising reports in Google Analytics, but still returns different values. Neither of them is wrong and this isn't a bug, it's all down to timing and scope.


Last non-direct click attribution

Probably the most frequently used report in Google Analytics is Traffic Acquisition. People like it because it uses last non-direct click attribution - even if they don't know that's the reason. Not only was this the only view of marketing back in the Classic and Universal Analytics days (except for when the MCF reports came in), but it's easy to explain and understand when compared to the other models available such as in the User Acquisition report.

So when people eventually graduate from using just this report and head into the Advertising section and see there's a report comparing last-click to Data Driven Attribution (DDA), it's always a bit of a surprise to find the numbers don't match. Not between last-click and DDA - that's kind of the point. But between the supposed 'same' last-click model in their BAU Traffic Acquisition report and the last-click model numbers reported in the Advertising reports.

The last-click model looks back at the last channel someone used to get to the site. The non-direct part essentially ignores any Direct traffic (i.e. typing in the URL, bookmarks or not including UTMs), and then attributes to the last channel used beforehand. For example, a user clicks a Google Ads link last week, then arrives directly yesterday and converts - Google Ads keeps the credit in the last non-direct click attribution model. Direct is purely a fallback channel. It only 'wins' when there's no non-direct channel used in the user's history to credit.

So far, pretty uncontroversial. Where the two reports diverge is when they do the attribution.

Session-level

The Traffic Acquisition report, and anywhere we use the 'Session' prefix channel dimensions, works at the session scope. Google Analytics does the attribution at the moment the session starts, logs it, and applies it to everything that happens within that session.

What's the most recent non-direct channel for the session?

Event-level

The Advertising reports work at event scope. That is, each individual event gets an attributed result.

What's the most recent non-direct channel for the event?

Sessionisation

The key thing to help understand this is that Google Analytics does not start a new session when the user uses different UTMs or referrers. This is unlike Universal Analytics, which, believe it or not, still lingers in the collective consciousness!

Let's go through an example - Someone types the URL directly in the browser. Let's say it's their first visit and they accepted consent for simplicity. The session starts and Traffic Acquisition reports "Direct" as the attribution.

This user then browses the site and then wanders off - maybe to Google your product or service to compare prices. Let's say they then clicked one of your Google Ads links, which lands them back on the site, and then they convert.

The conversion (or rather, Key Event) would be attributed to Direct in the Traffic Acquisition report, but Google Ads in the Advertising reports - even though both are using the same last non-direct click attribution model. The model is the same, but when they do the attribution is the difference.

Assuming there is no gap between logged events of more than 30 minutes (or whatever your Session Timeout window is set to), GA will track and report only one session. One session in GA can contain multiple channels, but only one would have 'started' the session.

One session, two channels, two different perspectives on last-click attribution

Real world example

Here's a live example, using device-based data only - consented users, no modelling on top:

Channel Purchases (session) Key events (event) Diff
Google Ads 2,006 2,307 15.00%
App 765 908 18.69%
SEO 804 876 8.96%
Microsoft Ads 239 234 -2.09%
Email 178 167 -6.18%
Direct 592 134 -77.36%
Other 106 65 -38.68%
AI Tools 27 26 -3.70%
Total 4,717 4,717

Direct sheds 458 conversions (about £52k of revenue), and the other marketing channels hoover up nearly all of it.

That's the mechanic working exactly as designed. People arrive directly, disappear, come back through a marketing channel, and the event-level view hands that channel the credit the session-level view had fixed on Direct.

This is not an exclusive behaviour for Direct, as we can see in the example above for MS Ads, Email and AI Tools - where there's traffic coming in via these channels, but the users leave mid-session and come back to convert via another channel.

The pesky modelled data frustration...

Let me first start by saying that I don't dislike the behavioural modelling in GA. Sure, why not use it? Google Ads, Meta Ads, etc. all do it, so why not here too? I presume most people have the BigQuery export enabled and used by now, so the 'real' data is always accessible when you need/want it. So why not have the UI's version doing its own thing. Okay, spiel over.

However, if you do have the modelled data included (i.e. when using the Blended Reporting Identity) and run these two last non-direct click attribution-based reports, it can all be a mess!

I have seen wild swings from channel to channel, and somewhat different trends between the Acquisition Report and Advertising reports too. That gap isn't attribution scope, it's the modelling.

And to make things harder, we don't know what is the scope and what is the modelling that's changing the numbers. That's why I change the Reporting Identity to 'Device-based' to analyse the differences first, to be sure it's as we expect, then any weirdness on top of that is all due to the modelled data.

Again, I don't object to including the modelled data in GA - as long as this sort of thing doesn't cause more questions than answers. If it's not helpful, turn it off. You can always turn it back on down the line as you need.

Conclusion

I'll keep this short and sweet - if you want lower Direct figures, use the last-click model in the Advertising reports. But if you want an easier life, just stick to the Traffic Acquisition numbers, and keep the Advertising reports for analysing DDA and the user journey.

Yes, this is an oversimplification. But let's be honest, if you read this far, then you're in the minority of people who care this much about this sort of thing, like me!