How to Track Link Clicks from Instagram, WhatsApp and Telegram
Most social apps hide where their clicks come from, and their preview bots inflate your numbers. Here is how to see through both.
In this article
You post a link on Instagram, send it to a WhatsApp broadcast list and drop it in your Telegram channel. The next morning your analytics say most of the clicks were "direct", and the total looks suspiciously high for a quiet day.
Both problems have the same root cause: social and messaging apps do not behave like normal web browsers. Once you understand how, the fix is straightforward.
Problem 1: social apps hide where clicks come from
When you click a link on a normal website, your browser tells the next site where you came from. This is the referrer. Analytics tools rely on it.
Apps are different. Most of them open links inside their own in-app browser, or hand the link to your phone's browser without saying who sent it. The result is a click with no referrer, which most tools file under "direct".
Here is how the big apps usually behave. Details change between app versions, so treat this as a guide rather than a rule.
| App | Opens links in | Sends a referrer? | Other clues a shortener can use |
|---|---|---|---|
| Its own in-app browser | Sometimes, via l.instagram.com |
The in-app browser names itself "Instagram" | |
| Its own in-app browser | Sometimes, via l.facebook.com |
In-app browser markers (FBAN, FBAV) and the fbclid parameter |
|
| Messenger | Its own in-app browser | Rarely | In-app browser marker for Messenger |
| Your phone's default browser | Rarely; Android sometimes sends android-app://com.whatsapp |
Very few | |
| Telegram | Its own in-app browser on most phones | Rarely | Telegram's Android browser names itself; iPhone usually does not |
| LinkedIn, X, TikTok, Snapchat | Their own in-app browsers | Sometimes | In-app browser markers |
So a tool that only reads the referrer will lose most of this traffic. A smarter tool checks several signals in order.
How MiniSnip works out the source
For every click, MiniSnip looks at these signals, strongest first:
- A tag on the link you shared, such as
?src=wa. You know where you posted it, so this always wins. - The referrer, including link wrappers like
l.facebook.comand Android app referrers likeandroid-app://com.whatsapp. - The in-app browser. Facebook, Messenger, Instagram, Threads, Telegram, LinkedIn, X, TikTok, Snapchat, Pinterest and many others identify themselves in the browser's user agent.
- Platform click IDs that apps and ad networks append, such as
fbclid(Facebook),gclid(Google Ads) andttclid(TikTok). - Only when none of these exist is the click marked Direct.
This recovers most social traffic automatically. The one gap that remains is apps that reveal nothing at all, which is mostly WhatsApp, and Telegram on iPhone.
Close the gap with a source tag
For apps that stay silent, tell the link where you shared it. Add ?src= and a short name to the end:
| Where you share | Link to post |
|---|---|
go.yourbrand.com/offer?src=wa |
|
| Telegram | go.yourbrand.com/offer?src=tg |
go.yourbrand.com/offer?src=ig |
|
go.yourbrand.com/offer?src=email |
|
| SMS | go.yourbrand.com/offer?src=sms |
| QR code on print | go.yourbrand.com/offer?src=qr |
The tag does not change where the link goes and does not show up on your website. It only labels the click in your MiniSnip
dashboard. You can also use any name you like, such as ?src=diwali_poster.
If you also want these sources in Google Analytics, add UTM parameters to the destination as well. The two work side by side.
Problem 2: preview bots inflate your clicks
The second problem is the opposite of the first. When you paste a link into WhatsApp, Telegram, Facebook, LinkedIn, Slack or iMessage, the app immediately fetches the page to build a preview card with a title and image. Every one of those fetches looks like a click.
Share one link in five WhatsApp groups and you may see several "clicks" before a single person has tapped it. Some apps fetch again from different servers. Email security scanners do the same with links in newsletters.
Counting these as visitors makes every campaign look better than it is, and makes it impossible to compare channels fairly.
How MiniSnip filters bots
MiniSnip checks every click before counting it and identifies more than 140 bots by name, including the preview crawlers for Facebook, Telegram, WhatsApp, X, LinkedIn, Slack, Discord and iMessage, search engines, AI crawlers, SEO tools, uptime monitors and email security scanners. It also catches:
- Requests from the server networks that Meta, Telegram and Google use for their crawlers, even when they pretend to be a normal browser.
- Traffic from cloud and hosting providers, which real people rarely browse from.
- Scripts that claim to be a browser but do not behave like one, link checkers and browser prefetches.
Bot visits are still logged, so you can see which apps fetched your link, but they are never added to your click count.
Reading your dashboard
On each link's page in MiniSnip you will find:
- Human clicks, the number that matters, with bots excluded.
- Sources, where real visitors came from: Instagram, WhatsApp, Telegram, Google, Direct and so on.
- Bots, which crawlers fetched the link and how often. A burst of WhatsApp and Telegram bot hits right after you post is normal: it means the previews were generated.
- Recent clicks, a live list with each visitor's location, device, browser or app, and source.
A setup that works for every campaign
- Create one short link per campaign, on your own domain if you can.
- When you share it on WhatsApp, Telegram, SMS or print, add the matching
?src=tag. - On Instagram and Facebook you can share the plain link: the in-app browser identifies itself.
- Check the Sources chart after 24 hours to see which channel drove real visitors.
- Ignore the Bots chart for performance; use it to confirm previews worked.
That is all it takes to replace "direct" with an answer. Start with the free plan: source detection and bot filtering are included on every plan.
Frequently asked questions
Why does Google Analytics show my Instagram traffic as direct?
Instagram often opens links in its own in-app browser without passing a referrer. Add UTM parameters to the destination for Google Analytics, and use a shortener that recognises the Instagram in-app browser for click counts.
Can I see who exactly clicked my link?
No, and you should not be able to. MiniSnip shows aggregated, anonymous data such as country, city, device, browser and source. IP addresses are stored only as one-way hashes for counting unique visitors.
Why do I see clicks before anyone has opened my link?
Messaging apps fetch a link to build its preview the moment you paste it. MiniSnip identifies these preview bots and keeps them out of your click count.
Does adding ?src= to a link change where it goes?
No. The tag only labels the click in MiniSnip. The visitor is redirected to the same destination.