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

# Attributes

> The fields a contact can hold

Attributes are the columns of your CRM. Every value a contact holds belongs to one, and nothing can write a value for an attribute that is not defined: a CSV column with an unknown name is dropped, and a CRM edit or agent update to one is refused or skipped.

Manage them in **CRM → Attributes**. Click **Add Attribute** to create one, or the edit and delete icons on a row to change one.

## Fields

| Field | Meaning |
| - | - |
| **Key** | The name the value is stored under, e.g. `company_name`. Used in CSV headers, functions and workflows. **Fixed once created.** |
| **Display name** | The label shown in the CRM, e.g. *Company Name*. |
| **Type** | What kind of value it holds (see below). |
| **Description** | Tells the AI what this attribute means, so it extracts the right thing from a call or chat. Write it like an instruction: *"The city the customer lives in."* |
| **Allowed values** | For **Fixed values (enum)** only: the values the attribute may take, each with a label and an optional description. |
| **Default value** | What a CSV upload fills in when a row has no value for this attribute. |
| **Updatable by AI** | When off, the AI does not extract or update it on its own: the chat agent's `update_contact` and post-call analysis leave it alone. Writes you set up explicitly, such as a workflow's Update Contact node, still apply. |
| **Show on dashboard** | Whether it appears as a column in the Leads table. |
| **Required** | A CSV upload without this column is flagged before it is saved. |

## Types

| Type | Example | Notes |
| - | - | - |
| Text (string) | `Jaipur` | Stored as typed. |
| Number | `25000` | Anything that is not a number is rejected. |
| True / False | `true` | Accepts `true/false`, `yes/no`, `1/0`. |
| Date | `2026-10-08` | Also accepts `DD/MM/YYYY`, `MM/DD/YYYY` and `DD-MM-YYYY`. |
| Date & time | `2026-10-08T15:30:00+05:30` | |
| Time | `15:30` | |
| Fixed values (enum) | `hot` | Must be one of the **Allowed values**. |
| List (array) | `["red","blue"]` | Or a comma-separated list in a CSV. |
| Object (JSON) | `{"line1":"…","city":"…"}` | Must be valid JSON. |

A value that does not fit its type is never forced in. A CSV cell is reported back as invalid, and an agent or workflow update is skipped.

## Defaults

The default decides what a CSV row gets when its cell is empty or the column is missing:

* **Drop key (don't set it)**: leave the attribute unset.
* **A type default**: *Empty string*, *Zero*, *Empty list*, *Empty object*, or *Today's date / Current time / Current date & time at import*.
* **Custom value**: a value you choose, e.g. `India` for `country`.

<Tip>
  Good descriptions are what make AI updates accurate. *"City"* gets you guesses; *"The city the customer wants the service in, not where they were born"* gets you the right answer.
</Tip>


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