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

# Contacts

> Contacts represent people your AI agents interact with. Store phone numbers, emails, tags, and custom metadata injected into conversations.

# Contacts

Contacts represent the people your agents will call. Each contact can have associated metadata that gets injected into conversations.

## What is a Contact?

A contact stores:

* **Basic Info** - Name, phone number, email
* **Metadata** - Custom fields relevant to your use case
* **History** - Previous conversations with this contact

## Contact Properties

| Property      | Description                             |
| ------------- | --------------------------------------- |
| `id`          | Unique identifier (UUID)                |
| `workspaceId` | The workspace this contact belongs to   |
| `firstName`   | Contact's first name                    |
| `lastName`    | Contact's last name                     |
| `phone`       | Phone number in E.164 format            |
| `email`       | Email address                           |
| `metadata`    | Custom JSON object with additional data |
| `createdAt`   | When the contact was created            |
| `updatedAt`   | When the contact was last modified      |

## Phone Number Format

All phone numbers must be in [E.164 format](https://en.wikipedia.org/wiki/E.164):

```
+[country code][subscriber number]
```

<CodeGroup>
  ```text US theme={null}
  +14155551234
  ```

  ```text UK theme={null}
  +447911123456
  ```

  ```text Mexico theme={null}
  +525512345678
  ```
</CodeGroup>

## Using Metadata

Metadata lets you store custom data that can be used in agent conversations:

```json theme={null}
{
  "firstName": "John",
  "lastName": "Doe",
  "phone": "+14155551234",
  "metadata": {
    "accountNumber": "AC-12345",
    "preferredLanguage": "Spanish",
    "lastPurchaseDate": "2024-01-15",
    "vipStatus": true
  }
}
```

These values can be referenced in your agent's system prompt using `{{contact.customFields.<fieldName>}}` syntax.

## Custom fields

Custom fields are workspace-level fields that show up on every contact. Define them once in **Settings > Custom Fields** and they appear on the Contacts page and in workflow conditions.

### Field types

Each custom field has a type that controls how it's stored, validated, and rendered in the dashboard.

| Type    | Stored as                           | Contacts page input                         | Use for                              |
| ------- | ----------------------------------- | ------------------------------------------- | ------------------------------------ |
| Text    | string                              | Single-line text input                      | Account numbers, notes, identifiers  |
| Number  | number                              | Numeric input (digits, decimals, negatives) | Budget, quantity, score              |
| Date    | ISO 8601 date string (`YYYY-MM-DD`) | Date picker                                 | Renewal date, last contact, birthday |
| Boolean | true/false                          | Toggle / checkbox                           | VIP, opted-in, qualified             |

The type is set when the field is created and can't be changed afterwards. Delete and re-create the field if you need a different type.

### Where field types apply

* **Contacts page** — the cell renders the right input for the type. Number cells reject non-numeric input, date cells open a calendar picker, boolean cells show a toggle.
* **Filters** — date fields support `Before`, `After`, `Equals`, and `In Between` operators (see [Condition action → Operators](/workflows/actions/condition#operators)). Number fields support numeric comparisons. Booleans support `Is true` / `Is false`.
* **Workflow conditions** — the same operators are available when a custom field is referenced inside a workflow.
* **API and integrations** — custom field values are returned in their typed form on agent webhooks and the contact APIs. The GoHighLevel sync auto-creates fields as text — that behavior is unchanged.

### In agent prompts

Reference any custom field in a prompt or opening line:

```
Hi {{contact.firstName}}, I see your renewal is on {{contact.customFields.renewalDate}}.
```

## Saved views

Save the filters and sort you use most often as a named view. Each view is a preset of filters, sort order, and visible columns on the Contacts page — pick one from the view switcher and the page reconfigures instantly.

**Built-in views:**

* **All Contacts** — every contact in the workspace, no filters, default sort. Always available, can't be deleted.

**Creating a view:**

1. On the Contacts page, set the filters, sort, and columns you want.
2. Click the view switcher and choose **Save as view**.
3. Give the view a name and save.

Saved views are workspace-scoped — anyone in the workspace can use them. Update or delete a view from the same dropdown. Views you create persist across sessions and devices.

**Common patterns:**

* *New leads this week* — filter by tag `lead` + created within the last 7 days
* *Renewals due* — filter by custom date field `renewalDate` between today and end of month
* *Opted-out contacts* — filter by SMS opt-out status to audit compliance

## API Operations

* [List Contacts](/api-reference/contacts/list)
* [Create Contact](/api-reference/contacts/create)
* [Get Contact](/api-reference/contacts/get)
* [Update Contact](/api-reference/contacts/update)
* [Delete Contact](/api-reference/contacts/delete)
