> 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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documentation.freshpaint.io/audiences/identity/identity-resolution.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
