For the complete documentation index, see llms.txt. This page is also available as Markdown.

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?

Last updated

Was this helpful?