← Back to Blog

Your Link Says 900 Clicks. Analytics Says 300 Visits. Who's Right?

Nitheesh KR
Nitheesh KR
Founder & CEO
• 10 Min Read
Analytics
Two labelled bars comparing what a link tool counts against what analytics counts, with the link tool bar noticeably longer.

Your link report says 900 clicks. Google Analytics says 300 visits. Same link, same week. You refresh both tabs. Nothing changes.

Both numbers are right. A click and a session are not the same event, so the two tools are not counting the same thing. One counts requests for a web address. The other counts browsers that loaded a page and ran a script.

The gap is not a bug. It has causes you can name, and the tool makers document most of them.

What is a click, and what is a session?

Start with the words. They are the whole problem.

Google Ads defines a click in one line: "A click is recorded when someone interacts with your ad." A short link is plainer still. Someone, or something, asks your short URL for a page. Your link tool answers with a redirect and adds one to the count.

A session is a different idea. Google calls it "a group of user interactions with your website or app that take place within a given time frame". It starts when a page is viewed and no session is running. By default it ends after 30 minutes of quiet.

Here are the terms, as Google defines a session and its user metrics.

Term What it counts
Click (ad) One interaction with your ad
Click (short link) One request your link tool answers with a redirect
View A page a user saw. Repeat views count again
Session A group of actions. Ends after 30 minutes of quiet
Engaged session Over 10 seconds, or 2 views, or a key event
Active users Unique users who engaged. This is what GA4 shows as "Users"

A click is not a session. A session is not a person. Hold those two lines and most of the confusion goes away.

Does Google admit the gap?

Google does more than admit it. Google publishes a whole page on why ad clicks and Analytics sessions disagree. The page works through a long list of causes.

These are the ones that matter most for a link:

  • The two measure different things.
  • One person can click twice in half an hour. That is two clicks and one session.
  • Google Ads filters some clicks as invalid, while Analytics still reports the sessions.
  • A redirect on the landing page can drop the campaign tags.
  • People leave the page before the tracking code runs.
  • Some visitors have JavaScript off, or use "other technologies to prevent Analytics from reporting".

Now read that list for direction. Most of those reasons push clicks above sessions. One pushes the other way: people who return during a campaign add sessions with no click behind them.

So the gap runs in both directions, and "my click count is inflated" is only half the story.

A five-step chain from an incoming request, through the link tool's count and the page load, to the tracking tag firing and a session being recorded.

Who clicks your link when nobody clicks your link?

This is the biggest cause for email, and almost nobody explains it.

Company mail filters rewrite the links in incoming mail. Every click then passes through the filter first. That much is normal: you can see the rewritten address in the status bar.

The part nobody mentions is that some of those filters fetch the page for themselves, before any human touches it. Microsoft's own page on how Defender for Office 365 filters mail says "URL detonation sandboxes the URLs in the message at the time of delivery". Its Safe Links page adds that URLs without a valid reputation "are detonated asynchronously in the background".

Proofpoint describes the same habit. Its own material says it analyses suspicious URLs and attachments "before users click" the links.

Think about a link you made this morning. It has no reputation yet, because nothing has ever fetched it. That is the exact condition Microsoft names.

Be careful with the strong version of this claim. Neither vendor says every link in every mail gets fetched. Both name suspicious URLs, or URLs with no known reputation, as the trigger.

Not every filter works this way either. Barracuda's own documentation describes rewriting links and checking them at the moment of a click, not before.

To your link tool, a scanner fetch looks exactly like a click. To Analytics it looks like nothing at all. No browser, no script, no session.

Why your browser clicks links before you do

Browsers guess. If Chrome thinks you are about to open a page, it fetches that page early so the move feels instant.

That fetch is a real request to a real server. Mozilla documents a header for it, Sec-Purpose, sent with the value prefetch. A server can read it and act on it. Mozilla lists one use for that header in plain words: "treat it differently when counting page visits".

Now look at the other side of the same event. Chrome's docs on prerendering say that intrusive behaviours are held back until the user actually opens the page. Those docs add a note: Google Analytics "handles prerender by delaying until activation by default".

So the request happens and your link tool counts it. The page loads quietly in the background and Analytics deliberately waits.

Neither tool is broken here. The gap is by design, on both sides, and each side is doing what it was built to do.

What stops Analytics counting a real person?

