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

# User properties

> Custom, business-level properties about your users — discovered from identify() and used to target surveys by audience.

**User properties** are the custom attributes your app knows about a user —
their plan, lifetime value, feature flags, anything. You send them from your app
through [`MicroSurvey.identify({ properties })`](/sdk/react-native/api-reference#microsurvey-identify-args),
and Insito discovers them into a per-app registry you can target surveys against.

They live at [admin.insito.app](https://admin.insito.app) → your project →
**Settings → \[your app name] → User properties** (`?tab=user-properties`), and
power the **User properties** section of the survey
[Audience](/dashboard/triggers) filter builder.

## How properties are discovered

You don't register properties up front. The first time your app sends one, it
appears here automatically with its type inferred from the value:

```tsx theme={null}
await MicroSurvey.identify({
  userId: "auth_4f93k...",
  properties: {
    plan: "premium",            // string
    transactionsThisMonth: 14,  // number
    hasLinkedCard: true,        // boolean
  },
});
```

Only `string`, `number`, and `boolean` values are supported. The latest value
you send is stored per user, so call `identify()` again whenever something
changes — the dashboard and audience filters always use the most recent value.

<Note>
  User properties are **per app**. A `plan` property on one app is independent
  of a `plan` property on another. They're also distinct from the
  [device metadata](/sdk/react-native/configure#auto-captured-device-metadata)
  the SDK captures automatically (locale, timezone, session count, …), which
  show up as **Device properties** instead.
</Note>

## Managing properties

On the **User properties** settings tab, each property shows its name, inferred
type, when it was last seen, and roughly how many users have reported it. You
can **edit** the display label and description so teammates know what each one
means.

Properties are **discovery-only** — they're created and typed by the SDK, so
there's no add or delete here. A property stops appearing once your app stops
sending it (and you can ignore it in the meantime).

## Targeting with user properties

When you build a survey [Audience](/dashboard/triggers), the property picker is
split into two groups:

* **Device properties** — the fixed catalog the SDK captures automatically
  (`platform`, `locale`, `sessionCount`, `daysSinceInstall`, `environment`, …).
* **User properties** — everything discovered from your `identify()` calls.

Operators adapt to each property's type: text properties offer
equals / contains / in, numbers offer the comparison operators
(`>`, `≥`, `<`, `≤`), and booleans collapse to **is true** / **is false**. You
can always type a property name that hasn't been discovered yet — the field
never blocks you.
