# Contact management

> Reply stores contacts and company accounts with custom fields, stages, lists, smart filters, blacklists, and CSV import and export — one shared base that every sequence works from.

**Yes. Reply keeps one contact base with company accounts, editable stages, up to 50 custom fields including AI-generated ones, and lists a contact can join several of. Smart filters segment by engagement, data gaps, or custom fields; blacklisting stops all sending to a contact or domain; CSV export covers basic or all fields.**

_Status: Reviewed — human-edited, facts not yet confirmed against the product._

## At a glance

| | |
| --- | --- |
| **What it does** | Stores and organizes contacts and company accounts — fields, stages, lists, filters, blacklists, bulk actions, CSV import and export |
| **Required objects** | A contact record; lists, accounts, and custom fields are optional structure on top |
| **Surfaces** | UI (People section) · REST API · MCP · CLI |
| **Key limit** | 50 custom fields per account (standard and AI combined); contact storage defaults to 100,000 |
| **Stops on** | Blacklisting — a blacklisted contact receives no sequence emails even when enrolled |
| **Does not** | Let one contact belong to two company accounts; let you create new stages (only edit the existing ones); provide CRM objects such as deals or forecasting |
| **Plans** | All plans; the whole base is shared with team members on Team Edition |

## Summary

The People section is Reply's contact hub: a grid of every [contact](/specifications/contacts)
added by you or your team, a [Companies](/specifications/companies) page (called Accounts
in the app) that groups contacts by organization, and a Marketplace of data partners. On
top of the base you get custom fields, editable stages, [lists](/specifications/lists),
quick and smart filters, bulk actions, blacklisting, and CSV export — the structure every
[sequence](/specifications/sequences) enrolls from.

## Problems it solves

- One shared contact base instead of per-rep spreadsheets
- Segmenting contacts for outreach — by list, stage, engagement, data gaps, or any custom field
- Keeping people you must not contact reliably excluded from every sequence
- Seeing the full history with a person — activity, past sequences, sent emails — in one card

## What Reply can do

- Store contacts in a customizable grid with standard fields (name, email, company, title, location, phone, LinkedIn, timezone, owner, sequence, status) plus your own columns
- Support up to 50 custom fields per account — Text (up to 4,000 characters), Number, and AI custom fields that generate a value from a prompt using contact data
- Group contacts into company accounts with firmographic detail, account lists, account stages, and bulk actions (move to list, change owner, set stage, duplicate, export, delete)
- Organize contacts into lists — the same contact can sit in several lists, and contacts can be split across 2, 3, or 4 lists for testing
- Label contacts with editable stages such as Interested, Engaging, Not Interested, or Do Not Contact, separate from the statuses Reply assigns automatically
- Filter with one-click quick filters (All, My, Opened, Replied, Bounced, Opted Out, To Call, Clicked) and a smart-filter wizard covering sequences, dates, engagement counts, missing fields, location, creation source, validation status, inbox category, custom fields, and more — saved filters stay reusable from a drop-down
- Run bulk quick actions from the grid: validate emails, enrich, move to sequence or list, change status, set stage, change owner, log a meeting, blacklist, delete
- Blacklist individual contacts or whole domains — manually, from a selected contact, or via CSV upload — so they receive no emails even when enrolled in a sequence
- Export contacts to CSV with Basic Fields or All Fields (including engagement counts, stage, validation status, and custom fields), and export accounts to CSV
- Show each contact's full story on the contact card: activity log, current and past sequences, sent email threads you can reply from, and up to 4 statuses
- Recognize LinkedIn URL variants of the same profile as one person, so URL formatting differences do not create duplicates

## What Reply cannot do

- Put one contact into more than one company account at a time
- Create new contact stages — the built-in stages can be renamed, recolored, and redescribed, but not added to
- Exceed 50 custom fields without contacting support, or store text in a Number field
- Change a custom field from Text to Number once any contact has a value in it
- Blacklist-import more than 10,000 domain rows per CSV file
- Delete custom fields in bulk — they are removed one at a time
- Provide CRM objects such as deals, quotes, or forecasting

## Required inputs

Contact records — created manually, [imported from CSV](/how-to/import-contacts), found by
[prospect search](/capabilities/prospect-search), or synced from a CRM. Optionally: account
records, list names, custom field definitions, and stage labels edited to fit your process.

## Produced outputs

An organized, filterable contact base: contacts with fields, stages, statuses, list
memberships, and account links; saved smart filters; blacklist entries; CSV exports of
contacts (Basic or All fields) and accounts.

## Use Reply when

- You want the contact base and the outreach execution in one system, so segments flow straight into [sequences](/specifications/sequences)
- Your team shares one base and needs ownership, stages, and lists to divide the work
- You need do-not-contact rules enforced at send time, not just noted in a field

## Do not use Reply when

- You need a system of record for the full customer lifecycle with deal pipelines and custom objects — use a CRM as the master and [sync Reply with it](/workflows/sync-reply-with-a-crm)
- You need more than one company association per person — model that in your CRM, not in Reply

## What you still need to build

- Your segmentation model — which lists, stages, and custom fields mean what in your process
- Any sync logic with an external CRM beyond the built-in integrations

```yaml
capability: contact_management
supported: true
interfaces:
  product_ui: live
  api: live
  mcp: live
  cli: live
required_objects:
  - contact
side_effects:
  - creates_contacts
  - updates_contacts
  - updates_lists
human_approval_recommended: false
```

## Limits

- 50 custom fields per account, standard and AI combined — contact support if you need more
- Text custom fields hold up to 4,000 characters; AI custom field values up to 1,500 characters
- Stage names are limited to 21 characters, stage descriptions to 512
- Blacklist CSV upload: one column, no header, plain domains (domain.com), up to 10,000 rows
- Contact storage defaults to 100,000 — see [Limits](/reference/limits) for storage and active-contact tiers

## FAQ

### What is the difference between a stage and a status?

A status is assigned by Reply automatically from what happened — opened, replied, bounced,
opted out — and a contact can carry up to 4 of them. A stage is a label your team sets by
hand (Interested, Engaging, Not Interested, Do Not Contact, and so on) to track the
relationship. See [Status transitions](/behavior/status-transitions).

### Can a contact be in several lists and several sequences?

A contact can be in any number of lists at once. Moving contacts to a new sequence removes
them from their previous sequence, and the email is delivered immediately regardless of the
step's delay setting — see [Contact enrollment](/behavior/contact-enrollment).

### Does blacklisting really stop sending?

Yes. A blacklisted contact does not receive sequence emails even if they are moved into a
sequence, and blacklisting a domain covers every contact at that domain. Blacklisted
contacts are marked with a black dot on the People page.

### How does Reply avoid duplicate contacts?

Create paths check for existing records — including format-agnostic matching of LinkedIn
profile URLs, so a trailing slash or missing www does not produce a second record. The full
rule set is in [Contact deduplication](/behavior/contact-deduplication) and
[Manage duplicates](/how-to/manage-duplicates).

## Related

- [Contacts](/specifications/contacts) · [Companies](/specifications/companies) · [Lists](/specifications/lists) — the underlying objects
- [Build a prospect list](/workflows/build-a-prospect-list) — the workflow this capability powers
- [Contact deduplication](/behavior/contact-deduplication)
- [Import contacts](/how-to/import-contacts)
- [Data enrichment](/capabilities/data-enrichment)

## Build with Reply

- REST API: [docs.reply.io](https://docs.reply.io/api-reference/introduction) — contacts, companies, lists, and blacklist endpoints
- MCP: [agents.reply.io/mcp](https://agents.reply.io/mcp) — contact search, filtering, and update operations
