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

# User Analytics

> Group sessions, events, and traits into user profiles so you can inspect each person's history and use identified IDs across devices.

The Users report shows the people behind your traffic. Each user groups all of one person's sessions and events, so you can move from "how many visits" to "who is visiting." When you [identify users](/docs/user-identification-analytics), they appear under your own user IDs, with any traits you've attached.

## What's the difference between identified users and cookieless visitors?

* **Identified users** — people your app has named with [`identify()`](/docs/user-identification-analytics). They appear under your ID, their activity is unified across devices, and their traits (like plan or signup date) are shown.
* **Cookieless visitors** — people who haven't been identified. They're grouped by the cookieless hash tinyanalytics derives on the server, which is a close estimate rather than an exact person. See [how tinyanalytics works](/docs/how-tinyanalytics-works#how-does-tinyanalytics-count-visitors-without-cookies).

## How do I sort and read the user list?

The list shows one row per person, with their identity, country, channel, browser, OS, and device alongside four counts and two timestamps.

Five columns sort the whole list, newest activity first by default:

| Column         | Sorts by                                            |
| -------------- | --------------------------------------------------- |
| **Last seen**  | most recent activity — the default, newest first    |
| **First seen** | when the person was first recorded                  |
| **Sessions**   | total visits                                        |
| **Pageviews**  | total pages viewed                                  |
| **Events**     | total [custom events](/docs/custom-event-tracking) fired |

Click a column heading to sort by it; a new column starts with the largest values first, and clicking the active column reverses it. The dimension columns — user, country, channel, browser, OS, and device — aren't sortable.

<Tip>
  **Last seen** and **First seen** show relative times like "3 hours ago". Hover a row to swap them for the exact timestamp in your site's [reporting timezone](/docs/analytics-site-settings#which-timezone-are-my-reports-based-on).
</Tip>

## How do I see everything one person did?

Click a user to open their profile — their full history of sessions and events, and the traits attached to them. This is where you answer "what has this specific person done?" across all their visits. Their user ID has a copy button, so you can paste it straight into a support ticket or a [filter](/docs/analytics-filters).

A profile has two summary cards alongside the session history:

* **Acquisition** — the channel and referrer that first brought this person in, plus the UTM source, medium, and campaign when the visit carried them. Rows with nothing to show are hidden.
* **Top pages** — the 10 pages this person viewed most.

<Warning>
  **Top pages covers the person's entire history, not your selected date range.** Changing the dashboard's date range doesn't re-scope it.
</Warning>

The profile's activity calendar shades each day by how many sessions it held. Its scale caps at your 95th-busiest day, so a single outlier can't flatten every other day into the same shade, and days are drawn in your site's reporting timezone so the grid reads the same for everyone on the team.

## How do I identify, edit, or delete a user?

Three actions live in the header of a user's profile, so you can manage a person right from where you're looking at them:

| Action            | Available for                   | Who can use it              |
| ----------------- | ------------------------------- | --------------------------- |
| **Identify User** | anonymous (cookieless) visitors | any member with site access |
| **Edit Traits**   | identified users                | any member with site access |
| **Delete User**   | any user                        | owner or admin only         |

* **Identify User** attaches one of your own user IDs — and, optionally, traits — to an anonymous visitor, then links that device's past activity to the ID. It's the manual counterpart to calling [`identify()`](/docs/user-identification-analytics) from your app: useful when you learn who a device belongs to after the fact.
* **Edit Traits** changes the traits on an identified user. Edit them as form fields or as raw JSON. Saving **replaces** the whole trait set with what you submit, so include every trait you want to keep.
* **Delete User** permanently erases that person from your analytics — see below.

## How do I permanently delete a user's data (GDPR erasure)?

Open the user's profile and use **Delete User** in the header. Deleting a user is the tool for a **GDPR "right to erasure" (right to be forgotten) request**: it permanently removes that person's events across every device tinyanalytics has linked to them, and then removes their stored profile. Only an **owner or admin** can do it.

<Danger>
  **Deleting a user can't be undone.** It's the one deliberate exception to tinyanalytics' rule that [data retention never deletes your history](/docs/resources/analytics-data-handling) — this deletion is initiated by you, not a schedule. There is no recycle bin; the events are gone.
</Danger>

<Note>
  For a brief period (up to about 24 hours), a returning visit from the same rotating-egress network *could* re-link to a just-deleted anonymous fingerprint before that link expires on its own. It clears automatically. For a firm erasure boundary, delete after the person's last visit rather than mid-session.
</Note>

## Common workflows

* **Follow a signed-in customer.** Identify users, then read one customer's full journey across sessions and devices.
* **Segment by trait.** Attach traits with `identify()` or `setTraits()`, then filter reports by them.
* **Investigate an account.** Open a profile to see everything one person did before and after a key action.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="How accurate is the tinyanalytics user count without cookies?">
    Cookieless visitors are grouped by a hash tinyanalytics derives on the server, which is a close estimate of a person rather than an exact match. To count people exactly, [identify users](/docs/user-identification-analytics) with your own IDs — identified users are unified across devices. See [how tinyanalytics works](/docs/how-tinyanalytics-works#how-does-tinyanalytics-count-visitors-without-cookies).
  </Accordion>

  <Accordion title="How do I see users under my own user IDs?">
    Call [`identify()`](/docs/user-identification-analytics) from your app. People your app has named appear in the tinyanalytics Users report under your ID instead of a cookieless hash, their activity is unified across devices, and any traits you attached are shown on their profile.
  </Accordion>

  <Accordion title="Why doesn't Top pages match my dashboard date range?">
    The **Top pages** card on a user profile covers that person's entire history rather than your selected date range, showing the 10 pages they viewed most. Changing the dashboard date range doesn't re-scope it. The session history on the same profile does follow your date range.
  </Accordion>

  <Accordion title="Can I sort the tinyanalytics user list?">
    Yes. Click any of the **Last seen**, **First seen**, **Sessions**, **Pageviews**, or **Events** headings to sort by that column. The list is sorted by Last seen, newest first, by default. A newly clicked column starts with its largest values first, and clicking the active column reverses the order. The user, country, channel, browser, OS, and device columns aren't sortable.
  </Accordion>

  <Accordion title="What are user traits and where do I see them?">
    Traits are your own attributes on a person, such as plan or signup date. Attach them with `identify()` or `setTraits()`, or edit them directly with **Edit Traits** on the user's profile. They appear on the user's profile in the tinyanalytics Users report, and you can filter reports by them to segment your audience.
  </Accordion>

  <Accordion title="How do I fulfill a GDPR erasure request in tinyanalytics?">
    Open the person's profile in the Users report and use **Delete User** in the header. It permanently erases their events across every linked device and removes their stored profile. Only an owner or admin can do it, and it can't be undone — it's the one deliberate exception to tinyanalytics' rule that retention never deletes your history.
  </Accordion>

  <Accordion title="Can I identify a visitor or edit their traits from the dashboard?">
    Yes. On an anonymous visitor's profile, **Identify User** attaches one of your own user IDs (and optional traits) and links their past activity — the manual counterpart to calling [`identify()`](/docs/user-identification-analytics). On an identified user's profile, **Edit Traits** lets you change their traits as fields or JSON; saving replaces the whole trait set. Both actions are available to any member with site access.
  </Accordion>
</AccordionGroup>

## Related

<Columns cols={2}>
  <Card title="Identify users" icon="id-badge" href="/docs/user-identification-analytics">
    Attach your own user IDs and traits.
  </Card>

  <Card title="Sessions" icon="list-timeline" href="/docs/session-analytics">
    Inspect the individual visits behind a user.
  </Card>

  <Card title="Retention" icon="repeat" href="/docs/user-retention-analytics">
    See how many users come back over time.
  </Card>

  <Card title="Filter your data" icon="filter" href="/docs/analytics-filters">
    Narrow reports to a segment of users.
  </Card>
</Columns>


## Related topics

- [User Acquisition Analytics](/docs/user-acquisition-analytics.md)
- [User Retention Analytics](/docs/user-retention-analytics.md)
- [User Journey Analytics](/docs/user-journey-analytics.md)
