> For the complete documentation index, see [llms.txt](https://documentation.freshpaint.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.freshpaint.io/audiences/identity/identity-resolution.md).

# Identity Resolution

## Identity Resolution

Freshpaint uses a deterministic, priority-based system to identify and connect visitor records. This page explains how matching works and why certain identifiers take precedence over others.

### Matching Logic

When Freshpaint receives an event, it matches the event to a profile using the following identifiers, evaluated in priority order:

1. `external_id` — customer-provided identifier
2. Email
3. Phone
4. Impression Cookie ID
5. Device ID
6. IP Address

Freshpaint uses the highest-priority match available.

### Floating Attribute Model

Freshpaint follows a floating attribute model: identifiers move between profiles as new, higher-priority information arrives. If Freshpaint learns that an email address belongs to an `external_id`, that email associates with whichever profile owns that ID — even if it was previously linked elsewhere.

Low-priority identifiers like IP Address are intentionally flexible. This prevents false merges, such as linking every visitor on a shared office network into a single profile.

The result: profiles are built around the strongest identifiers available, and weaker signals defer to them. This approach handles common real-world scenarios — like household members sharing a device — without incorrectly merging separate people into one profile.

### What's Next?

* [**User Profiles**](/audiences/identity/user-profiles.md) — Explore resolved patient profiles in Freshpaint
* [**Cross-Device Attribution**](/audiences/identity/cross-device-attribution.md) — See how resolved identities power cross-device attribution
