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

# Contacts

> See who your agents have actually talked to, across every channel and every agent.

When someone messages one of your agents on WhatsApp, Brainstormer now keeps a record of who they are — not just the conversation. Contacts pull that identity together: one person, one record, even if they've spoken to more than one of your agents.

<Info>
  Contacts are currently built from WhatsApp conversations, where a real phone number and display name are already part of every message. A web chat visitor becomes a contact once they give your agent an email or phone number (via the agent recording it) or once an operator names them — not automatically, since an anonymous browser visit carries no real-world identity to build a record around.
</Info>

## Viewing Contacts

Navigate to **Contacts** in the sidebar to see everyone your agents have spoken to across your organization.

Each row shows:

* **Name and phone** — the person's resolved identity
* **Channel(s)** — which channel(s) you've reached them on (e.g. WhatsApp)
* **Agents** — how many of your agents they've talked to
* **Conversations** — total conversation count across all agents
* **Status** — where they stand: New, Engaged, Qualified, or Closed
* **Last seen** — when they last messaged

Use the search box and the channel/status filters to narrow the list — like every large list in Brainstormer, it's search-first rather than a full dump.

## Contact Detail

Click a contact to see:

* **Attributes** — anything an agent has recorded about them (company, budget, intent — whatever fields you've configured, see below), each one showing where it came from and when
* **Identities** — every channel identifier tied to this person (a WhatsApp number, an email)
* **Conversations** — every conversation with this person, across **every agent**, not just the one you're currently viewing

You can change a contact's **status** directly from this page — useful for treating your contact list as a lightweight lead list until a fuller pipeline exists.

## Exporting Contacts

Click **Export CSV** at the top of the Contacts list to download every matching
contact — whatever the current search, channel, status, and agent filters
describe, not just the page you're looking at. The file opens in Excel and
imports into other CRMs and outbound tools.

Each contact becomes one row. Alongside the resolved identity (name, phone,
email, channel, status), the export includes the **organization name** and every
attribute your agents have collected as its own column (`company`, `title`, or
any custom field you've configured). The export is streamed, so large contact
lists download completely.

## Per-Agent Contacts

Open any agent and go to its **Contacts** tab to see only the people that specific agent has spoken to — the same list, filtered to one agent.

## Letting an Agent Record Contact Details

Enable **Update Contact** on an agent's Tools tab to let it save details a person shares mid-conversation — an email, a company name, a budget, or anything else you configure.

* You choose exactly which fields the agent may collect, and the agent can only ever propose those fields — nothing else.
* The agent is instructed to record something only when the person actually states it, never to guess or infer it.
* If someone gives an email or phone number that's already tied to a different contact in your organization, that one field is rejected rather than silently overwriting the other person's record — the agent lets the field pass and continues normally.

<Note>
  Brainstormer never lets an agent target *another* contact's record — only the contact tied to the current conversation can ever be updated, even if someone tries to instruct the agent otherwise mid-chat.
</Note>

## Where Contact Identity Shows Up

Once a conversation resolves to a contact, that person's name (or phone number, if no name is known yet) now shows up in place of a generic conversation label — in Conversations (all views: Overview, Inbox, and resolved chats), operator queues, and the agent's own chat page. A conversation with no resolved contact still shows something readable (`Web visitor · <id>`) rather than a raw id.

<Info>
  Looking for a full sales/lead pipeline — stages, owners, an activity feed? That's not built yet. Contacts today give you a status field and a browsable list; think of it as the foundation a pipeline would sit on top of, not the pipeline itself.
</Info>


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