Entry is what counts
Only a session’s entry identifies the touchpoint, and this matters more than it sounds. The referrer recorded on an event describes the page that event happened on, not how the visit started, and it changes partway through a visit. A hop between your domains stamps the previous host onto every event after it. A Shopify checkout stamps nothing at all. Read per event, the “source” of a visit would change depending on which event you asked. So Soran resolves each session’s entry once and stores it: the entry URL, the UTM parameters (source, medium, campaign, term, content), the referring
domain, and the ad click identifier if there was one — Google’s gclid, Meta’s
fbclid, Microsoft’s msclkid, or TikTok’s ttclid.
From entry to channel
Soran classifies each entry into a channel by working down a ladder: paid markers first, then email, then organic (a search or social source, or an explicitly organic medium), then referral if there was a referring domain, thenother for a
source it does not recognise, and finally direct when there is nothing to go on.
A missing parameter is recorded as empty rather than absent. This is why a
visit with no campaign is classified rather than skipped.
Related
Attribution models
How credit is divided across a path of touchpoints.