How SourceLoop defines a session
When SourceLoop starts a new session, when it ends one, and how that affects every per-visit metric on every dashboard. Plus the differences from Google Analytics 4.
On this page
A session in SourceLoop is one continuous visit, a single bounded period during which a visitor interacts with your site. Every metric on the Traffic dashboard expressed “per session” (session count, pages per session, session duration, bounce rate) depends on this definition. Per-channel and per-campaign attribution at the session level is what powers the marketing-source story.
This article covers exactly when SourceLoop starts a new session, when it ends one, and how those decisions feed into your dashboards.
What starts a new session
Four triggers can start a new session for an existing visitor:
| Trigger | Example |
|---|---|
| First page view ever | A new visitor lands on your site for the first time. |
| 30+ minutes of inactivity | The visitor was browsing, walked away from their computer, came back 45 minutes later. New session. |
| Attribution change | The visitor arrives with a new utm_source / utm_medium / utm_campaign, a new paid click ID, or a referring domain that maps to a different channel. New session. |
| Midnight (workspace timezone) | A visitor browsing at 11:50 PM keeps browsing until 12:10 AM. Two sessions, one ending at midnight, one starting. |
These triggers are checked on every page view and every custom event.
What does NOT start a new session
| Non-trigger | Why it doesn’t fire a new session |
|---|---|
| Tab switch | The 30-minute timer tracks tracker activity (page views, custom events, scroll pings), not tab visibility. A visitor with your tab open in the background isn’t “active” but isn’t “inactive” either; the timer doesn’t tick unless they switch back and resume. |
| Browser refresh | Same anonymous ID, same session, same attribution. The refresh just emits another page-view event in the same session. |
| Internal navigation | Clicking from /pricing to /docs to /contact is one session, regardless of how many page views. |
| Cross-subdomain navigation | yoursite.com → app.yoursite.com is the same session (cookies are shared on the same eTLD+1). |
| Cross-domain navigation with the linker | yoursite.com → yoursite-checkout.com with the cross-domain linker configured is the same session (the anonymous ID is passed via URL). |
How attribution attaches to a session
Each session has exactly one set of attribution fields:
| Field | Set from |
|---|---|
| Channel | The classification rules (see Channel definitions) |
| Source | utm_source parameter, or platform inferred from click ID, or referring domain |
| Medium | utm_medium parameter, or cpc/cpm/organic inferred from click ID, or organic/referral inferred from referrer |
| Campaign | utm_campaign parameter |
| Content | utm_content parameter |
| Term | utm_term parameter |
| Landing page | The URL of the first page view in this session |
| Referrer | document.referrer at session start |
| Click IDs | gclid, fbclid, msclkid, etc., from the URL on session start |
Once a session starts, these values stay frozen for its duration. The visitor navigating internally on your site doesn’t change them. This is why the attribution-change trigger above is so important, it ensures each session has exactly one truthful set of attribution.
Sessions roll up into the visitor and the contact
1 contact (1 real person)
→ N anonymous IDs (1 per device/browser they've used)
→ N sessions per anonymous ID (1 per visit)
→ N page views per session (1 per page they viewed)
→ N events per session (custom events, scroll pings, conversion events)
The Traffic dashboard’s “Sessions” metric counts the sessions inside the date range. The “Visitors” metric counts unique anonymous IDs. The “Contacts” metric counts identified contacts (with an email or phone).
A single high-engagement contact who browsed your site five separate times across two weeks contributes:
- 1 contact
- 1 anonymous ID (assuming same browser each time)
- 5 sessions
- 25-or-so page views (assuming 5 pages per session)
Session-level vs visitor-level metrics
Most dashboards offer both:
| Metric | Session-level | Visitor-level |
|---|---|---|
| Count | Number of sessions | Number of unique anonymous IDs |
| Conversion rate | Conversions ÷ sessions | Conversions ÷ visitors |
| Bounce rate | Sessions with 1 page view ÷ all sessions | Visitors who only bounced ÷ all visitors |
| Pages per session | Total page views ÷ session count | Total page views ÷ visitor count |
| Duration | Time from first to last event in a session | Sum of all sessions per visitor |
For attribution work, session-level metrics are usually more meaningful. Visitor-level metrics make sense for “how engaged is my audience over time?” but session-level metrics answer “did this specific campaign produce engaged visits?”.
How session resets affect attribution
The attribution-change trigger is the one with the biggest implication. Consider:
- 9:00 AM — Jane arrives via a Google Ads click. Session 1 begins with first-touch channel = Paid Search.
- 10:00 AM — Jane leaves your site without converting.
- 10:25 AM — Jane sees a LinkedIn ad in her feed and clicks it. She returns to your site. 30 minutes haven’t elapsed, but the click ID and referrer have changed, so SourceLoop starts a new session. Session 2 begins with channel = Paid Social.
- 10:45 AM — Jane submits the demo form during Session 2.
The conversion is attributed:
- First-touch = Paid Search (Session 1’s channel — the earliest session in Jane’s identity graph)
- Last-touch = Paid Social (Session 2’s channel — the converting session)
Both touches are visible on the lead, and you can group revenue / leads by either model on the Attribution dashboard.
If SourceLoop hadn’t reset the session on the attribution change, Session 1 would still be active when the form fired, and the conversion would attribute entirely to Paid Search, hiding the role LinkedIn played in closing the deal.
What’s next
- Understand how channels are picked on each session: How SourceLoop classifies marketing channels.
- See sessions per visitor on the Contacts Hub: How to use the SourceLoop Contacts (Leads) table.
- See session-level metrics on the dashboards: Traffic dashboard.
- Pick the attribution model that scopes how sessions roll up: 7 Types of Attribution Models.
Frequently asked questions
-
When does SourceLoop start a new session?
Four triggers. (1) The visitor's first page view, ever. (2) The visitor returns after more than 30 minutes of inactivity. (3) The visitor arrives with a different attribution signal than their last session, a fresh utm_source / utm_medium / click ID, or a new referring domain that resolves to a different channel. (4) Midnight in the workspace's timezone (sessions don't span calendar days for cleaner daily reporting).
-
Why don't sessions span midnight?
Daily reports get muddled when one session straddles two days. By starting a new session at midnight, the visitor's sessions-per-day count stays accurate and the Traffic dashboard's day-over-day comparisons are clean. The trade-off is a visitor browsing from 11:50 PM to 12:10 AM appears as two sessions, but the impact is small (most visitors don't browse over midnight).
-
How is this different from Google Analytics 4?
GA4 also uses a 30-minute idle timeout but doesn't reset on attribution change or midnight by default. So a GA4 session can span a UTM change and span midnight, which makes campaign-level attribution and day-over-day reports harder to read. SourceLoop's stricter session boundaries mean per-session metrics are more meaningful for attribution work.
-
Does a session reset if the visitor clicks a different ad?
Yes. If a visitor arrives via Paid Search, leaves, comes back via Paid Social later that hour, SourceLoop starts a new session for the Paid Social arrival. This is so each session has exactly one channel / source / campaign attribution, which makes the Traffic dashboard's per-session counts directly meaningful.
-
How long is the typical session?
Most B2B sites see median session durations of 1 to 3 minutes and median pageviews per session of 2 to 4. Highly engaged visitors (research-mode prospects browsing pricing + docs + case studies) routinely produce sessions of 10 to 20 minutes. The Traffic dashboard's session-duration metric tracks the median across all sessions in the date range.
-
Does a tab switch end a session?
No. The 30-minute idle timer is based on tracker activity (pageviews, custom events, scroll-depth pings), not tab visibility. A visitor with your site open in a tab who switches to email and comes back 20 minutes later is still in the same session. The timer only resets to zero when the tracker sees activity.