Identify Users & Profiles
Turn anonymous visitors into known people — call identify(), stitch activity across devices, and explore per-person profiles, identities, and merge conflicts.
Logspot links anonymous browsing to the real people behind it. Once you tell Logspot who someone is, every event — before and after they signed in, on every device — rolls up into one profile. This page covers how to identify users and what you can do with the resulting identities.
New to the model? Read How Tracking & Identity Works first for the anonymous-ID / user-ID / session mental model. This page is the practical "how to use it" guide.
Identify a User
When a visitor tells you who they are (sign up, log in), call identify() with
your stable user ID and any traits:
await Logspot.identify('user_123', {
email: 'user@example.com',
plan: 'pro',
name: 'Jane Doe',
});That's it. From then on, every track() carries the same user_id, and Logspot
stamps the person's canonical identity onto their events at ingest. Activity from
before they identified (still anonymous) stitches to the same profile via the
anonymous ID.
You can also identify server-side — handy when the user ID lives in your backend.
Use a Stable ID
user_id is your system's stable identifier for the person — a database ID, or
an email if that's what you key on. It's matched verbatim, so send the same
value every time. Call reset() on logout so the next
visitor on a shared device starts fresh.
Email & Other Traits
Traits describe the person (plan, name, company, anything). Two notes on
email specifically:
- Email is searchable but not a merge key. Whenever an
identifycarries an email — explicitemailtrait, or an email-shapeduser_id— Logspot attaches a normalized (lower-cased) email alias to the identity. You can then search for that person by email, and it stays unique within your organization. - Resolution happens on
user_idandanonymous_idonly. Email is a property, not a stitch trigger — so two different people who happen to share an email are never silently merged.
The Person Profile
Open any user to see their profile — a single timeline of who they are and what they've done:
- Headline stats — events, pageviews, sessions, avg events/session, avg session duration, bounce, active days, and revenue, for the selected range.
- Profile card — primary email, traits, first/last seen, and their company.
- Location & device, activity calendar, trend charts, top pages/referrers, and a sessions list.
It's the same view for a customer in your User list and for an admin opening an identity from Settings — only the scope differs.
Find & Manage Identities
Go to Settings → Identities to work with the canonical identities behind your data.
- Identities — search by any alias (
user_id,email,anonymous_id) within your organization, then open one for detail. - Identity detail — inspect a person's aliases, current traits, and recent org-wide events (across all your projects). You can attach an alias (e.g. add an email), mark one as the primary email, or unlink the identity (removes the canonical record; raw events keep their original IDs).
Merges & Conflicts
Cross-device stitching is automatic, but occasionally an identify ties together
two people who had already become separate identities (e.g. a shared device).
Logspot never auto-merges these — it records a conflict and leaves the call
successful, so a high-volume mistake can't quietly fuse two customers.
Review them under Settings → Identities → Conflicts:
- Merge — fold the two identities into one (use when it really is the same person).
- Leave separate — mark triaged without merging (use when they're genuinely two people).
Toggle Open / Resolved to see history. A conflict clears only when you explicitly triage it.
Control How Identity Is Established
Per project, under Project Settings → Identity, two settings govern behavior:
Identity Resolution — how much a plain track event may establish identity:
| Mode | What a track event does | identify() |
|---|---|---|
| Track & Identify (default) | resolves, stamps, creates identities, and links an unclaimed alias on a match | full |
| Identify | resolves + stamps only — never creates or links | establishes identity |
| Secure Identify | resolves + stamps only | must be cryptographically verified (JWKS) |
Secure Identify is for when you need end-to-end proof a user_id claim came
from your backend. Forward a signed token:
await Logspot.identify(
'user_123',
{ email: 'user@example.com' },
{ identityVerification: { token: jwtFromYourBackend } },
);Then set the issuer, audience, JWKS URL, and allowed algorithms in Project Settings.
Participation — organization (default; the project shares the org-wide
identity graph) or project-only (resolution is constrained to aliases that
originated in this project). Use project-only to isolate a project's identities
from the rest of your org.
Log Out with reset()
Logspot.reset();reset() clears the identified user and registered properties and rotates the
anonymous ID locally (no network call). Call it on logout so a shared browser
doesn't attribute the next person's activity to the previous user.
Privacy
Identity is built only from the IDs you provide plus a first-party anonymous cookie — no fingerprinting, no third-party cookies. Identification is consent-aware: events denied analytics consent are never counted, and a data-subject erasure request removes a person's identity and events.
First-party Proxy (Ad-blocker Bypass)
Serve the Logspot script and API from your own domain so privacy-focused browsers and content blockers don't drop your analytics.
Groups & Companies
Roll users up into accounts — associate people with companies (or any group type), then analyze usage, members, and revenue per account in the Companies dashboard.