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

# User Identification and Profiles in Saytics

> User profiles in Saytics link anonymous sessions to identified accounts. Learn how user identification works and how to set user traits.

Saytics tracks every visitor to your product from the moment they arrive, before you know anything about who they are. Each anonymous visitor gets an auto-generated ID so their activity is recorded. When a user signs in and you call `Saytics.identify()`, Saytics links all of that anonymous activity to their account and upgrades them to an identified user with a persistent profile.

## Anonymous vs. identified users

**Anonymous users** are visitors with no known identity. Saytics assigns each one a randomly generated ID and tracks their events under that ID. Anonymous tracking requires no configuration — it happens automatically.

**Identified users** are visitors you have associated with a real account by calling `Saytics.identify()`. Once identified, the user's profile is updated with the traits you provide, and all future events (as well as any prior anonymous events from the same session) are linked to that profile.

## How identification works

<Steps>
  <Step title="User visits your product">
    Saytics detects the new visitor and assigns an anonymous ID. Events are recorded under this ID.
  </Step>

  <Step title="User logs in">
    Your application calls `Saytics.identify()` with your internal user ID and any traits you want to store.
  </Step>

  <Step title="Events are linked to the profile">
    Saytics merges the anonymous session into the identified user's profile. From this point forward, all events are attributed to that user.
  </Step>
</Steps>

## Code example

Call `identify()` after a successful login with your user's ID and relevant traits:

```js theme={null}
Saytics.identify('user_456', {
  name: 'Jane Doe',
  email: 'jane@example.com',
  plan: 'pro',
  created_at: '2024-01-15'
});
```

The first argument is your system's user ID — the same ID you use in your database. The second argument is a traits object.

## User traits

Traits are persistent properties stored on the user's profile. They are available for filtering and segmentation across all of that user's events.

Saytics recognizes the following **reserved traits** and uses them in specific ways throughout the dashboard:

| Trait        | Description                      |
| ------------ | -------------------------------- |
| `name`       | Full display name                |
| `email`      | Email address                    |
| `created_at` | Account creation date (ISO 8601) |
| `avatar`     | URL to a profile image           |

Any traits beyond these are **custom traits** — you can define as many as your plan allows. Common examples include `plan`, `company`, `role`, and `account_id`.

## User profile page

Every identified user has a profile page in the Saytics dashboard. From a user's profile you can see:

* All events they have performed, in chronological order
* Current trait values
* A timeline of their sessions, including first seen and last seen dates

To find a user's profile, go to **Users** in the sidebar and search by name, email, or user ID.

<Note>
  Call `identify()` once per session after login, not on every page load. Calling it repeatedly is harmless but unnecessary, and it creates extra network requests with no benefit.
</Note>

## Next steps

* [Tracking identify calls](/tracking/identify) — implementation guide for calling `identify()` in your application
