> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sapt.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Visitors & identity resolution

> See every visitor on your site — anonymous, identified, or contact — follow their full event timeline, and turn an identified visitor into a CRM contact with their entire prior history attached.

The **Visitors** view (**Analytics → Visitors**) is the people-shaped side of your analytics. Instead of aggregate pageview counts, it lists the actual humans who've been on your site, what stage of recognition they're at, and what they did — so you can move someone from anonymous traffic to a named contact in one click.

## The visitor list

Each row is one visitor (a stable first-party `_sapt_vid`), tagged with where they sit in the identity lifecycle:

| Status         | Meaning                                                                                                                                                            |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Anonymous**  | We've seen the device but have no personal data — just a random first-party ID and the events it produced.                                                         |
| **Identified** | The visitor has left an email or phone (via the tracking script's `identify()` call or a tracked form submit), so we can attach a real identity to their activity. |
| **Contact**    | The visitor is linked to a CRM **Person**. Their web activity and their CRM record are now one timeline.                                                           |

At the top of the view is your **identification rate** — the share of recent visitors who are identified or better. It's the single number that tells you how well your site is converting anonymous traffic into people you can actually follow up with.

## The lifecycle

A visitor moves through three stages, and Sapt keeps everything they did *before* each transition:

```
anonymous  ──identify()/form──▶  identified  ──link to Person──▶  contact
```

1. **Anonymous → identified.** The moment a visitor submits a tracked form, or your code calls `window.sapt.identify({ email })` (see [First-party analytics](/docs/mintlify/analytics/overview)), Sapt attaches that email/phone to their visitor ID. Everything they browsed *before* identifying is retroactively theirs.
2. **Identified → contact.** Linking the visitor to a CRM Person promotes them to a contact. Do it from the dashboard with **Add to CRM**, or over the [Attribution MCP](/docs/mintlify/analytics/attribution-mcp) with `linkVisitorToContact`.

<Note>
  Identification is sticky and **cross-device**. When the same email or phone shows up on a phone and a laptop, Sapt stitches those visitor IDs together so the timeline shows one person across every device — not two anonymous strangers.
</Note>

## Visitor timeline

Click any visitor to open their full event timeline: every pageview, click, form submit, and custom event in order, with the source and campaign that brought each session. For a contact, the same timeline also folds in CRM activity, so you get one continuous story from first anonymous visit to latest interaction.

## Add to CRM

When a visitor is identified, the **Add to CRM** button turns them into a contact:

* A CRM **Person** is created (or matched, if one already exists for that email/phone).
* The visitor's **entire prior browsing history is attached retroactively** — including sessions from before they identified, and from other devices that have been stitched to them.
* From then on, new web activity keeps flowing onto that contact's journey automatically.

This is how a cold, anonymous pageview from three weeks ago ends up as the first touch on a brand-new contact's record the instant they fill out a form.

## Do it from an agent

Everything here is also available to AI agents through the [Attribution MCP](/docs/mintlify/analytics/attribution-mcp):

* `getVisitors` — the visitor list with identity status and stats
* `getLiveVisitors` — who's on the site right now
* `getVisitorTimeline` — one visitor's full event history
* `linkVisitorToContact` — the programmatic **Add to CRM**
* `getContactJourney` — the unified journey once a visitor is a contact

## Keep going

<CardGroup cols={2}>
  <Card title="Attribution analytics" href="/docs/mintlify/analytics/attribution" description="Where your identified visitors and conversions originally came from." />

  <Card title="Attribution MCP" href="/docs/mintlify/analytics/attribution-mcp" description="Query visitors and link them to contacts from an AI agent." />

  <Card title="First-party analytics" href="/docs/mintlify/analytics/overview" description="Install the tracking script and the identify() call that powers all of this." />
</CardGroup>
