User analytics

One timeline per person

User analytics is about people, not pageviews — every session, event, and trait for one person in a single view, and cohorts built from them. Pug unifies anonymous and identified activity automatically, open source and self-hostable.

Unified profiles Anonymous → identified Cohorts & traits Own your data
Definition

What user analytics means

Behaviour attributed to a person over time, not aggregate counts.

Web analytics tells you how many sessions hit a page. User analytics tells you who did what, in order, across devices — so you can follow a single person from their first anonymous visit through sign-up and beyond. It’s the per-person foundation that product analytics builds funnels, retention, and segments on top of.

Unified profiles

Anonymous activity becomes one person

No identity stitching to maintain — Pug merges it for you, the moment you identify a user.

  • Before sign-in, events accrue to an anonymous ID
  • identify(userId) merges that history into one profile
  • Works across devices: web today, app tomorrow — same person
  • Traits (plan, email, anything) live on the profile and filter every insight
user-09996
ext cust_009996
1,633
Events
317
Sessions
215
Pageviews
Created May 30 First seen 123d ago Last seen 4d ago Android 11 New York City, US
Activitylast 60 days
Identified properties1 trait
nameDiana Jones
Recent activitylast 10 events
  • app_close 4d ago
  • scroll 4d ago 72%
  • page_view 4d ago
  • app_open 4d ago
  • checkout_started 4d ago USD 416.21
  • add_to_cart 4d ago prod-0198
  • search 4d ago shirt
Identity resolution

One profile, not one per session

Events fired before sign-in don’t vanish. On identify(), the anonymous timeline joins everything after it — so the first touch and the upgrade live on the same person.

  • Pre-signup history merges into the identified profile
  • The same person across web, mobile, and server
  • Traits set on identify filter every downstream insight
From people to cohorts

What user-level data unlocks

Once every event ties to a person, the aggregate questions get answers the per-page view never could.

Per-person timelines

Every session, event, and trait for one person in a single searchable view — not a row in an aggregate table.

Cohorts & retention

Group users by when they joined or what they did, then watch each cohort come back week over week with retention.

Traits & segments

Plan, country, email, or any custom trait lives on the profile and filters every insight — define a segment once, apply it anywhere.

Own the data

Profiles that stay on your servers

User-level data is the most sensitive data you hold. Self-hosting Pug keeps every profile inside your own infrastructure — no third-party sharing — under AGPL-3.0.

FAQ

User analytics, answered.

What is user analytics?

User analytics measures behaviour at the level of an individual person and cohort, rather than aggregate page totals. It ties every event to a profile, so you can answer questions like “what did this user do before they upgraded?” or “do users from this cohort stick around?” It’s the per-person side of product analytics.

How is user analytics different from web analytics?

Web analytics counts traffic — sessions, pageviews, sources — usually anonymised and aggregated. User analytics attributes behaviour to a person over time and across devices, which is what funnels, retention, and profiles need.

How does identity resolution work?

Before sign-in, events accrue to an anonymous ID. When you call identify(userId), that anonymous history merges into one profile — so a user’s pre-signup activity isn’t lost. The same person stays unified across web, mobile, and server.

Does user-level tracking work with privacy and GDPR?

Self-hosting keeps every profile on your own servers, which simplifies data residency and GDPR questions, and there’s no ad-network data sharing. It isn’t automatic compliance, but it removes the third-party sharing that complicates most setups. See privacy-first analytics.

Can I self-host user analytics?

Yes. Pug runs as a single Go binary backed by PostgreSQL, ClickHouse, and NATS, so every profile and event stays inside your infrastructure. See self-hosted analytics.

Understand users, not just pageviews.

Open source, self-hostable, and free during open beta. Unify your first profiles in minutes.