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

# Attributes and custom fields

> Standard and custom fields, and where they surface.

Every contact has two different places extra information can live, and they work nothing alike.

## Standard fields

A fixed set of columns exist on every contact whether you touch them or not: `name`, `email`, `phone_number`, `identifier`, `country_code`, `blocked`, plus the automatic `created_at` and `last_activity_at` timestamps. These names are reserved — you cannot define a custom attribute that reuses one of them; Tied rejects it at save time.

## Custom attributes

Beyond the standard set, you define your own fields: a key, a display name, and a type. The type is a real, enforced choice — one of eight:

| Type | For |
| - | - |
| `text` | Free-form short text |
| `number` | Plain numeric values |
| `currency` | Amounts — an order value, a lifetime spend |
| `percent` | Rates and proportions |
| `link` | A URL, rendered as clickable |
| `date` | A calendar date |
| `list` | One value from a fixed set of options you define |
| `checkbox` | True or false |

<Tip>
  You can also attach a validation pattern and a hint — a regular expression plus the text shown when a value doesn't match it. Useful for anything with a real format: an account number, a specific ID pattern from another system.
</Tip>

Custom attributes are scoped to either contacts or conversations — this page is about the contact-scoped ones, but the same mechanism (key, display name, type, validation) defines conversation-level custom fields too.

## Two buckets, not one

Contacts also carry a second, separate JSON field that isn't user-defined at all: things Tied itself tracks in the background. `city` and `referer` live here, not as columns — Tied fills them in from a contact's location and the page they arrived from, alongside other reserved keys like which avatar it assigned. That bucket isn't what this page is about, and you don't manage it directly — custom attributes are the ones you define, name, and see in a form.

## Where they surface

A custom attribute definition isn't just storage — defining one makes it available in more than one place:

* **Filters and segments** — see [Segments and saved filters](/contacts/segments).
* **The web widget's pre-chat form** — a contact-scoped custom field can double as a question you ask before a chat even starts. Change or delete the definition, and the pre-chat form updates to match automatically.

## Next

<CardGroup cols={2}>
  <Card title="Contacts overview" icon="users" href="/contacts">
    How a contact is identified in the first place.
  </Card>

  <Card title="Segments and saved filters" icon="funnel" href="/contacts/segments">
    Filtering on the attributes you just defined.
  </Card>

  <Card title="Importing contacts" icon="upload" href="/contacts/import">
    Getting values into a custom attribute in bulk.
  </Card>
</CardGroup>


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