Three things, and all three leave your click count untouched.

  1. They leave too early. Google lists this itself. A visitor can leave the landing page before the tracking code runs. The redirect already happened, so the click is banked.
  2. The script never runs. A content blocker, an extension or a locked-down browser can stop the tag. The redirect is server-side, so nothing on the page can block it.
  3. They say no to cookies. With basic consent mode and no consent, Google says tags "are completely blocked from firing".

The third one has a twist worth getting right. Behavioural modelling puts part of that back.

Google's consent modelling documentation says that in reports, "modeling is applied to metrics like users, sessions, and new users counts". It is not applied to event counts such as page_view and session_start. There is a bar to clear, too. Your property needs 1,000 events a day from people who declined, for seven days. It also needs 1,000 daily consenting users on seven of the last 28 days.

Modelling only estimates people. It cannot model a scanner fetch or a browser prefetch, because neither one was ever a person.

Two columns comparing what a link tool counts against what analytics counts, with ticks and crosses for scanner fetches, browser prefetches and repeat taps.

Why the two numbers can never be made to match

Here is the point that settles the argument.

GA4 removes known bots for you. Google's bot traffic page says "traffic from known bots and spiders is automatically excluded". It then says something more interesting: "you cannot disable known bot traffic exclusion or see how much known bot traffic was excluded".

Read that twice. You cannot switch it off, and you cannot see the size of it.

One side of your comparison has already dropped an unknown amount of traffic and will not tell you how much. So the two numbers cannot be reconciled by anyone, including Google.

Worth noting what the list is. It covers known bots and spiders. By its nature it says nothing about a scraper nobody has listed yet.

Can visits ever beat clicks?

Yes, and it is more common than people expect.

Returning visitors are the simple case. During a campaign, people come back by bookmark, by typing your name, or from a tab they left open. Those are sessions with no click behind them.

There is a subtler case that trips up campaign reporting. In GA4 a session does not restart when new campaign tags appear. Google is explicit: a new session is not started when Analytics sees a new campaign or traffic source.

So picture someone tapping your newsletter link, then your social link ten minutes later. Your link tool records two clicks against two campaigns. GA4 records one session, credited to the first. If you are working out which channel brought the sale, that detail matters a lot.

So which number should you use?

Use each one for the job it can actually do.

  1. Compare links with clicks. Two links, same tool, same week is a fair fight. That is how you test whether a cleaner link gets tapped more.
  2. Judge the visit with Analytics. Time on page, pages seen, sign-ups. Your link tool cannot see any of it.
  3. Never divide one by the other. Sessions over clicks is not a conversion rate. The two counts come from different populations.
  4. Tag the link properly so the session carries the campaign. Our guide to UTM parameters covers the naming traps.
  5. Watch the trend, not the gap. A gap that suddenly doubles is a signal. A gap that sits steady is just physics.

One honest note on the tool you are reading about. A link tool counts requests to the redirect. Analytics counts browsers that reached the page. Expect the first number to be higher, and clik.so is no different. Clicks show up there within about a minute of the request.

Questions people ask

Is a click the same as a visit?

No. A click is one request to your short link. A visit, or session, is a group of actions by one browser on your site. Google ends a session after 30 minutes of quiet, so one person can produce two clicks inside a single session.

Why is the gap biggest on email?

Mail security tools rewrite links and inspect them for you. Microsoft and Proofpoint both document fetching suspicious or unknown URLs in a sandbox before anyone clicks. Your link tool sees a request. Your website never sees a browser, so no session is recorded.

What is a normal gap?

Nobody publishes a credible figure. Google's own troubleshooting page works through a long list of causes and gives no normal range at all. The percentages you find in marketing posts have no stated method or sample behind them, so treat them as guesses. Your own gap, watched over a few weeks, is the only baseline worth having.

Does a big gap mean my link tool is inflating the numbers?

Not by itself. A link tool counts requests, which is what it is for. The gap grows on email, and on links posted anywhere software fetches pages. Compare the same link over time before you blame the tool. A sudden jump is worth a look. A steady difference usually is not.

Can I just subtract the bots?

No, and that is the honest answer. Google removes known bots before you see any number and will not tell you how many. Without that figure, the subtraction has no starting point. The gap is still useful as a signal, but it will never balance.

Try it on one link

You can see all of this in a week. Send one tagged link by email, then write down both numbers each day. The shape of the gap tells you more than the size.

clik.so's free plan tracks 2,000 clicks a month and needs no card. The click analytics sit on every plan, including the free one.


Nitheesh KR

Written by Nitheesh KR

Founder & CEO

Follow on LinkedIn →
Link Clicks vs Sessions: Why the Numbers Never Match | ClikSo