Session-to-click ratio: what to do when only 50% of clicks become sessions
Once upon a time, in a Google Ads account not so far away, there lived a few campaigns. They brought in traffic. They brought in sales. Everyone was happy.
Until they weren’t.
Sales were growing, ambitions were growing right along with them, and eventually one thing became clear: to keep moving forward, the team needed to invest in broader reach campaigns. So the marketers did what marketers do best when things get serious: they turned to the data. And then the room went quiet.
Google Ads was reporting plenty of clicks. Google Analytics, however, was telling a slightly different story. Sessions were barely reaching half the number of clicks. Half. The SEM team knew one thing: traffic had to grow. They also knew something else: something was very, very wrong.
How do you generate more sessions when half of your clicks seem to vanish into thin air?
Sounds familiar? Then you’re in the right place. If it doesn’t, check the session-to-click ratio in your own campaigns. Make sure to break it down by campaign type. Fair warning: the results can be quite a ride.
Now, back to our story. Let’s follow the same trail of thought as its main characters: the SEM specialists and the Google Analytics team at data.rocks.
Is the gap between sessions and clicks actually a problem?
That was the first question on the table. And the answer came almost instantly, like the eternal mantra of analytics:
It depends.
Clicks and sessions are two completely different metrics, so their numbers will almost never match exactly. And that’s normal.
In Google Ads, a click means someone clicked an ad. It is counted at the moment of interaction with the ad, regardless of whether the landing page actually loads or whether the user does anything useful once they get there.
In Google Analytics, a session only begins when the Analytics code successfully fires in the user’s browser. A single session includes all user activity within a given time window, by default until 30 minutes of inactivity.
So the session-to-click ratio shows how far these two worlds drift apart. The calculation is simple:
- Google Ads: 1,000 clicks
- GA4: 500 sessions
- Session-to-click ratio: 50%
And this is where the long list begins: all the reasons why clicks refuse to turn into sessions.
The most common ones include:
- The page doesn’t load in time — the user clicks the ad, then closes the tab before Analytics has had a chance to wake up.
- Script blocking — ad blockers, privacy settings, no cookie consent. A classic.
- One click, many sessions — or the other way around. Google Ads counts clicks, Analytics counts sessions. If a user clicks an ad twice within 30 minutes in the same browser, Analytics may register only one session. But if they save a link with the click ID, the famous gclid, in their bookmarks or send it to someone else, one click can generate several sessions.
- Timing differences — Ads attributes the click to the moment the ad was clicked, while Analytics attributes the session to the moment the user actually lands on the website.
- Poorly optimized campaigns — for example, ads appearing in children’s gaming apps. Plenty of clicks, almost no sessions. Surprising? Not really.
In practice, GA4 almost always records fewer sessions than Google Ads records clicks. And as long as the gap stays within reasonable limits, there is no need to panic.
But what exactly counts as reasonable?The team looked at data from several data.rocks clients. The discrepancies ranged from 10% to as much as 60%. The conclusion was simple: the smaller the gap, the better everyone sleeps. But once the number gets close to 50%, it is time to pause and start digging.
How does the discrepancy vary by campaign type?
The next step was obvious: check whether all campaigns behaved the same way.
They did not.
The session-to-click ratio clearly differed depending on the campaign type. The highest values appeared in display campaigns. The lowest appeared in search campaigns. Pretty much what you would expect.
Further analysis in Google Ads revealed several untapped optimization opportunities, including excluding ad placements on websites and apps with games. These are true gold mines of accidental clicks.
The problem was that this still wasn’t enough.
There were no glaring campaign mistakes. Different audiences were being tested. Different formats. Different messages. There was no single obvious culprit.
And time was not exactly on anyone’s side. The client was starting to get impatient.
At that point, the SEM team decided to bring in the analysts. Because if the problem wasn’t in the campaigns, maybe it was hiding somewhere… deeper.
How does GA4 affect the session-to-click ratio?
The analysts dived into the GA4 and Google Tag Manager setup. Pretty quickly, they found a few interesting clues.
Missing modeled data
Modeled data applies to users who have not given tracking consent in the cookie banner. If consent mode is running in advanced mode and GA4 has enough data to work with, Google’s algorithms can fill in some of the missing pieces.
In this case, modeled data was inactive, which made the discrepancy bigger. Unfortunately, even turning it on would not have solved the problem to a satisfying degree.
Short sessions
And this, as it turned out, was the real issue.
The Google Analytics tag was loading after more than 5 seconds. Sometimes even later. Which meant one thing: the shortest sessions were not being recorded at all.
The analysts reached for their secret weapon: developer tools. And their suspicions were confirmed, as in some cases, the GA4 code was firing only after 7 seconds.
So they added a lightweight traffic analysis tool that kicked in after just 2 seconds. And then the numbers started speaking for themselves:
- on average, 26% of traffic disappeared within the first few seconds of landing on the website,
- GA4 was missing around 20% of traffic from Google Ads, and in the case of Instagram, even 80%,
- up to 10 seconds could pass between the ad click and the session_start event,
- the discrepancies were largest on mobile, where accidental clicks happen more often.
They had found the problem. Relief followed — but only briefly.
The analysts prepared recommendations for the IT team: clean up the code, remove unnecessary scripts, adjust the Google Tag Manager setup. The basic health and safety rules of web development.
And then came another message, one that cooled everyone’s enthusiasm rather effectively.
The client couldn’t involve the IT team. At least not right now.
Time was short. Pressure was rising. Weeks of development work were off the table.
So the analysts and the SEM team joined forces to find a solution they could put in place right away.
How can you optimize Google Ads campaigns to generate sessions in Google Analytics?
At that moment, fixing the root cause — the way the GA4 code worked — was not an option.
“But wait,” someone said at one point. “Do we actually need sessions that last just a few seconds?”
Hard to argue with that.
Visits like these fill remarketing lists, but they rarely bring real value. And if GA4 could not be improved right away, maybe the campaigns could be taught to bring in better sessions instead.
Conversion setup in Google Ads
The team decided to test campaigns optimized not for clicks, but for sessions recorded in GA4. To do that, they needed to create a set of less obvious conversions that would signal real user engagement.
Engagement-based conversions
This was the most natural set, based on what users actually did on the website.
It included events such as product clicks, add to cart, cart views, checkout starts, adding payment details, and using the product search.
This type of conversion works best in display campaigns, which rarely drive sales directly but can be very effective at building interest. Of course, a lot depends on the industry and on the website itself. If users have a reason to stay longer — a blog, a broad product range, collections to browse — the tests can deliver very promising results.
The goal was simple: reach people who actually interact with the content.
And that, as we all know, is the first step toward purchase.
Cookie banner consent
The second group was more technical. The page_view_consent_granted event guarantees that the session is counted regardless of modeled data. Sounds good? Almost.
Its weak point is that it can bring in lower-quality traffic, because not everyone who clicks “Accept” is genuinely interested in the offer. That is why this conversion was added only to selected campaigns and used mainly as a reference point in the tests.
Minimum session engagement
The third set was an attempt to find the sweet spot.
Two page views, or 2_page_views, and at least 10 seconds spent on the website — basically the equivalent of the user_engagement event in GA4.
This threshold helped filter out completely accidental visits, while still increasing the number of sessions the campaigns could realistically deliver.
The SEM team added these conversions to selected display campaigns and started watching closely: how would the session-to-click ratio change? What would happen to the cost per session?
The goal was clear: bring in as much quality traffic as possible — traffic that would actually stay on the website and remember the brand.
Campaign optimization
Once the micro-conversions were live, things didn’t exactly settle down.
The team now knew what to measure. But it still wasn’t clear which signal would truly steer the campaigns toward valuable traffic, rather than just toward nicer-looking charts.
There were several possible paths. Each looked promising. Each could end in disappointment. And the budget does not particularly enjoy experiments with no results.
So the campaigns started running in parallel, in different configurations. The team tested, among other things:
- a mix of engagement signals — campaigns optimized for a combination of events indicating interest: 2_page_views + engagement + purchase,
- a technical signal — using the cookie banner consent event, page_view_consent_granted, as a benchmark for the easiest traffic to acquire,
- the classic click-based approach — deliberately kept as a control group.
One question hung in the air: would the algorithms learn that the point wasn’t just to bring people in, but to bring in people who might actually stick around?
A new chapter: Demand Gen
Until then, the display network had been the natural choice for building reach. It was broad. It was familiar. It was everywhere. And yet, it was increasingly disappointing. Even after excluding the most suspicious placements, there was still a feeling that part of the traffic was nothing more than digital noise.
And that is when a new character entered the story: Demand Gen campaigns.
At first glance, they seemed to do something similar: build brand visibility. But in practice, they operated in a different environment — on YouTube, Discover, and other placements closer to content, closer to the user, and closer to moments where attention is more than an accident.
That difference slowly began to change the course of the story. Where traditional display often ended with a click and no follow-up, Demand Gen more often brought users to the website for real. Not always for long. Not always with immediate purchase intent. But often enough for the data to start looking different.
When the numbers started speaking a different language
Weeks went by. Campaigns learned the new signals. Budgets were moved carefully.
And then came the moment everyone had been waiting for: the numbers finally started to agree.
Campaigns optimized for a set of engagement signals started delivering sessions at a noticeably lower cost than campaigns based only on clicks. More importantly, it was not just the number of sessions that went up. Their quality, measured by further user interactions, improved too.
- Demand Gen campaigns optimized for the mix of 2_page_views + engagement + purchase delivered sessions at the lowest unit cost, often below PLN 1 (EUR 0.25).
- Meanwhile, max-click campaigns, such as a typical GDN campaign, were recording a miserable session-to-click ratio of around 5%. Campaigns optimized for micro-conversions, on the other hand, reached results above 20%, 30%, and at peak moments even 50%.
Instead of chasing the cheapest possible clicks, the campaigns started looking for users who were likely to stay on the website at least a little longer. Instead of maximizing the number of visits, the team started maximizing the meaning of those visits.
And while this was neither the simplest nor the fastest path, it helped them escape the trap where half of all clicks disappeared somewhere between the ad and the website taking its first breath.
Does that mean the problem disappeared completely?
Not quite.
There were still questions about scale, repeatability, and how much trust can be placed in algorithms learning from indirect signals.
But one thing was clear by then: change what the campaigns are learning from, and you can change where the story goes.
And they worked long and happily ever after..?
After weeks of analysis and testing, after countless internal and external meetings, the team managed to diagnose the problem and introduce a workaround that did not require the client’s IT department.
They implemented micro-conversions and optimized campaigns for them. Improved the session-to-click ratio. Lowered the cost per session. Calmed down an increasingly impatient client.
It took several dozen hours of work from many team members and more than three months from start to finish.
And everything seemed to be heading toward a happy ending, when a new threat appeared on the horizon.
The year was 2025, and the industry was beginning to talk about clicks becoming a thing of the past. So-called zero-click marketing: a world where users search for content in Google Search, AI tools, and social media, but do not click through.
A true nightmare for digital marketers, who for years had reported how clicks turned into actions on websites: purchases, contact form submissions, add-to-carts.
How do you measure campaign performance when customers are clicking less, and the path from first contact to conversion is becoming harder to follow?
But that is a story for another day.


