Channels
How trckable decides whether a visit was Search, Social, AI, Paid, Email, Referral or Direct — in one pass, in a fixed order.
Every session is classified once, from its entry pageview: the referrer and the query string of the first page of the visit. Later navigations inside your site are internal and never change the answer.
The rules are checked in this order, and the first match wins.
1. Paid
Any of these click ids in the URL:
gclid gbraid wbraid fbclid msclkid ttclid twclid li_fat_id dclid…or a utm_medium of cpc, ppc, paid, paidsocial, paid_social,
display, cpm, banner, or anything starting with paid.
Paid is checked first on purpose: an ad on Google is paid traffic, not search.
2. Email
utm_medium of email, e-mail or newsletter, a utm_source of
newsletter, a referrer from a known mail host, or any host beginning mail.
3. AI assistants
A referrer from an assistant, or a utm_source that names one:
chatgpt.com chat.openai.com openai.com perplexity.ai claude.ai
gemini.google.com copilot.microsoft.com you.com phind.com poe.com
deepseek.com grok.com meta.ai chat.mistral.ai kagi.com/assistantAI is checked before search, so a visit from Gemini is an assistant rather than Google.
This is people arriving from an assistant. Robots reading your pages to build an answer are a different thing, in the AI crawlers module.
4. Search
A referrer from a search engine — Google in every country, Bing, DuckDuckGo,
Yahoo, Ecosia, Baidu, Yandex, Brave, Startpage, Qwant, Naver, Seznam, Kagi — or
utm_medium=organic.
5. Social
A referrer from a social host, utm_medium=social, or a utm_source that names
one. The list is deliberately broad, and includes the places developers actually
share things: Hacker News, Product Hunt, Reddit, Bluesky, Mastodon instances,
Discord, Telegram, dev.to, Substack, Indie Hackers and GitHub.
6. Referral
Any other referrer, or a utm_source, or a ?ref= parameter.
7. Direct
Nothing to go on: a typed address, a bookmark, an app, or a browser that sent no referrer.
Direct is not a compliment. On a link shared in a private message or a PDF, the browser sends no referrer, so it lands here.
Returning from checkout is not a referral
Payment hosts are never counted as referrers:
checkout.stripe.com buy.stripe.com billing.stripe.com pay.stripe.com
lemonsqueezy.com polar.sh paddle.com dodopayments.com paypal.comWithout this, every paying customer would look like a referral from Stripe, and the source that actually earned the sale would lose the credit.
Campaigns
All five UTM parameters are recorded — utm_source, utm_medium,
utm_campaign, utm_term, utm_content — and shown on the Campaigns tab.
Everything else in a query string is dropped before storage (click ids only
mark the visit as Paid), so a session id or an email address in a URL never reaches
the database.