Glossary

Identity resolution

Identity resolution is the process of linking the events a single person generates across devices, sessions, and anonymous and signed-in states into one unified profile — so their full history reads as one timeline instead of many disconnected visitors.

Anonymous sessions across devices resolving into one person the moment identify() is called.

The problem it solves

Without identity resolution, one person looks like a crowd: they browse anonymously on mobile, sign up on desktop, and return a week later on a third device — four “visitors” that are really one customer. Every funnel and retention report is distorted, because the journey is split across disconnected anonymous IDs. Identity resolution stitches those fragments back into a single person.

Anonymous to known

A visitor starts anonymous, identified only by a device or cookie ID. When they sign in — or you call identify() with a stable user ID — the tool links the anonymous history to that known person, and everything they did before sign-up is retroactively attributed to them. Events from before and after the moment of identification line up on one timeline.

Deterministic vs probabilistic

There are two broad approaches. Deterministic resolution links events through a shared, known identifier — the user ID you pass to identify(), or a matching email. It’s exact. Probabilistic resolution infers that two devices belong to the same person from signals like IP address, device fingerprint, and behavior — a best guess, used by some large customer-data platforms to merge activity without a shared login. Deterministic matching is more accurate and more privacy-respecting; probabilistic trades certainty for reach.

Identity resolution in a CDP vs in analytics

Customer-data platforms like Segment build a persistent identity graph to merge a person’s activity across every tool and channel, then route it onward. Product analytics tools resolve identity for a narrower purpose: so the behavioral reports are about people, not sessions. If what you actually want is the analysis on a unified profile — not a routing layer — see Pug as a Segment alternative.

A worked example

A visitor browses anonymously for a week (anonymous ID anon_88), firing page_view and add_to_cart. They sign up and you call identify('user_42'). Deterministic resolution aliases anon_88 → user_42, so the pre-signup cart is now attributed to the known person. Their next session on a different device — where you call identify('user_42') again after login — joins the same profile. One shared key does all the stitching; nothing is guessed.

How Pug resolves identity

Pug merges deterministically: anonymous events collected before sign-in are joined to a single person when you call identify() with a stable ID, across devices and sessions. Traits like plan, email, or company then live on that unified profile and filter every insight — trends, funnels, retention, and flows. There’s no probabilistic guessing. See user analytics for what the resolved profile looks like.

FAQ

Identity resolution — common questions

What is identity resolution?

Identity resolution links the events one person generates across devices, sessions, and anonymous and signed-in states into a single profile — so their history reads as one timeline instead of many separate visitors.

How does identity resolution work?

A visitor starts anonymous, identified only by a device or cookie ID. When they sign in or you call identify() with a stable user ID, the tool stitches the anonymous history to that known person. Traits like email or plan then live on the unified profile.

What is the difference between deterministic and probabilistic identity?

Deterministic matching links events using a shared known identifier — a user ID you provide via identify(). Probabilistic matching infers that two devices are the same person from signals like IP and behavior. Deterministic is exact; probabilistic is a best guess. Pug merges deterministically on identify().

Does Pug do identity resolution?

Yes — deterministically. Anonymous events merge into one person when you call identify() with a stable ID, across devices and sessions, and the resulting traits filter every insight. Pug does not do probabilistic cross-device guessing.

See it in Pug.

Open-source product analytics with unified profiles. Self-host under AGPL-3.0, or use the free cloud during open beta.