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

# Properties overview

> Use properties to attach custom data to chats, events, users, and more.

Properties are custom data fields you can attach to chats, threads, events, groups, and licenses. They let you store and retrieve any business-relevant information alongside your Text data — for example, order IDs, customer tiers, or internal tags.

You manage properties through the [Configuration API](/api/configuration/).

## Property types

Each property has one of four types:

| Type               | Description                                                                                                                          |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| `int`              | 32-bit integer.                                                                                                                      |
| `bool`             | Boolean (`true` or `false`).                                                                                                         |
| `string`           | Plain text string.                                                                                                                   |
| `tokenized_string` | String tokenized before indexing, enabling word-level search. Useful for longer text such as messages. Not recommended for keywords. |

## Property locations

Properties can be attached to the following objects:

* `event`
* `thread`
* `chat`
* `group`
* `license`

You can configure access per location independently. For example, a property can be visible to agents in a chat and thread, but not on individual events.

## Property domain

The **property domain** defines the set of values a property accepts. You can configure it in two ways:

* **Explicit values** — define an allowed set (for example, `[1, 2, 3]`).
* **Range** — define a numeric range where all values within it are allowed (for example, `1` to `3`). Only available for numeric types.

## Default values

If a property has no explicitly set value, the **default value** is returned. You set the default when [registering a property](/api/configuration/v3.6/properties/register-property) using the `default_value` parameter.

## Private and public properties

### Private properties

When you register a property, it is **private** by default. Private properties can only be accessed with a token belonging to the owner Client ID. You can register, update, and delete private properties freely.

### Public properties

You can **publish** a private property to make it accessible to other integrations. When publishing, you define the public access level: `read`, `write`, or both.

For example, you register a private chat property with `read` and `write` access for agents and customers:

```json theme={null}
{
  "name": "string_property",
  "owner_client_id": "0805e283233042b37f460ed8fbf22160",
  "type": "string",
  "access": {
    "chat": {
      "agent": ["read"],
      "customer": ["read", "write"]
    }
  }
}
```

When publishing, you can narrow down the public access — for example, allowing only `read` for everyone outside your integration:

```shell theme={null}
curl -X POST \
  https://api.livechatinc.com/v3.7/configuration/action/publish_property \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Basic <your_personal_access_token>' \
  -d '{
    "name": "string_property",
    "owner_client_id": "0805e283233042b37f460ed8fbf22160",
    "access_type": ["read"]
  }'
```

In this case, the owner Client ID retains full `read` and `write` access, while all other tokens can only `read` the property.

<Warning>Published properties cannot be unregistered.</Warning>

## Test properties

Every license includes a set of test properties you can use to experiment with the properties system before registering your own.

| Namespace | Property                    | Type               | Access                              |
| --------- | --------------------------- | ------------------ | ----------------------------------- |
| `test`    | `bool_property`             | `bool`             | Read/write for everyone, everywhere |
| `test`    | `int_property`              | `int`              | Read/write for everyone, everywhere |
| `test`    | `string_property`           | `string`           | Read/write for everyone, everywhere |
| `test`    | `tokenized_string_property` | `tokenized_string` | Read/write for everyone, everywhere |

## Predefined properties

Text also provides a set of predefined public properties used by the Text backend. You can find them in the [default properties reference](/api/events-and-properties/default-properties).
