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

# Manage contacts in Talkturo CRM

> Store, search, and enrich individual contact records — complete with call history, lead status, custom fields, and company associations.

Contacts are the foundation of your CRM. Each contact represents an individual person your AI assistant can call, with a phone number, optional email address, job title, lead status, and a link to a [company record](/en/crm/companies). As your assistant has conversations, Talkturo automatically enriches contacts with data captured from each call, so your records stay up to date without manual effort.

## What a contact record contains

A contact stores the following information:

<CardGroup cols={2}>
  <Card title="Identity" icon="user">
    First name, last name, job title, email, primary phone, and optional secondary phone number.
  </Card>

  <Card title="Lead status" icon="chart-bar">
    One of: **New**, **Contacted**, **Qualified**, **Unqualified**, **Customer**, **Churned**, or **Do Not Contact**.
  </Card>

  <Card title="Company association" icon="building">
    A link to a [company record](/en/crm/companies). Every contact must belong to a company.
  </Card>

  <Card title="Custom fields" icon="sliders">
    Any additional fields your team defines — or that the [AI info extractor](/en/crm/info-extraction) creates automatically from call transcripts.
  </Card>
</CardGroup>

Additional fields include: source (how the contact entered your CRM), timezone, preferred contact method, do-not-call flag, tags, and free-text notes.

## Add contacts

You can add contacts in two ways: one at a time through the dashboard, or in bulk via CSV import.

### Add a contact manually

<Steps>
  <Step title="Open the Contacts page">
    In the sidebar, navigate to **Contacts** under your account.
  </Step>

  <Step title="Click Add Contact">
    Select **Add Contact** in the top-right corner of the page.
  </Step>

  <Step title="Fill in the contact details">
    First name and last name are required. You must also select a company — [create the company first](/en/crm/companies) if it does not exist yet.

    Optional fields include email, mobile number, job title, lead status, source, and any custom fields defined for your account.
  </Step>

  <Step title="Save the contact">
    Click **Create Contact**. The contact appears in your contacts table immediately.
  </Step>
</Steps>

<Note>
  You must create at least one company before you can add a contact. Contacts cannot exist without a company association.
</Note>

### Import contacts from CSV

To add many contacts at once, use the CSV importer.

<Steps>
  <Step title="Prepare your CSV file">
    Your file must include at minimum a **First Name**, **Last Name**, and **Company Name** column. Optional columns include email, phone, job title, lead status, source, timezone, tags, and company details (website, industry, city, country, etc.).

    Example file structure:

    ```csv theme={null}
    first_name,last_name,email,phone,job_title,lead_status,company_name,company_industry,company_city
    Jane,Smith,jane@acme.com,+12025550100,CEO,qualified,Acme Corp,Technology,San Francisco
    John,Doe,john@widgets.com,+12025550101,Sales Manager,new,Widgets Inc,Retail,New York
    ```
  </Step>

  <Step title="Click Import CSV">
    On the Contacts page, select **Import CSV** in the top-right corner.
  </Step>

  <Step title="Upload and map columns">
    Upload your `.csv` file. Talkturo automatically maps standard column names (such as `first_name`, `email`, `company_name`). Review and adjust any column mappings before proceeding.

    Enable **Import and update company fields** if your CSV includes company details you want saved to the company records.
  </Step>

  <Step title="Start the import">
    Click **Start Import**. The dashboard shows how many records succeeded and any rows that failed, with specific error messages for each failure.
  </Step>
</Steps>

<Tip>
  If a company in your CSV does not exist yet, Talkturo creates it automatically. Disable **Automatically create companies** in step 3 if you want to skip unknown companies instead.
</Tip>

## View call history for a contact

Click any contact row in the contacts table to open the contact detail panel. From there you can see all calls made to or from that contact, including timestamps, recordings, and AI-generated summaries. Call history updates automatically after each completed call.

## Custom fields

Custom fields let you store any data that matters to your business alongside each contact. Fields support multiple types:

| Type     | Example use                       |
| -------- | --------------------------------- |
| Text     | Product interest, referral source |
| Number   | Deal value, number of employees   |
| Date     | Last demo date, contract expiry   |
| Boolean  | Opted in to newsletter            |
| Select   | Preferred language, region        |
| Textarea | Detailed notes                    |

You can define and manage custom field definitions from your account settings. The [AI info extractor](/en/crm/info-extraction) can also create new custom fields automatically when it discovers information in a call transcript that does not match an existing field.

<Note>
  Fields auto-created by the AI extractor default to **text** type. You can change the type afterward in your custom field settings.
</Note>

## API reference

Use the REST API to create and list contacts programmatically. All requests require a bearer token.

### Create a contact

```bash theme={null}
POST /api/crm/contacts
```

```json theme={null}
{
  "teamId": "your-team-id",
  "companyId": "company-uuid",
  "firstName": "Jane",
  "lastName": "Smith",
  "email": "jane@acme.com",
  "phone": "+12025550100",
  "jobTitle": "CEO",
  "leadStatus": "qualified",
  "source": "import",
  "customFields": {
    "product_interest": "Enterprise Plan"
  }
}
```

**Required fields:** `teamId`, `companyId`, `firstName`, `lastName`

### List contacts

```bash theme={null}
GET /api/crm/contacts?teamId=your-team-id&limit=50&offset=0
```

**Query parameters:**

| Parameter    | Type             | Description                             |
| ------------ | ---------------- | --------------------------------------- |
| `teamId`     | string           | Required. Your team identifier.         |
| `search`     | string           | Search by name, email, or phone.        |
| `leadStatus` | string           | Filter by lead status value.            |
| `companyId`  | string           | Filter contacts by company.             |
| `hasPhone`   | `true` / `false` | Filter to contacts with a phone number. |
| `doNotCall`  | `true` / `false` | Filter by do-not-call flag.             |
| `limit`      | integer          | Records per page. Default: 50.          |
| `offset`     | integer          | Pagination offset. Default: 0.          |

**Response:**

```json theme={null}
{
  "success": true,
  "contacts": [...],
  "count": 120,
  "limit": 50,
  "offset": 0
}
```

## Related pages

* [Organize accounts with CRM companies](/en/crm/companies) — Create and manage company records that contacts belong to.
* [AI info extraction from call transcripts](/en/crm/info-extraction) — Automatically populate contact fields from conversation data.
