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

# Visitors

> See who's on your site right now, where they are and what they're looking at, and start a chat with one of them.

The **Visitors** page (`/visitors`, or `g` then `v`) shows everyone who has a page with your widget open, live. It updates as people arrive, move between pages and leave. The sidebar shows the number of live visitors next to **Visitors**.

A visitor appears here when the widget's loader is on the page and has connected to your desk. There's no separate tracking script and no third-party analytics: the loader on each page keeps one small live connection to your desk.

A session is one visit from one browser, shared by all its tabs and kept across reloads. It ends after 30 minutes without a page view or a visible tab, or after 24 hours. See [Consent and privacy](/widget/consent-and-privacy.md#what-the-widget-stores) for what's stored.

## What the page shows

### On your site now

The top card puts every visitor on a 3D globe, with these numbers beside it:

| Number | Meaning |
| - | - |
| **On your site now** | Live visitors |
| **Countries** | Countries they're in |
| **Signed in** | Visitors the desk knows: identified by your site, or who have started a chat |
| **In a chat** | Visitors with a conversation going |
| **Median visit** | Typical time since their session started |

**Top countries** lists up to five countries with the most visitors. Countries with someone on your site are tinted on the globe. Drag the globe to spin it (with a mouse; on touch screens a drag scrolls the page). Hovering a visitor in the list turns the globe to them.

Locations come from Cloudflare's IP geolocation, rounded to about 10 km. The globe is drawn from one static map file served by your desk: no map tiles or map service are involved. It follows the desk's light or dark theme.

### Pages and sources

When there are visitors, two cards show:

* **Pages they're on:** the pages people have open now, most first.
* **Where they came from:** the `utm_source` campaign tag if the visit's landing page had one, else the referring site, else **Direct**.

### Everyone on your site

The list has one row per browser session, so a visitor with your site open in three tabs is one row, even after they reload. Verified customers come first, then the rest by how long they've been on the site. Each row shows:

* **Who.** A signed-in customer's name and email with a ✓ when your site verified them, without it when the page only [named them](/widget/identify-users.md#without-a-token); an anonymous visitor as `Visitor #1234`. **In a chat** marks someone with a conversation going.
* **Where.** City and country, and their browser and OS.
* **The page.** Its title and address, and where they came from (**Direct visit**, the referring site, or the `utm_source` tag), followed by the campaign (`utm_campaign`) when there is one.
* **Time.** How long since their session started, and how many pages they've viewed, across reloads and tabs.

Query values in addresses are masked by the loader, so they show as `…`. Campaign tags (`utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, `utm_content`) keep their values.

> [!NOTE]
>
> Signed-in customers show who they are only when your site sends an identity token. See [Identify signed-in users](/widget/identify-users.md).

A visitor disappears from the list when they close the page. A browser that stops answering (a laptop that went to sleep, a dropped connection) is dropped after about 75 seconds.

Bots aren't listed: crawlers, link previews, uptime checks and automated or headless browsers. The loader doesn't open the live connection for them, and the desk refuses it if one tries. Debug capture and nudges still work for them.

If your widget runs in [consent mode](/widget/consent-and-privacy.md), visitors appear only after they've given consent: before that, the loader opens no live connection.

## Start a chat with a visitor

You can open the conversation yourself, for example when someone has been on the pricing page for a while.

**1. Press Start chat**

On the visitor's row, press **Start chat**. The button isn't shown for someone already in a chat.

**2. Write your opening message**

A field opens with a suggestion like `Hi Dana! Can I help you with anything on Pricing?` (using their first name and the page title when known). Edit it (up to 1,000 characters) and press **Send**.

**3. They see it on their page**

The visitor gets a card on the page they're on with your message, signed `<your name> from <workspace>`. The row now reads **Invite sent**. If they've left the site already, you see **This visitor has left the site.**

If the visitor answers within 30 minutes, the conversation starts with your message as its first message. It's assigned to you, it's handled by your team rather than the AI, and round robin leaves it alone. If they ignore the card, nothing is created. If the widget is already open on their side, the card isn't shown.

## Contact details

The visitor list is about who is on your site right now. The details of a customer you're talking to live in the conversation's side panel, under **Customer**:

* **Verified customers** (identified by your site): name, email, user ID and the attributes your site sends, like plan or company. They come from your app and can't be edited in the desk.
* **Anonymous visitors**: press **Edit** to add a name or email when they tell you. The desk validates the email. A name or email from the page's `identify({ id, name, email })`, the chat's email ask or an agent shows **Not verified**: anyone could have typed it. Browsers with the same email or user id show as one person: the card says **Same person** and lists all their chats. **Manage** opens the person's page, where you can unlink a browser or link another contact by hand.
* **Other conversations (N)** lists the same customer's other chats.
* **Company**, when your site sends one in the token: the company's name, its id in your app, its attributes and how many of its people have signed in. See [Company](/widget/identify-users.md#company).
* **Their team's conversations** lists the latest 10 chats from the company's other people, with who wrote, the status and the date.

See [The inbox](/inbox/overview.md#the-side-panel) for the rest of the side panel.

## Next steps

> **[Identify signed-in users](/widget/identify-users.md)**
>
> Show who your signed-in customers are.

> **[Consent and privacy](/widget/consent-and-privacy.md)**
>
> What the loader stores and when.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.