Blog

How to track link clicks without installing anything

A short link counts the click at the redirect, before the destination loads. What that gives you, what it cannot give you, and how gc.mw separates humans, bots and QR scans.

By Wasim Idrishi · Updated · 4 min read

The counter runs before the destination does. A visitor asks for gc.mw/abcd, the redirect decision is made from cache, the click is pushed onto a queue and the browser gets its Location header — no database write on the hot path, no script on your site, nothing for the visitor to accept or refuse.

That ordering is the whole argument for tracking at the link instead of only at the page. You capture the people who never arrive.

The five numbers on the dashboard

Open Links, Analytics and the top row is: Clicks, Unique visitors, QR scans, Bots filtered, Links with clicks. The first two are obvious. The other three are where the useful arguments happen.

QR scans are separate because the QR endpoint encodes the short link with a ?qr marker on the end. A visit carrying that marker is classified as a scan rather than a referral, and the parameter is stripped before the visitor reaches the destination. Print and screen stop competing for the same number, which means you can finally answer whether the poster in the shop did anything.

Bots filtered is a count, not a deletion. Known preview crawlers never make it into the pipeline — when WhatsApp fetches a link to build its preview card, that is not a person and it is not counted. Everything else that looks automated is counted and shown separately, so a campaign that suddenly triples overnight tells you which of the two things happened.

What the breakdowns actually contain

BreakdownFree (basic)Pro (full)Business and Team (advanced)
Totals and chart7 days onlyAny range inside retentionAny range inside retention
ReferrersTop 3Full listFull list
Countries, devices, clicks by hourNoYesYes
Cities, operating systems, browsers, languages, UTM campaignsNoYesYes
A/B variantsNoNoYes
CSV exportNoYesYes
Breakdowns on the gc.mw analytics page, by plan

Referrers are grouped rather than listed raw: l.instagram.com, m.instagram.com and instagram.com all land under Instagram, and each referrer also gets a type — search, social, email, ads, referral, direct or qr. Referrer type is usually the more honest chart, because social platforms rewrite their referrer headers whenever they feel like it.

Get the campaign into the number

Click counts tell you how many. UTM parameters tell you which of your own placements did it, and they survive into whatever analytics tool the destination runs.

  1. Decide the vocabulary before the campaign, not during

    Pick a short fixed list of mediums — email, social, cpc, qr, print, sms — and stick to it. Analytics treats Email and email as two different sources, which is why our builder lower-cases values by default.

  2. Attach the parameters to the link, not to the URL you paste

    On Pro, the UTM parameters section of the link editor adds them at redirect time. The person clicking sees the clean short link; the destination receives the tagged URL. Change the campaign name later without reprinting.

  3. Use utm_content to separate two links in the same place

    Header button and footer link in the same newsletter, same source and medium. Without utm_content they are one row forever.

Reading it without fooling yourself

Compare like with like. A QR on a menu and a link in an Instagram story produce clicks that mean completely different things; put them on separate short links, not on the same one with different UTM values, so the totals never merge by accident.

Watch uniques against clicks. A ratio near 1.0 across thousands of clicks usually means real reach. A ratio near 3.0 usually means a handful of people refreshing, or an email client prefetching, or a monitoring tool you forgot about.

And treat the first hour of any print campaign as noise. In our own logs the shape of a printed campaign is a week-long plateau, not a spike; the spike is what digital does.

The public version

Every link has a page at gc.mw/code+. With public stats off, it tells a visitor where the link goes — a useful answer to "is this safe to click". With public stats on, it adds clicks, unique visitors, QR scans and top countries for the last 30 days. It is the only place your numbers leave the workspace, and it is off until you turn it on.

Questions people ask

Does click tracking need a cookie or a consent banner?

We set no cookie on the redirect. A visitor is identified for the day by a SHA-256 hash of a rotating secret, the IP address and the user agent; the raw IP is never stored and the salt changes every 24 hours, so the same person on two different days cannot be linked. That is why the unique count is a per-day number, not a lifetime one.

Why is my click count higher than the sessions in Google Analytics?

The redirect counts everyone who asks for the link. Analytics on the destination counts everyone who loads the page and runs the script — which excludes people who bounce before the page renders, block scripts, or open the link in an app's in-app browser. A gap of 10 to 30 per cent between the two is normal; a gap of 90 per cent means the destination is broken or slow.

Are bot clicks included in the totals?

Known link-preview crawlers — WhatsApp, Slack, Discord, Telegram, Facebook, LinkedIn, X, Googlebot and the rest of that list — are not recorded as clicks at all. Everything else that scores as automated is counted under Bots filtered so you can see it, separately from the click total.

How far back does the history go?

Retention follows the plan: 30 days on Free, 365 days on Pro, and 1,095 days on Business and Team. Raw events are kept for 400 days regardless; the daily rollups are what the dashboard reads.

Can other people see my numbers?

Only if you switch public stats on for that link. Then gc.mw/code+ shows clicks, unique visitors and QR scans for the last 30 days plus top countries. With the switch off, the same page shows only where the link goes.

Try it with your own link

Paste a long link and get a 10-character gc.mw link with a QR code. No account needed for 30 days; free forever with one.