Quick answer
Identity resolution is the process of recognising that different identifiers, such as anonymous visitor ids, device ids, login ids and email addresses, belong to the same person, and linking them into one profile.
What is identity resolution?
Identity resolution connects the different identifiers one person leaves behind (an anonymous visitor id in a browser, a device id in an app, a login id, an email address) and treats them as one person. Without it, someone who browses on their phone and buys on their laptop looks like two people, one who never converts and one who converts instantly.
Deterministic vs probabilistic
| Deterministic | Probabilistic | |
|---|---|---|
| Links when | Identifiers share an exact key (same login id, same hashed email) | Signals look similar (IP, device model, time, behaviour) |
| Accuracy | High | Lower; false merges happen |
| Coverage | Only people who log in or identify themselves | Can include anonymous people |
| Privacy risk | Lower and easier to explain | Higher; often treated like fingerprinting |
Most analytics use deterministic matching. Probabilistic matching is more common in advertising, and regulators and browsers have pushed back on it.
How merging changes your numbers
The same period, counted at three layers (sample numbers):
| Layer | Count | Why it differs |
|---|---|---|
| Visitor ids | 10,000 | Includes the same browser returning under a new id |
| Devices | 8,200 | 1,800 fewer: repeat visits from the same device merged |
| People | 6,500 | 1,700 fewer: one person on several devices merged |
Conversion per person is higher than conversion per visitor, because the denominator shrinks. Neither is wrong; they answer different questions. Say which one a report uses.
An identity graph
person u_123
├─ login id: u_123
├─ email: (hashed)
├─ device A (phone app) bound at first login, earlier anonymous events backfilled
├─ device B (laptop) bound at login
└─ visitor ids on device B before login → backfilled to u_123
Edge cases
- Shared devices. A family laptop or a shop's tablet logs in as several people. Each login should move the device to the new person without rewriting the previous person's history.
- Junk ids. Code that sends
guest,null,0or-1as a user id merges thousands of strangers into one "person". Block such values. - Too many devices. A person with hundreds of devices is usually a test account or a bot; cap and alert.
- Logout. After logout, new activity should stop being attached to the person.
Privacy considerations
Linking identifiers to a person creates personal data. Use deterministic keys you can explain, collect consent where your rules require it, hash emails and phone numbers, and make sure one person's linked data can be found and deleted on request. This is general information, not legal advice.
Identity resolution in TapCub
TapCub uses deterministic matching only. In identified mode, tapcub.login(id) binds the device to a login id; the first login on a device backfills that device's earlier anonymous events to the person. If the device later logs in as someone else, existing rows stay with the first person and a new session starts for the new one. bind adds other ids (email, mobile, OpenID, UnionID; up to five each); emails are lowercased and hashed. Blocked values such as null, guest, all zeros and -1 are rejected, and a person keeps at most 50 devices by default. Every bind, switch and split is logged on All-platform analytics › Users › Identity map, with a card showing how many extra visitors and devices identity removed. The website script does not use fingerprinting to link people across devices. See also user id and identify.
See also: Digital analytics.
Was this explanation clear?
We use your answers to fix and expand this page.
Couldn’t send. Please try again in a minute.
Thanks for the feedback. We’ll use it to improve this page.You’ve already sent feedback on this page. Thanks.

Technical Engineer
Focuses on tracking code, SDKs, and API integrations, with practical guidance on implementation checks and troubleshooting.