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

# Contacts

> What a contact holds, where it comes from, and how a write changes it.

A contact is one customer of your workspace. It holds four kinds of data:

| Part                 | Example                                   | Where it comes from                                |
| -------------------- | ----------------------------------------- | -------------------------------------------------- |
| Core details         | name, email, phone, `external_id`         | your systems, a teammate, or the messaging channel |
| Workspace attributes | `package`, `exam_year`                    | your systems or a teammate                         |
| Identities           | a WhatsApp number, an Intercom contact id | the messaging channel or the API                   |
| Account owner        | a teammate                                | a manager in Kai, or the API                       |

## Where a contact comes from

There are two sources, and they write the same records.

**A customer writes to you.** Kai makes a contact for the sender the first
time a conversation arrives, and links the conversation to it. The contact
holds the channel handle as an identity, and the name that the channel
reports.

**You push a contact.** The API creates the contact, or updates the contact
that already holds one of the identities in the request. See
[Identity](/concepts/identity).

A customer that writes to you after you push their phone number lands on the
contact that you pushed. The record is one record.

## How a write changes a contact

A write follows one rule:

* a key that you do not send keeps its stored value;
* a key set to `null` clears the value.

This is what makes a partial sync safe. A nightly job that syncs only the
`package` attribute leaves the name, the note and the other attributes as they
are.

Attributes merge in the same way. Kai applies the keys in the request and
leaves the other keys untouched:

```json theme={null}
{ "attributes": { "package": "Tam Paket" } }
```

## The note

`note` is free text for teammates. It shows on the contact profile and beside
the conversation in the inbox.

Kai does not send the note to a customer, and does not give it to the model
that writes replies. Answers come from the Brain, which your team reviews.

## Delete

A delete removes the profile. The conversations of that customer stay in the
inbox, and they lose their link to the profile.

<Warning>
  A delete through the API does not erase message history. To erase raw
  conversations and the map that reverses their redactions, use **Settings →
  Data controls** in Kai.
</Warning>
