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

# User Properties

> Manage user-level attributes for segmentation and analytics

**User properties** are key–value attributes attached to a Qonversion user. They power segmentation, personalisation of no-code screens, and analytics. Qonversion-defined keys start with the `_q_` prefix (e.g., `_q_email`, `_q_custom_user_id`).

## Key concepts

* **Custom keys** — Any string identifier you choose. Keys must be 1–80 characters, match `^[-a-zA-Z0-9_.:]+$`, and contain at least one letter. Values are strings up to 120 bytes and must not contain `\n`, `\r`, `"`, or `'`.
* **System keys** — Reserved keys prefixed with `_q_` (e.g., `_q_email`, `_q_app_version`). Only pre-registered system keys are accepted; unknown `_q_*` keys are rejected. Keys starting with `_` but not `_q_` are forbidden.
* **Upsert** — `POST` replaces the value if the key already exists for the user.
* **Batch limits** — Up to 100 properties per request and up to 100 properties per user.
* **Partial success** — Invalid rows in a batch are reported per-key under `property_errors`; valid rows are applied and returned under `saved_properties`. The response is 200 as long as **at least one** row passes validation. If every row fails, the endpoint returns 400 without a per-key breakdown — retry with the offending rows removed to see the reasons.
* **No pagination** — The list response returns every stored property in one page; `has_more` is always `false`. `next_cursor` is omitted from the response.

## Available endpoints

| Method | Endpoint                      | Description                        | Status                                     |
| ------ | ----------------------------- | ---------------------------------- | ------------------------------------------ |
| GET    | `/users/{user_id}/properties` | List properties for a user         | Updated — [v3](/reference/user-properties) |
| POST   | `/users/{user_id}/properties` | Set (upsert) properties for a user | Updated — [v3](/reference/user-properties) |

## Authentication

All v4 endpoints require a **Secret Key**. See [Authentication](/reference/v4/authentication).
