Profiles
Search and inspect individual users. Profiles connect anonymous browsing history to identified accounts and provide the full event timeline for support and debugging.
Path: /p/:projectId/profiles
Profile list
Search and browse all profiles in the project:
| Field | Description |
|---|---|
| External ID | The ID passed to identify() |
| Last seen | Most recent event timestamp |
| Event count | Total events attributed to this profile |
| Key traits | Preview of merged traits (email, plan, etc.) |
Search
Search by:
- External ID — exact match on the
identify()ID - Email — if set as a trait via
identify('id', { email: '…' }) - Custom traits — any indexed trait property
Search: user@example.com → finds profile with email trait
Search: user-123 → finds profile with external ID
Search: plan:pro → finds profiles where plan trait = proProfile detail
Click a profile to open the detail view with four tabs:
Overview tab
- Traits — all merged properties from
identify()calls and event-derived attributes - First seen / Last seen — profile lifetime
- Key metrics — event count, session count, revenue total (if
purchaseevents exist) - Device info — latest
$browser,$os,$geo.country
Events tab
Chronological event history with filters:
- Filter by event name
- Filter by date range
- Filter by property value
- Expand any event to see full property payload
Use this tab to answer “what did this user do before they churned?” or “did the purchase event fire?”
Sessions tab
List of sessions with:
- Session ID
- Start time / duration
- Entry page (
$urlof first event) - Event count per session
Session detail
Click a session to see all events within that visit in order. Useful for reproducing a user’s exact path through your product.
Identity lifecycle
Profiles follow this lifecycle:
1. Anonymous visit
SDK creates anonymous profile → events accumulate
2. identify() called
identify('user-123', { email: '…' })
→ anonymous events merge into user-123
3. Subsequent visits
SDK recognizes user-123 → events attributed directly
4. reset() on sign-out
→ new anonymous profile for next visitorSee Identity & sessions for SDK details.
Debugging identity issues
| Symptom | Likely cause | Fix |
|---|---|---|
| Pre-login events missing after identify | identify() not called | Call identify() immediately after sign-in |
| Two profiles for same user | Different external IDs used | Standardize ID; use alias to merge |
| Traits not updating | Async write lag | Wait a few seconds; refresh profile |
| Anonymous profile with no events | SDK not initialized on that page | Confirm init() runs before any track() |
Use cases
- Support triage — customer reports a bug; search by email, replay their event timeline
- Conversion debugging — find users who reached checkout but didn’t purchase
- Cohort inspection — identify power users by event count or revenue traits
- Identity audit — verify
identify()is firing correctly after deploy
Further reading
- Identity & sessions — SDK identify/reset/alias
- Profiles API — server-side profile reads
- User journeys guide — aggregate path analysis
Last updated on