Analyse behaviour › Basics
Users and identity
Sequential files every event under one user id. It is an anonymous id until your app identifies the visitor, then exactly the value your app passes.
On this page
What it is for
The user id lets Sequential answer questions about people, not only events:
- How many people, not clicks, used the new export this week?
- Of the people who signed up in March, how many came back a week later?
- What did this customer do before they emailed support?
Each answer is only as good as the user ids your app sends.
How it works
Every stored event carries exactly one user id.
- Before your app identifies the visitor, the user id is an anonymous id. The Sequential SDK creates one the first time a browser loads your site. It keeps the id in that browser's storage.
- After your app identifies the visitor, the user id is the value your app passes. The Sequential SDK keeps the value, so later visits from that browser carry it too. The SDK keeps the value until your app calls
sequential.reset()on sign-out.
Other SDKs have their own anonymous ids. Sequential does not store an id as anonymous. The lists decide it when they show the id: a user id with an identify event, or with a linked anonymous id, is identified. On Users, Sessions → Latest and Events, the avatar of an identified user reads Identified user when you hover it. It has no check mark. Any other id has a dashed avatar and reads "Anonymous visitor" and its first 6 characters. On Users, only identify events in your date range and filters count.
Use one value for each person
Sequential stores the value that your app passes to identify exactly as it is. Any stable identifier works. For example: your own account id, an email or an account key.
Sequential does not rank identifier types, and it does not guess that two values are one person. If your app identifies one person with two values, Sequential sees two users. For example: an email on one screen and an account key on another.
Your app must keep the value the same. Pick one identifier and pass it for that person every time. Identify your users shows how for each SDK.
What uses the user id
These pages use the stored user id and the identify link. With the Sequential SDK, PostHog or Mixpanel, they count a visitor who identifies as one person:
- The Users list and each user's page.
- The user id on each row of Sessions and Watch.
- Funnels, Flows and Retention.
- The Unique users line and the Active users tile on Events.
- A User ID condition on Events, Sessions and Users, and in funnel and flow steps. See Filters, date ranges and saved views.
See The link to the anonymous id below.
These use only the stored user id:
- The tiles on Dashboard. They count user ids, so a visitor who identifies counts once under each id. On the Traffic tile, the figure is User IDs.
Events, Users, Accounts and Sessions never count a blank id as a user, an account or a session. Funnels, Flows and Retention never count an event without a user id as a user.
The replay is the exception. It uses the recording's own user id. See Replays and the user id below.
What does not use the user id
Judgments are about sessions, not people. The judge never sees the user id or anything your app passes to identify. See Judgments.
Limits
- Sequential stores the events sent before identify under the anonymous id. The pages that use the link count them under the identified value. The Events list and its group table still show the id that each event was stored under.
- The Dashboard tiles do not use the identify link.
- Only the Sequential SDK, PostHog or Mixpanel sends the link. With Amplitude, Pendo or Smartlook, the anonymous id and the identified id stay two users on every page.
- Until your app identifies the visitor, a second device, a private window or cleared storage makes the same person a new user. If the browser blocks storage, every page load starts a new anonymous id.
- With Smartlook, each identified person appears as two users.
- On a site with only the Sequential SDK or Smartlook, the replay shows anonymous. Its ‹ › buttons stay disabled.
- On a site with only the Sequential SDK, Session insights reads every recording as anonymous, even after your app identifies the visitor.
- From 10 October 2026, the Users list shows 100 rows at a time, with no limit on the pages. The most recent activity comes first.
- The Users list and the Sessions card of a user page cover the date range in the top bar. The top of a user page covers all the data that Sequential keeps. "No one with this id in this project." means that no event that Sequential keeps has the id.
- The Users list and user pages do not show user properties. The one exception: a name or email from an identify call shows in Who.
- Only Pendo and
sequential.account()fill accounts. - From
posthog.identify()on the web, only a name or email shows anywhere: in Who on the lists. Other properties passed there do not appear. - Sequential does not store
mixpanel.people.set. Mixpanel's browser SDK gives no user properties. - From an Amplitude
Identify, Sequential stores onlysetandsetOnce. It ignoresadd,appendandunset. - With Amplitude, Pendo or Smartlook, if your app identifies a visitor mid-session, Total sessions on Users counts that session twice, once under each id.
- By default, Retention puts each user in the cohort of the day of their first start event ever, when that day is in the selected date range. A user who did the start event before the range is in no cohort. With Count set to everyone active in the range, it uses the first start event in the range.
Where each source's user id comes from
| Source | Stored user id | Falls back to |
|---|---|---|
| Sequential SDK | Its anonymous id, then the value you pass to sequential.identify() |
— |
| PostHog (web and mobile) | distinct_id, which PostHog's identify sets |
— |
| Mixpanel | distinct_id, which mixpanel.identify() sets |
$device_id |
| Amplitude | The id from amplitude.setUserId() |
device_id |
| Pendo | The visitor.id you pass to pendo.initialize |
— |
| Smartlook | The id in smartlook('identify', …) |
The Smartlook visitor id |
With Smartlook, only the identify call carries your id. Every other event stays under the Smartlook visitor id. Because of this, each identified person appears as two users.
How each page uses the user id
- Users lists one row per user id with its Activity, Top pages, Problems, First seen and Last seen. With the Sequential SDK, PostHog or Mixpanel, an anonymous id that is linked to one identified value is counted in that value's row. Click the user in Who to open that user's page, with their sessions and All events. See Users and accounts.
- An event without a user id is not a user. Users does not list it, and the Users tiles do not count it. On Users, a line under the tiles counts these events, for example "12 events in 3 sessions in this period aren't linked to a user."
- Funnels match each person's events to the steps in order. With the Sequential SDK, PostHog or Mixpanel, the steps before and after identify join. Each drop-off list shows user ids. For a person who identified, it shows the identified value. Each id links to the Users page.
- By default, Retention puts each user in the cohort of the day of their first start event ever, when that day is in the selected date range. This is not their first day ever. Then it checks whether they did a return event exactly N days later.
- Flows build paths per person. With the Sequential SDK, PostHog or Mixpanel, one path covers the events from before and after identify.
- Events counts distinct people for the Unique users line and the Active users tile. With the Sequential SDK, PostHog or Mixpanel, a visitor who identifies counts once. A blank id is not a user. Grouped by User, each row of the group table is a stored id, and the events without a user id are one row, "(no user)".
Replays and the user id
In a replay, the ‹ › buttons (Previous session of this user, Next session of this user) step through that user's recordings. They use the recording's own user id.
On the web, the recording takes that id from the page while it records. It takes it from PostHog, Mixpanel, Pendo or the Sequential SDK, or from Amplitude after setUserId().
In these cases the player shows anonymous and the buttons stay disabled:
- Only Smartlook is on the page.
- The visitor is an anonymous Amplitude visitor.
- The Sequential SDK is on the page, and the browser blocks storage.
What the judge learns about the user
Watch does not use the user id to pick sessions. The judge reads each session's events and a few facts about it. Sequential judges anonymous sessions like any other.
- For Watch and Ask, the judge learns only whether the visitor identified during the session.
- Session insights tells the judge only whether the recording carries a user id. On the web, that id comes from PostHog, Mixpanel, Pendo, Amplitude or the Sequential SDK on the page. It can be an anonymous id.
On Watch rows, the user id is only a label that links to the user's page. On Ask results, it is plain text.
Example: a visitor who identifies mid-session
Ana reads your pricing page on Monday and leaves. On Tuesday she returns in the same browser and starts a trial. Your app identifies her as ana@example.com. With the Sequential SDK:
- Sequential stores Monday's session, and Tuesday's up to sign-up, under her anonymous id. It stores the rest of Tuesday, and later visits from that browser, under
ana@example.com. - The Users page shows one user,
ana@example.com, with both sessions. Total sessions counts Tuesday once. - The Sessions list and Watch show
ana@example.comon Monday's session and on Tuesday's. - Her user page lists both sessions, and all of Tuesday.
- Funnels, flows and retention count her once. Her steps from before sign-up join her steps after it.
- A User ID filter with
ana@example.comfinds Monday's events too. - The Dashboard tiles count her anonymous id and
ana@example.comas two users: 2 under User IDs.
The link to the anonymous id
When identify runs, the Sequential SDK also sends the anonymous id that it replaces. Sequential records that link. Sequential does not change the stored events. It applies the link each time a page that uses it loads. See What uses the user id above:
- The session where identify ran shows under the value from that identify.
- The other sessions of that anonymous id, earlier or later, show under the same value. If the anonymous id is linked to two values, they show under the first value that Sequential received for that anonymous id.
- All other events keep the stored user id.
More about the link:
- It also applies to events from before identify, on any date. So the result for a past period can change after a later identify.
- A new link can take up to 5 minutes to show.
- Only the Sequential SDK, PostHog or Mixpanel sends the link. For Mixpanel, Sequential keeps the link from 12 October 2026. A Mixpanel identify stored before that date has no link.
- The link is one step. If your app identifies Ana by her email and then by an account key in the same session, the anonymous part shows under the email. The events stored under the email show under the account key.
- If one anonymous id is linked to two values, each session where identify ran shows under its own value. The other sessions of that id show under the first value that Sequential received for that anonymous id. "First" means the first link to arrive at Sequential, not the earliest identify call. If two links arrive together, do not rely on which one is first. This applies on Users, each user's page, Accounts, Sessions, Events, the User ID filter, funnels, flows and retention.
- Two links from one anonymous id are not frequent. Identify links the id that the page has at that moment. So if two people sign in one after the other on one page without
sequential.reset(), the second identify links the first person's value, not the anonymous id. See Callsequential.reset()on sign-out above. - After
sequential.reset(), the browser has a new anonymous id. Nothing links it to the previous user.
User properties
User properties describe the person, not one event. The filter fields call them Visitor Property.
| Source | Stored as user properties |
|---|---|
| Sequential SDK | None. Properties passed to identify() are stored on its $identify event, and register() properties on every later event. |
| PostHog | None. posthog.setPersonProperties() leaves $set and $set_once on its $set event as JSON. From posthog.identify() on the web, a name or email shows in Who on the lists. Other properties passed there do not appear. |
| Mixpanel | Not from mixpanel.people.set: Sequential does not store it. A group update (/groups) is stored as user properties on a user with no id. |
| Amplitude | set and setOnce from an Identify. add, append and unset are ignored. |
| Pendo | Visitor metadata, and the properties on pendo.track calls. Account metadata becomes account properties. |
| Smartlook | identify properties and smartlook('properties', …). |
You find user properties in these places:
- The Visitor Property and Account Property filter fields. They match the name and value exactly.
- The replay's Info tab, under User properties, when the session's first event carries them.
The lists and user pages do not show them. The Who column of Users, Sessions → Latest and Events shows only a name and an email, from identify events.
Accounts
Pendo fills accounts, from the account.id you pass to pendo.initialize. The Sequential SDK fills them from sequential.account(id, traits). No other source fills accounts.
To see accounts:
- Open Accounts, under Explore in the sidebar.
- Set the dates, and click Apply.
See The Accounts list.