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

# Companies and contacts

> How Swan stores accounts and people, and how it avoids creating duplicates.

Swan keeps its own database of companies and contacts, separate from any CRM you connect. This is the working set the agent researches, enriches, tags, and reaches out to — think of it as Swan's own prospect database, related to but not the same as your CRM's records. See [Swan vs. your CRM](swan-vs-your-crm) for how the two stay in sync.

## Companies

A company record in Swan is keyed by domain. Each company is unique per **\[organization, domain]** — if you (or the agent, or a trigger) add a company whose domain already exists, Swan updates the existing record instead of creating a second one. Renaming a company or re-uploading the same domain in a CSV never produces a duplicate.

Where: your company list lives at [agent.getswan.com/companies](https://agent.getswan.com/companies), as a kanban board grouped by funnel stage or a table (toggle in the view switcher; `?view=table` or `?view=board`). The **Upload** button there opens a CSV import wizard (up to 1,000 companies per file); asking the agent in chat to "find new accounts" matching your ICP does the same thing without a file.

Each company tracks:

* **Source** — how it entered Swan: a CSV upload, the agent (e.g., found while prospecting), or a trigger (e.g., a webhook or business-event source added it). Asking the agent in chat to filter by source or by when records were added or updated works — "companies imported from CSV in the last 48 hours" — even though the Accounts page's own filter bar doesn't expose a source or date-added filter directly.
* **Owner** — an email address, if one has been assigned. Editable inline from the company's page.
* **Tags** — free-form labels; see [Tags, lists, and exclusions](tags-lists-and-exclusions).
* **ICP segment and fit reason** — which segment the company matches (if any), plus a short explanation the agent writes when it classifies the company. See [ICP, personas, and the funnel](icp-personas-and-funnel).
* **Funnel stage** — where the company sits in your pipeline, with a history of transitions (who or what moved it, and when). Change it yourself from the company's page (`https://agent.getswan.com/companies/{companyId}`) or by dragging its card between columns on the Accounts board view.

Deleting a company is a soft delete — it's hidden from view but not permanently erased, and it doesn't cascade to delete its contacts or any sequences those contacts are enrolled in.

## Contacts

A contact belongs to a company and carries the usual fields — name, title, work email, phone, LinkedIn URL, location — plus a source that's more granular than a company's: CSV upload, the agent, a CRM, a website visitor, or one of Swan's data providers. Contacts can also have an owner, a persona, and a persona fit reason (the agent's explanation of why this person matches a given persona).

Where: Swan doesn't have a standalone contacts list — you see a company's contacts on that company's own page (`https://agent.getswan.com/companies/{companyId}`), in the Contacts card alongside their outreach status.

When a contact is added or enriched, Swan checks for an existing match in this priority order before creating a new record:

1. A matching CRM ID
2. A matching LinkedIn URL
3. A matching work email

If any of those match an existing contact in your org, Swan updates that record rather than creating a duplicate — this is how contacts that arrive from different places (a CSV, an integration, the agent enriching someone independently) end up merged into one record instead of scattered across several.

## One contact, one slot per sequence

A given contact can only be enrolled in a specific sequence once — Swan enforces this at the database level, so asking the agent to "add this contact to the sequence" twice is a no-op the second time, not a duplicate enrollment. A contact can, however, be active in multiple *different* sequences at once.

## Common questions

**If I upload the same company twice, does it create a duplicate?**
No. Companies are unique per domain within your org — re-adding a domain updates the existing record's fields rather than creating a new one.

**Can a contact end up duplicated if they come in from a CSV and later from the CRM?**
No, as long as they share a work email, LinkedIn URL, or CRM ID with the existing record — Swan matches on any of those before creating a new contact.

**What happens to a contact's outreach history if I delete their company?**
Deleting a company doesn't delete its contacts or their sequence history — it's a soft delete that just removes the company from view.

**Can I add the same contact to a sequence twice to send them an extra round of messages?**
No — a contact can only hold one slot in a given sequence. To reach them again, use a different sequence or a new step on the existing one.

**Does Swan know a contact already exists in my CRM before creating a new one there?**
Yes — see [Swan vs. your CRM](swan-vs-your-crm) for how contact creation in your CRM is timed and matched.
