Whoever or whatever your project tracks, one profile each. Identity, properties, and the full activity stream behind every number, searchable and filterable into audiences.
What a profile is
Everything Countly records arrives from a device, and every device resolves to a profile. A profile is one tracked entity as the project knows it: a person, a vehicle, a device, whatever your project follows, in three layers on one page. Identity and properties describe what it is now. The Activity snapshot dates and totals its whole history. The timeline and the event stream hold everything it ever did.
A profile starts anonymous, known only by a device id. When your app passes identity through the SDK's user details call (a name, an email, an id from your own backend) it becomes identified. The list splits the two with live counts, and when the same entity is identified on a second device, the profiles merge into one.
One distinction explains most surprises on this page. A profile carries current values, the properties as they are today. The events behind it carry values as they were at event time. The Filter above the list reads current values; the Activity clause and every event list read event-time values. A profile that upgraded yesterday matches an app version filter for 6.2 today, while last week's events still carry 6.1.
Properties, history, and expiry
Predefined properties cover identity (name, email, username, phone, organization, gender, birth year), device and tech (platform, device, browser, resolution, carrier, app version, SDK), location (country, region, city), and acquisition (source, source channel, UTM tags). Purchase and campaign attribution cards appear when the project records that data.
Custom properties are yours. Whatever the SDK sets (plan, role, lifetime value, feature flags) shows up in the rail's Custom properties card and becomes filterable in the list, in Drill, and in cohort definitions.
Two behaviors worth knowing.
- History. When a tracked property changes, previous values are kept and shown under "previously" in the rail, so a device upgrade or a move never erases the past.
- Expiration. A custom property can carry an expiry configured in Data Manager. The timer icon next to the value says when it lapses, at the next session or after a number of days.
Use Cases
Find one profile and read its story
A support ticket, a bug report, or a refund request usually starts with a name or an email. This page turns it into the profile's full story.
- Type the name, email, or any id into the list's search. Device ids match too, so the id from a crash report or a support tool works directly.
- Open the profile. The Activity snapshot in the rail dates their history, and the timeline shows how active they have been in the picked range.
- Read the stream. Expand an event to see the values it carried, and click a session to scope the stream to exactly what happened in that visit.
- Check the tabs. Feedback shows what they told you, Crashes what hit them, Cohorts and Experiments where the product put them.
Build an audience
The list doubles as an audience builder. Two clauses, AND-composed, on two clocks.
- Add Profile criteria in the scope card. Properties, cohort membership, and profile group membership combine, and the extended editor nests AND/OR groups.
- Add Activity criteria for behavior, on the same row. Pick an event and a time window; conditions on it read values as they were when the event happened.
- Read the result under the type filter. The All, Identified, and Anonymous counts follow every clause.
- Act on it. Select rows to add them to a profile group or delete them, or export the whole match as a background task with the columns you pick.
The clauses live in the URL, so a filtered list is shareable, and coming back restores it. A filter too large for a link stays applied but leaves the URL, and the page says it cannot be shared.
Arrive from a number
Aggregates elsewhere in Countly link into this list, and the scope card shows what carried over.
- In Drill, "See profiles" on a result row opens a profile preview, and its Go to Profiles opens the list scoped to the query behind the chart. Event metrics arrive as editable Activity criteria; anything the editor cannot represent arrives as a read-only chip with an X.
- A funnel step's count opens the same preview, and Go to Profiles opens the list as a Funnel audience, the exact profiles behind that number, resolved from the funnel definition and its date range.
- From there the full page applies. Narrow further with Profile criteria, open individual profiles, add everyone to a group, or export.
Clearing the chips widens back to the whole base. The number on the source page and the count here come from the same query, so they agree.
Curate profile groups
Cohorts are rule-based and recompute on their own. Profile groups are the hand-curated complement, a list you name and fill yourself.
- On the Groups tab, create a group with a name, a description, and a visibility.
- Fill it from the list. Filter, Select the rows, and use Add to group. Or open the group and Add profiles by pasting ids or uploading an id file.
- Use it anywhere membership filters exist. The list's Filter, Drill breakdowns, and cohort pickers offer profile groups alongside cohorts.
- Remove members or delete the group freely. Neither touches the profiles themselves.
FAQs
Why is a profile anonymous?
No identification has reached the server for it. Pass user details with your own user id through the SDK and the profile becomes identified; everything recorded before identification stays with it.
Last seen moved but Last session did not. Why?
Last seen advances on any request, Last session only when a session begins. Events sent outside a session move one and not the other.
Why does Last seen trail a profile I can see acting right now?
The profile store this page reads refreshes about once a minute, so the freshest requests take a moment to land. The profile's own event stream is live.
Cohorts and profile groups, what is the difference?
Cohorts are rule-based and recompute as behavior changes. Profile groups are curated by hand and change only when someone edits them. The Cohorts tab shows the first kind, the rail's Profile groups card the second.
What exactly does deleting a profile remove?
Everything. The profile, its properties, and all recorded data, permanently, as a background job. It is the right tool for a data removal request.
Why do counts here differ from Sessions?
This page counts profiles over their lifetime; Sessions counts activity in a period. A profile inactive for a year is one row here and zero there.