The list
Each row is one person in this app.
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.
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.
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:
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.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.
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 callsidentify, 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.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.
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 withsetUserAttributes — a campaign, a cohort, a plan tier, anything you know that FlowPilot cannot see. See user identity for iOS or 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.