# Attributes

**Dashboard path:** [Users & Segments > Users](https://i.usejimo.com/users) > \[click a user] > Data tab > Attributes

***

## What is an attribute?

<figure><img src="/files/mmT4EGseKhHYlFx61IZ7" alt=""><figcaption></figcaption></figure>

An attribute is a named data point on a user, like a key-value pair:

| Name           | Value             |
| -------------- | ----------------- |
| `email`        | `sam@example.com` |
| `plan`         | `Pro`             |
| `language`     | `fr`              |
| `hasInstalled` | `true`            |
| `signup_date`  | `2024-06-15`      |

Attributes are used in three places across Jimo:

* **Segmentation and filtering**: conditions in the [filter and segment builder](https://help.usejimo.com/docs/analyze/users-and-segments/segments)
* **Experience targeting**: [Who](https://help.usejimo.com/docs/publish/target-right-people-who) conditions to show or hide an experience
* **Content personalization**: dynamic variables in the [content builder](https://help.usejimo.com/docs/build/builders) (e.g. "Hello {firstName}")

The more attributes you push, the finer your segmentation and personalization can be.

***

## Attribute sources

Every attribute has a **Source** that tells you where the data comes from. The Source column in the user profile makes this explicit.

{% tabs %}
{% tab title="Native" %}
Attributes collected and managed automatically by Jimo, either by the snippet or through default SDK methods. You do not need to configure them, but you can enrich some of them via `identify`.

| Attribute         | Description                                                                            | How to set            |
| ----------------- | -------------------------------------------------------------------------------------- | --------------------- |
| **Jimer ID**      | Unique ID assigned by Jimo to every detected user (replaced by User ID if there's one) | Automatic             |
| **User ID**       | Your own internal user identifier                                                      | Pushed via `identify` |
| **Name**          | User display name                                                                      | `user:name`           |
| **Email**         | User email address                                                                     | `user:email`          |
| **Language**      | User language                                                                          | `user:language`       |
| **First seen**    | First session date                                                                     | Automatic             |
| **Last activity** | Most recent session date                                                               | Automatic             |
| **Sessions**      | Count of sessions recorded                                                             | Automatic             |
| **Created**       | Account creation in Jimo                                                               | Automatic             |
| **Tags**          | Tags assigned manually                                                                 | Via dashboard         |
| {% endtab %}      |                                                                                        |                       |

{% tab title="Custom Attributes" %}
Attributes you define yourself and push from your own database via the SDK. They are the foundation of meaningful segmentation.

**Typical examples:**

* `plan` (Free / Starter / Growth / Enterprise)
* `role` (admin / member / viewer)
* `language` (if different from native)
* `signup_date`
* `hasInstalled` (boolean for feature adoption)
* `team_size`
* `country`

**Supported types:** strings, numbers, arrays, booleans (700 characters max per attribute)

**How to push them:**

```javascript
window.jimo.push(["set", "user:attributes", [{
  plan: "Pro",
  role: "admin",
  hasInstalled: true,
  signup_date: "2024-06-15"
}]]);
```

{% hint style="info" %}
Custom attributes must be pushed inside the callback of the `identify` method to be correctly linked to the user. See the [SDK segmentation setup guide](https://help.usejimo.com/docs/for-developers/for-developers/sdk-guides/setup-the-segmentation) for full implementation details.
{% endhint %}
{% endtab %}

{% tab title="Integration-synced" %}
Attributes synced automatically from a third-party tool connected to Jimo. The Source column shows the integration logo (HubSpot, Salesforce, Segment…).

**Common integrations that push attributes:**

| Integration                                                             | What gets synced                                        |
| ----------------------------------------------------------------------- | ------------------------------------------------------- |
| [**HubSpot**](https://help.usejimo.com/docs/integrations/hubspot)       | Contact, Company, and Deal fields (via object mappings) |
| [**Salesforce**](https://help.usejimo.com/docs/integrations/salesforce) | Salesforce record fields (via object mappings)          |
| [**Segment.io**](https://help.usejimo.com/docs/integrations/segment.io) | Identify traits                                         |
| [**Amplitude**](https://help.usejimo.com/docs/integrations/amplitude)   | User properties from Amplitude                          |
| [**Mixpanel**](https://help.usejimo.com/docs/integrations/mixpanel)     | User properties from Mixpanel                           |
| [**PostHog**](https://help.usejimo.com/docs/integrations/posthog)       | Person properties from PostHog                          |

{% hint style="success" %}
Integrations are the easiest way to enrich Jimo profiles without building custom SDK calls. If your source of truth is a CRM or CDP, start there before writing SDK pushes.
{% endhint %}
{% endtab %}
{% endtabs %}

***

## The Source column in the profile

When inspecting a user's profile, the **Source** column tells you where each attribute was set:

* **Native** label: core Jimo field, automatic or set via default SDK methods
* **Jimo logo**: custom attribute pushed via `user:attributes`
* **Integration logo** (HubSpot, Salesforce…): synced from that integration

This is useful when troubleshooting: if an attribute value looks wrong, the Source tells you where to go fix it.

***

## Identify is the prerequisite

Before pushing any attribute, you need to **identify** the user. Without identification, Jimo cannot attach attributes to a persistent profile.

{% stepper %}
{% step %}

#### Load the snippet

Install the Jimo snippet on your product. See [Installing Jimo](https://help.usejimo.com/docs/getting-started/installing-jimo).
{% endstep %}

{% step %}

#### Call `identify` on login

Assign a stable user ID as soon as the user authenticates.

```javascript
window.jimo.push(["do", "identify", ["user-123456"]]);
```

{% endstep %}

{% step %}

#### Push default attributes in the callback

Set name, email, and language alongside the identification.

```javascript
window.jimo.push(["do", "identify", ["user-123456", () => {
  window.jimo.push(["set", "user:name", ["Sam Taylor"]]);
  window.jimo.push(["set", "user:email", ["sam@example.com"]]);
}]]);
```

{% endstep %}

{% step %}

#### Push your custom attributes

Add the fields that matter for your segmentation (plan, role, signup date, feature flags, etc.).

```javascript
window.jimo.push(["set", "user:attributes", [{
  plan: "Pro",
  role: "admin",
  signup_date: "2024-06-15"
}]]);
```

{% endstep %}
{% endstepper %}

For full implementation, error handling, and advanced options (`refetchBoosted`, `removeUnspecified`), see the [SDK methods reference](https://help.usejimo.com/docs/for-developers/for-developers/sdk-methods) and the [SDK segmentation setup guide](https://help.usejimo.com/docs/for-developers/for-developers/sdk-guides/setup-the-segmentation).

***

## Recommended attributes to push

If you are just getting started, here is a minimal set that unlocks most use cases:

| Attribute          | Type     | Why it matters                                  |
| ------------------ | -------- | ----------------------------------------------- |
| `user:id`          | String   | Prerequisite for persistent profiles            |
| `user:email`       | String   | Readable identification + integrations matching |
| `user:name`        | String   | Personalization in experiences                  |
| `plan`             | String   | Segment by subscription tier                    |
| `role`             | String   | Segment by permission level                     |
| `signup_date`      | ISO date | Cohort analysis, tenure-based targeting         |
| `language`         | String   | Multi-language targeting                        |
| `last_active_days` | Number   | Re-engagement segments                          |
| `feature_usage`    | Array    | Adoption tracking and progressive onboarding    |

{% hint style="info" %}
See the full [recommended custom attributes guide](https://help.usejimo.com/docs/for-developers/for-developers/sdk-guides/setup-the-segmentation) for more examples and implementation patterns.
{% endhint %}

***

## Related pages

* [Users](https://help.usejimo.com/docs/analyze/users-and-segments/users): Back to the user list and profile overview
* [Segments](https://help.usejimo.com/docs/analyze/users-and-segments/segments): Use attributes as conditions in the segment builder
* [Installing Jimo](https://help.usejimo.com/docs/getting-started/installing-jimo): Snippet installation
* [Identify users](https://help.usejimo.com/docs/for-developers/for-developers/sdk-guides/identify-users): Full guide to the `identify` SDK method
* [Setup the segmentation](https://help.usejimo.com/docs/for-developers/for-developers/sdk-guides/setup-the-segmentation): Detailed setup for custom attributes
* [SDK methods reference](https://help.usejimo.com/docs/for-developers/for-developers/sdk-methods): Full list of SDK methods
* [Integration Setup](https://help.usejimo.com/docs/integrations/integration-setup): How to connect third-party sources for auto-synced attributes


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.usejimo.com/docs/analyze/users-and-segments/users/attributes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
