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 identity resolution

There are two broad approaches, and they ask different questions. Deterministic matching asks whether two records share a known key. Probabilistic matching asks how likely it is that they belong to the same person.

Deterministic matching

Deterministic resolution links events through a shared, known identifier: the user ID you pass to identify(), or a matching email. A match is either true or it isn’t, so it’s exact. Its limit is reach: it can only link activity from people who sign in somewhere.

Probabilistic matching

Probabilistic resolution infers that two devices or sessions belong to the same person without a shared login. It weighs signals that are each non-unique on their own (IP address, User-Agent and other device attributes, location, and when and how someone browses), scores each candidate pair, and links the pair when the score clears a confidence threshold. Ad-tech identity graphs and some large customer-data platforms use it to extend reach across devices.

The cost is error you can’t see. Two people behind one household or office IP can be merged into one profile, and one person on a new network can be split into two. Every report built on those matches carries that error, and no single profile tells you whether its own merge is right. It also raises the privacy bar: the inputs are personal data under GDPR, and deriving a stable cross-device identifier from device characteristics is the fingerprinting that European regulators bring under the same consent rule as cookies.

Which to use

For marketing reach, such as matching an ad impression to a later visit, a probabilistic link can be worth its error rate. For product analytics it rarely is: a funnel or retention cohort that silently merges two people answers the wrong question with full confidence. That is why product analytics tools generally resolve identity deterministically, and leave anonymous visitors anonymous until they identify themselves.

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().

What is probabilistic identity resolution?

Probabilistic identity resolution links devices or sessions to one person without a shared login. It scores how likely two records are to match on signals like IP address, device attributes, location, and browsing patterns, then merges the pairs that clear a confidence threshold. It extends reach at the cost of accuracy: some merges are wrong, and the signals it relies on are personal data.

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 Pug Cloud, free up to 100k events a month.

Questions? Email hello@pug.sh