Channels
Every anonymous visit and every first touch gets one channel: a coarse answer to “where did this come from?”. Vevee derives it on the server from three inputs: utm_source, utm_medium and the referrer host. A channel sent by your app is ignored, so the grouping is the same for every app.
There are seven channels:
| Channel | Meaning |
|---|---|
paid | Ads you pay for. |
email | Newsletters and email clients. |
ai | AI assistants and AI search (ChatGPT, Perplexity, Gemini, Claude, Copilot). |
organic_search | Unpaid search engine results. |
social | Social networks, unpaid. |
referral | Any other site, or tags that match no rule above. |
direct | No referrer and no tags. |
The channel appears as the channel visit field (Traffic page, visit splits) and as the first_channel person property (person splits). See Cookieless traffic attribution and Funnel splits.
How the inputs are normalized
- All three values are trimmed and lower-cased. Empty values count as missing.
- The referrer host loses a port and any leading
www.,m.,l.orlm., repeatedly. Som.facebook.com,l.facebook.comandwww.facebook.comall read asfacebook.com. - A
utm_sourcematches a known site by its full name (chatgpt.com) or by the name without its last label (chatgpt,facebook). One-letter names such asxandtare not matched this way.
The rules, in order
The first rule that matches wins.
1. paid
utm_mediumis one ofcpc,ppc,paid,paid_social,display,ads; or- the referrer host is
googleadservices.comordoubleclick.net; or utm_sourceisadwordsorgoogle_ads.
2. email
utm_mediumisemail; or- the referrer host is
mail.google.com,outlook.live.com,outlook.office.com,mail.yahoo.comormail.proton.me.
3. ai
- The referrer host is
chatgpt.com,chat.openai.com,perplexity.ai,gemini.google.com,claude.aiorcopilot.microsoft.com; or utm_sourcematches one of those sites (for examplechatgpt.comorperplexity).
4. organic_search
- The referrer host is
googlewith any country domain (google.com,google.it,google.co.uk),bing.com,duckduckgo.com,search.brave.com,com.google.android.googlequicksearchbox, or anyyahooorecosiadomain including subdomains (search.yahoo.com); or utm_sourceisgoogle,bing,duckduckgo,yahooorecosia, or matches one of the search hosts above.
5. social
utm_mediumissocial; or- the referrer host is
facebook.com,instagram.com,t.co,x.com,twitter.com,tiktok.com,youtube.com,linkedin.com,lnkd.in,reddit.com,out.reddit.com,threads.net, or anypinterestdomain; or utm_sourcematches one of those sites (facebook,linkedin,reddit), or is one of the aliasesfb,ig,instagram,an,msg,meta,tt,tiktok,pinterest.
6. referral
Anything left with a referrer host, a utm_source or a utm_medium. An unknown site, or tags that match none of the rules above.
7. direct
No referrer host and no UTM tags at all.
Examples
| Landing URL tags | Referrer host | Channel |
|---|---|---|
utm_source=facebook&utm_medium=paid_social | (any) | paid |
utm_source=facebook | (none) | social |
utm_source=facebook&utm_medium=paid-social | (none) | social (the hyphen is not a paid medium) |
| (none) | l.instagram.com | social |
utm_source=chatgpt.com | (none) | ai |
| (none) | www.google.co.uk | organic_search |
utm_source=newsletter&utm_medium=email | (none) | email |
| (none) | news.ycombinator.com | referral |
utm_campaign=launch only | (none) | direct (campaign is not an input) |
| (none) | (none) | direct |
Tag your ads with a paid medium. A paid campaign tagged only with
utm_source=facebook is grouped as social. Add utm_medium=cpc, paid or paid_social (exactly, with an underscore) so it lands under paid. The campaign name itself stays available as utm_campaign on the Traffic page and in splits.Where the channel is computed
- Anonymous events on
/api/v1-13/capture: from the visit fields carried inproperties. See capture(). - First touch: once, when
identify()runs withisSignup: true. Stored asfirst_channeland never recomputed.