Channels and sources
How Follow The Spend buckets every visit into Direct, Organic, Paid Search, Paid Social, Email, Social, or Referral.
Every session has a source — where that visit came from. We bucket sources into a small set of channels because raw source data is too noisy to read at a glance.
The seven channels
| Channel | What lands here | Examples of source/medium |
|---|---|---|
| Direct | Visitor typed the URL, used a bookmark, or came from a context we can't see | No referrer, no UTM |
| Organic Search | Came from a search engine result (non-paid) | google.com, bing.com referrer, no gclid |
| Paid Search | Came from a paid search ad | gclid, utm_medium=cpc |
| Paid Social | Came from a paid social ad | fbclid, utm_medium=paid_social |
| Clicked from an email | utm_medium=email, common ESP referrers | |
| Social | Came from a social network organically (not via a paid click) | Referrer = instagram.com, t.co |
| Referral | Came from another website (not search, social, or email) | Any other referrer, no UTM hint |
Each channel rolls up multiple specific sources. You'll see the breakdown by channel in Pulse and the underlying source/medium in any individual journey.
How a session is classified
For every session, we evaluate signals in this order. The first match wins:
- UTM parameters — if the URL has
utm_medium, that's the strongest signal.utm_medium=cpc→ Paid Search.utm_medium=email→ Email. Etc. - Click identifiers —
gclid(Google Ads) → Paid Search.fbclid(Meta) → Paid Social.msclkid(Microsoft Ads) → Paid Search. - Referrer pattern — referrer matches a known search engine → Organic Search. Matches a known social network → Social. Matches a known email service → Email.
- Default — no useful signal → Direct.
This means a campaign with proper UTM tagging always wins over the referrer-based fallback. Tag your campaigns and the data is much cleaner.
Source vs medium vs campaign
Three layers of detail under each channel:
- Channel (Pulse default view) — Paid Social, Direct, etc.
- Source —
facebook,google,klaviyo, etc. - Medium —
cpc,email,organic,social - Campaign — your
utm_campaignvalue
In a journey, you see all four. In Pulse's channel performance table, you see channels by default and can drill into source/medium/campaign as needed.
UTM tagging best practices
If you're not already tagging your marketing links, do this. It's the single highest-leverage thing you can do for cleaner attribution.
Recommended structure:
?utm_source=<platform>&utm_medium=<type>&utm_campaign=<campaign-name>Examples:
| Channel | Recommended UTMs |
|---|---|
| Meta paid ad | ?utm_source=facebook&utm_medium=paid_social&utm_campaign=spring-sale-2026 |
| Google paid search | UTMs are usually auto-tagged via gclid — leave it alone |
| Klaviyo email | ?utm_source=klaviyo&utm_medium=email&utm_campaign=may-newsletter |
| Instagram bio link | ?utm_source=instagram&utm_medium=social&utm_campaign=bio-link |
| Influencer post | ?utm_source=influencer-name&utm_medium=referral&utm_campaign=collab-q2 |
Anti-patterns to avoid:
- Don't UTM-tag your own internal navigation links (e.g. links in your own emails to your own product pages). It overwrites the visitor's true acquisition source.
- Don't use spaces in UTM values. Use hyphens (
spring-sale-2026, notspring sale 2026). - Don't use mixed case (
SpringSalevsspringsale) — they create duplicate buckets. - Don't repeat
utm_medium=cpcfor non-paid traffic. Reservecpcfor actual paid clicks.
Channel customization
In v1.0, the seven channels above are fixed. You cannot create custom channels or remap source-to-channel rules. Customizable channels are post-v1.
If your business depends on a non-standard channel breakdown (e.g. you want SMS as its own channel separate from "Direct"), let us know — we use customer requests to prioritize the channel-customization roadmap.
Where to go next
- How attribution works — how channels feed into the attribution math
- Visitor Journeys — see source / medium / campaign for individual sessions
- Why your channel mix differs from Meta Ads / GA4 — coming soon