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

# Users

> The Users page lists everyone who has used your app, and each person's profile shows their device, their attribution, and a session-by-session timeline of what they did.

Every other analytics page in FlowPilot ends in an average. **Users** is where an average opens back up into the people inside it: a list of everyone the SDK has seen in this app, and a profile for each one showing what they did, on what device, and what they spent.

Open it from **Users** in the sidebar. Like every other surface, it is scoped to the app selected in the app switcher.

## The list

Each row is one person in this app.

| Column         | What it is                                                                                                                                                           |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Person         | Their user ID, with a mark derived from the ID, their country, and their device model. An **Identified** badge appears when your app has named them with `identify`. |
| First seen     | The first time FlowPilot heard from this install.                                                                                                                    |
| App / SDK / OS | The versions they were last running.                                                                                                                                 |
| Spend          | Lifetime purchase revenue attributed to them, in USD.                                                                                                                |
| Last seen      | Their most recent activity.                                                                                                                                          |

The small square mark beside each ID is generated from the ID itself. It exists because fifty UUIDs look identical: the mark gives each row a shape you can scan for, and the same mark heads the profile page it links to.

### Finding someone

* **Search** matches the user ID or the anonymous install ID, anywhere in the string. Paste a full ID from a support ticket, or type the first few characters.
* **Platform** narrows to iOS, Android, or web. It only offers platforms this app has actually seen.
* **Everyone / Identified / Anonymous / Has spent** narrows by who they are. *Identified* means your app called `identify`; *Anonymous* means it has not.
* **Last seen** narrows to the last 24 hours, 7 days, or 30 days.

Sort by clicking **First seen**, **Spend**, or **Last seen**. Clicking the active column again reverses the order.

<Note>
  Development builds are hidden by default, the same way they are on every other analytics page. Turn on **Include debug traffic** in the page header to see people who were testing on a simulator or a Metro build — their events appear in their timeline at the same time.
</Note>

### If the list is empty

If your app has been sending events but has no profiles yet, **Rebuild from events** reconstructs them from your event history. This also happens automatically the first time you open the page. If the app has never connected, the empty state links to the SDK install guide instead.

## The profile

Click any row to open one person.

### The strip

Four numbers across the top: **Sessions**, **Flows seen**, **Events**, and **Lifetime spend**. These are recomputed from your event stream each time you open the page, so they include everything FlowPilot has retained — not only what has happened since profiles started being recorded.

### Activity

The timeline is grouped by **app session**, not by day. Each band is one visit: when it happened, how long it lasted, how many events it contained, and what it earned. Inside the band, each event sits on a rail, and its shape tells you what kind of thing it was:

| Mark    | Meaning                                                                                  |
| ------- | ---------------------------------------------------------------------------------------- |
| Diamond | Entered or left something — a flow started, completed, closed, or an experiment exposure |
| Ring    | A screen was viewed or left                                                              |
| Dot     | Something was tapped                                                                     |
| Square  | Money moved — a paywall shown, a plan selected, a purchase attempted or completed        |

A failed or cancelled purchase is drawn in red.

The filter chips above the timeline narrow it to **Flows**, **Screens**, **Taps**, or **Purchases**. Filtering happens before paging, so **Purchases** shows every purchase in their history rather than the purchases on the first page.

**Load earlier sessions** pages back through the history.

### Identity

First seen, last seen, the install date the device reports, the store environment, and the person's **seed**.

<Note>
  **App installed** is what the device says, and it is often *earlier* than **First seen**. If you added FlowPilot in version 2.0, your existing users were installed long before FlowPilot met them.
</Note>

The seed is a stable number from 0–99 derived from the user ID. It never changes, and it is drawn from the same distribution the experiment bucketer uses — so it is a reliable way to reason about holdouts and staged rollouts for one specific person.

### Attribution

The first FlowPilot surface this person ever saw: the first flow, the first placement, and the first experiment. These are recorded once and never overwritten, so they still describe the beginning of the relationship years later. The flow links to the editor.

### Also known as

The IDs this person has been known by. When your app calls `identify`, their account ID becomes the current one and the anonymous install ID moves here — which is how a signed-up user stays connected to everything they did before signing up, rather than appearing as a second, unrelated person.

### Device

The parts of the device report FlowPilot models directly: platform, OS version, model, app version and build, SDK version, bundle ID, locale, storefront, and time zone.

<Note>
  **Device country** and **Storefront** answer different questions. The country is where the device says it is; the storefront is what the person is priced in. A US storefront on a Japanese-locale device is an ordinary setup — pricing follows one and language follows the other.
</Note>

The model is reported as its hardware identifier (`iPhone16,2`) rather than a marketing name, because marketing names change every year and an SDK already shipped to the App Store cannot be updated to learn the new ones.

### Custom attributes

Whatever your app has set with `setUserAttributes` — a campaign, a cohort, a plan tier, anything you know that FlowPilot cannot see. See [user identity](/ios-sdk/user-identity) for iOS or [user identity](/expo-sdk/user-identity) for Expo.

### Everything the SDK reported

The complete device report as it was sent, searchable. This is where attributes live that do not have a dedicated row above — interface style, low power mode, whether it was a simulator, and anything a newer SDK has started collecting.

If this section says the profile was built from events only, the app is running an SDK version that predates the device report. The profile still works; it is simply thinner.

## What FlowPilot does not collect

The SDKs never request a tracking permission and never read anything that requires one. There is no advertising identifier, no App Tracking Transparency prompt, and no location.

The only device identifier collected is the vendor-scoped one your app already has (`identifierForVendor` on iOS), which resets when the app is uninstalled.

Nothing personal is collected. If FlowPilot knows who someone is, it is because your app called `identify` and told it.
