Visitors, sessions, and identification
How Follow The Spend recognizes a visitor, what counts as a session, and what changes when an anonymous visitor becomes identified.
These three terms come up everywhere in the product. Get them right and the rest of the dashboard reads cleanly.
Visitor
A visitor is a single browser-cookie-pair on a single device. Practically speaking: each unique person who visits your store on a given device, identified by a first-party cookie our pixel drops on first visit.
A visitor has these properties:
- Visitor ID — an opaque string we generate on first visit, e.g.
v_4f2a8c91.... Stored in a first-party cookie, persists for up to 1 year by default. - First seen — timestamp of the first event we recorded
- Last seen — timestamp of the most recent event
- Sessions — the list of all sessions for this visitor
- Identification status — anonymous or identified (see below)
- Linked customer — Shopify customer ID, only set once identified
What counts as the same visitor
The visitor cookie is first-party, scoped to your store's domain. This means:
- Same browser + same device = same visitor (cookie persists across visits)
- Different browsers = different visitors (Chrome and Safari each get their own cookies)
- Different devices = different visitors until identification merges them
- Incognito windows = different visitors (incognito doesn't persist cookies)
This is true of every analytics platform — it's a property of how browser cookies work, not a limitation specific to FTS.
Session
A session is a continuous browsing visit. It starts when a visitor lands on your store and ends after either:
- 30 minutes of inactivity — no page views, scrolls, or clicks for 30 minutes, OR
- A new day rolling over at midnight in your store's timezone
If a visitor returns 35 minutes after their last activity, that's a new session. If they keep browsing without a 30-minute gap, it's the same session even if they're on the site for hours.
A session has:
- Session ID — unique to that session
- Start time / end time / duration
- Source / medium / campaign — where they came from for this visit
- Landing page — first URL viewed
- Pages — chronological list of URLs visited
- Conversions — any orders placed during this session
- Visitor ID — the visitor this session belongs to
A typical visitor has 1–5 sessions before converting. Some have 20+. Some convert on session one and never come back.
Identification
A visitor is in one of two states:
Anonymous
We've seen them browse but we don't know who they are. We track their journey under their visitor ID alone. Anonymous is the default state for every visitor we've never seen identified.
This is the vast majority of your traffic. Most people browse without logging in or providing an email. That's expected and OK.
Identified
We've linked the visitor's cookie to a real Shopify customer. From this point on, we know:
- The customer's email (only used for identification, never displayed in journeys)
- All their previous anonymous sessions, retroactively merged into their identified profile
- All their future sessions across this device
What triggers identification
Two events promote a visitor from anonymous to identified:
- Completing a Shopify checkout. When the order webhook arrives with a customer ID, we tie that customer to the visitor cookie that placed the order.
- Logging into a Shopify customer account. If you have customer accounts enabled and the visitor logs in, the storefront fires a signal we capture.
Once identified, the merge is permanent and retroactive: every prior anonymous session under the same cookie is rolled up under the customer's profile. The visitor's history doesn't restart at identification — it gets stitched together backwards.
Why most sessions stay anonymous
A typical Shopify store sees:
- 70–85% of sessions stay anonymous (browse and bounce, or browse and leave to come back later)
- 10–20% are identified at some point in the visitor's lifetime
- Of the identified group, most identification happens at checkout
Anonymous sessions are still incredibly useful — they show the channel mix bringing traffic, the most-visited pages, and the early stages of journeys that eventually convert. The whole top of your funnel is anonymous traffic.
Cross-device caveat
If a visitor browses on their phone, then converts on their laptop, those are two different visitors in our system until identification merges them. Once they identify on either device, future sessions on that device merge under the same customer profile — but prior anonymous sessions on the other device cannot be merged retroactively (no shared cookie).
Cross-device identity stitching is a hard problem in attribution. Tools that claim to do it well typically rely on email or phone-number matching, and even those have significant gaps. v1.0 of FTS does not attempt cross-device stitching beyond the customer-ID anchor.
Where this matters in the product
- Pulse — visitor counts include all visitors (anonymous + identified). Conversion counts only include orders, which require identification at checkout.
- Journeys — anonymous visitors show with their visitor ID; identified visitors show with the customer's masked email.
- Attribution — both anonymous and identified journeys are included. The difference doesn't change the model math.
Where to go next
- Channels and sources — how each session is bucketed
- Multi-touch journeys — sessions composing into journeys
- What "anonymous" vs "identified" visitors mean — coming soon, deeper dive