Skip to main content
A session is one visit: a run of events from the same person, close together in time. A touchpoint is how that visit began — the channel, campaign, and click that brought the person to your site.

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, then other 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.

Attribution models

How credit is divided across a path of touchpoints.