Skip to content
tinbo
Blog

Analytics4 min read

Why your link clicks don't match your analytics

The link says 1,000 clicks, Google Analytics says 640 visits. Neither is lying. Here is what each one counts, where the gap comes from, and how to make the numbers line up.

tinbo team

In this post
  1. What each side counts
  2. Gap 1: machines asking for the link
  3. Gap 2: people your analytics never sees
  4. Gap 3: counting different units
  5. How tinbo keeps machines out of your totals
  6. Making the numbers line up

It is the most common question anyone running a link shortener gets: the short link reports one number, the analytics on the destination reports a smaller one, and the report is due tomorrow.

Usually nothing is broken. The two tools stand at different doors and count different things. The link counts requests for the link. Your analytics counts page loads that ran its script. A lot can happen between those two moments.

What each side counts

A short link sits in front of the page. Every time something asks for the link, the redirect server answers and can write the request down. Nothing else is needed: no JavaScript, no cookies, no page load.

An analytics tool such as Google Analytics, Plausible or Matomo sits inside the page. It counts a visit only once the destination has loaded, its script has run, and — in much of the world — the visitor has agreed to be measured.

Counted byThe linkYour analytics
A person who clicks and reads the pageYesYes, if the script runs
A person who clicks, then leaves before the page loadsYesNo
A person with an ad or tracker blockerYesUsually not
A person who declines the cookie bannerYesOften not, or only as a modelled estimate
A chat app fetching a preview of the linkDepends on the shortenerNo
An email security scanner opening every linkDepends on the shortenerRarely
A search or monitoring botDepends on the shortenerNo

Look at the right-hand column: every gap goes the same way. That is why the link's number is almost always the bigger one.

Paste a link into Slack, iMessage, WhatsApp or LinkedIn and, before anyone clicks, the app fetches it to draw a preview card. Search engines crawl links they find. Uptime monitors poll them. Email security gateways open every link in an incoming message to check it for malware.

A simple counter adds all of that to your total. On a link that was shared widely, the machines can outnumber the people.

Gap 2: people your analytics never sees

Some real visitors never reach your analytics:

  • They leave early. On a slow mobile connection, a visitor who taps back after two seconds was a click but never became a page view.
  • They block trackers. Browser extensions and privacy-focused browsers stop analytics scripts from loading.
  • They decline cookies. Where consent is required, a declined banner means no visit is recorded, or one is only estimated.

None of these are wrong clicks. They are people your analytics was never going to count.

Gap 3: counting different units

A click is one request. Analytics tools mostly report sessions and users. A person who clicks your link twice in ten minutes is two clicks and, most likely, one session. The same person on a phone and a laptop is two users. Compare clicks with page views or entrances to the landing page instead, and the numbers get closer.

How tinbo keeps machines out of your totals

tinbo sorts every request before counting it:

  • People are counted.
  • AI agents — ChatGPT, Claude or Perplexity fetching a page because someone asked them to — are counted too, but separately, so you can look at people on their own.
  • Crawlers are recognised from a maintained list of well-known bots and left out of both. Link previews are among them: a chat app asking for your link gets the social card you set (or the plain redirect, if you set none), and no click is counted.

The honest limit: some email scanners pretend to be an ordinary browser. No link counter can reliably tell them apart from a person, and tinbo can't either. If a link went out in a newsletter, expect a burst of clicks within seconds of sending that did not come from readers.

Making the numbers line up

You will not get them to match exactly, and you shouldn't try. Make them comparable instead:

  1. Compare like with like. People-only clicks from the link against entrances to the landing page, for the same dates.
  2. Tag the destination. Put UTM parameters on the destination URL, so the visits that do arrive are attributed to the right campaign instead of landing in "direct". Our guide to UTM parameters covers the details.
  3. Use one link per channel. A separate short link for the newsletter, the bio, and the podcast notes gives you clicks per channel on the link side, whatever the analytics side manages to see.
  4. Watch the ratio, not the gap. If 65% of clicks usually become visits and one week it drops to 30%, something changed: a slow page, a broken consent banner, a scanner storm. The ratio is a better alarm than either number alone.

The link tells you how many times you were asked for. Your analytics tells you how many of those visits it could see. Both are useful, as long as you know which question each one answers.

Keep reading

Your first link is one minute away

Sign up, get you.inbo.to, paste a URL. Free to use, no card, no time limit.