# Troubleshooting Sequential

> Causes and fixes for common problems: missing events or session replays, an empty Watch, people counted twice or not found, Insights errors and dates.

> **In short**
>
> - Most missing data comes from the wrong project, the wrong date range or a source that sends nothing. Check these three first.
> - If events do not arrive, look at the **Network** tab of your browser's developer tools.
> - Each project has its own recording settings. A saved change reaches websites on the next page load.
> - Every date range is a run of whole UTC days. There is no time-zone setting.
> - "Known limitations" at the end of this page lists the problems with no fix yet.

## Check these first

1. **The project.** Pages show the project selected in the sidebar switcher. Each browser remembers its own choice. A link with `project=` selects its project for you.
2. **The date range.** Each page opens on the range that you last applied there for this project, in this browser. The first time, it is the last 10 days, as whole UTC days.
3. **Setup.** Open **Settings** → **Projects** → your project → **Setup**. **Sequential** and **Session replay** show "receiving" or "no events yet". Another source shows only after its first event.

### Project and date range: more detail

- Three checks explain most missing data.
- The switcher is at the top of the sidebar. Every page shows the selected project.
- Each browser remembers its own project choice. So a teammate can look at a different project.
- Pages show nothing outside the two dates at the top of the page.
- A teammate can see a different range, because each browser remembers its own range.

## A page shows no data

**Events**, **Sessions**, **Users**, **Accounts** and **Retention** tell you why they are empty. The message names what the page shows, such as events, sessions or users.

| You see | What it means | What to do |
|---|---|---|
| "No events yet" and "<Project> hasn’t sent any events yet. Once it does, this page shows its events." | The project has received no event and no recording yet. | Click **Set up <Project> →**. It opens the project's **Setup** page. Install a source there. |
| "No sessions in this date range" and "Try a wider date range." | The project has data, but not in these dates. | Move the start date earlier, then click **Apply**. |
| "No users match these filters" and "Try removing a filter." | The project has data, but nothing in these dates matches your filters. | Remove a filter, then click **Apply**. |

While **Sessions**, **Users** or **Accounts** loads, it shows placeholder rows, not a count of 0.

If the project has no account, **Accounts** says "No accounts yet. Accounts appear when your app sends an account id." See "Accounts is empty, or sessions have no account" below.

## No events arrive

1. Open your site in a normal browser.
2. In the developer tools, open the **Network** tab.
3. Filter by the API address in your install snippet. For the Sequential SDK, this is `data-api`.

In onboarding, the **Install** step shows when your first event arrives, and what Sequential refused. See [Your first hour](/docs/quickstart).

[Check your install](/docs/verify) explains every response.

| Symptom | Likely cause | Fix |
|---|---|---|
| 401 `unknown_ingest_key` | The key is mistyped, revoked or for another source. Or the project is archived. | Copy that SDK's key from **Setup** or **Sources & keys**. If archived, an owner or admin clicks **Restore project** under **Danger**. |
| Pendo requests get 401 | Your own Pendo API key is not registered. | An owner or admin pastes the apiKey on **Setup** → **Pendo** and clicks **Register**. See [Pendo](/docs/pendo). |
| 403 `Bot traffic not allowed` | The request looked automated. | Test in a normal browser. |
| 403 `origin_not_allowed` | The project has a list of allowed origins, and this site is not on it. A sandboxed iframe or a `data:` page sends `Origin: null`, which is also refused. The Sequential SDK then stops for the rest of the page load and writes "[sequential] Events refused: this website is not on the project's allowed websites (origin_not_allowed). This page sends no more events." | An owner or admin adds the site under **Allowed websites** on **Sources & keys**. See [Organisations and projects](/docs/organisations-and-projects). |
| 429 `rate_limited`, with `Retry-After` | The project sent more than its event rate limit, 20,000 events a minute. The Sequential SDK waits, then sends again. | Send fewer events. Look for a capture call that runs in a loop, or on each scroll or mouse move. See [Limits](/docs/limits). |
| 503 `overloaded`, with `Retry-After` | The Sequential server had too much work, so it refused some uploads for a few seconds. This is not a limit of your project. The Sequential SDK and the recorder wait, then send again. | Nothing to change. If it continues, contact Sequential support. See [Limits](/docs/limits). |
| 503 `config_unavailable`, with `Retry-After: 30` | Sequential could not read the project's settings, so it could not check the allowed origins. | Wait, then send again. If it does not stop, contact Sequential support. |
| Requests blocked, no status | Your Content-Security-Policy. | Allow the hosts your SDK's install page lists. |
| Console shows `[sequential] the script tag has no data-key — no events will be sent.`, or says that `data-api` is missing | The tag misses an attribute, so the SDK does nothing. | Copy the snippet again from **Setup**. See [Sequential SDK](/docs/sequential). |
| One browser sends nothing (Sequential SDK) | It remembers `sequential.optOut()`. | Call `sequential.optIn()`, for example from your consent banner. |
| Events stop after the consent page (Sequential SDK with `data-opt-out`) | `data-opt-out` starts every page load opted out. | After consent, call `sequential.optIn()` on every page load. |
| Amplitude events never arrive | Batching (`useBatch`) is on. Today, batched requests do not reach Sequential. | Turn batching off. See [Amplitude](/docs/amplitude). |
| **Setup** says "receiving", but **Events** is empty | Wrong project or date range. | Fix both. For today's events, see "Dates differ by one day". |
| **Events**, grouped by **User Session**, shows a "(no session)" row | Events carry no session id. Mixpanel sets none by default. | Add Sequential's recorder with recording on. See [Sessions](/docs/sessions). |

**Setup** checks every 5 seconds for 5 minutes, then stops. To check again, reload the page.

You can also ask an agent that has `analytics:read`: "Is Sequential dropping or refusing any of the data my site sends?" One `get_overview` call answers it. See **Refused or dropped data** below.

### Refused or dropped data

`get_overview` has a setup check named `ingest_refusals`. It tells an agent what Sequential refused or did not store for this project in the window, and why. Or it tells that Sequential refused nothing.

- The check shows at most 3 lines, the largest first. `more_reasons` counts the others. Each line has the reason, the source, the count, the last day and a sentence.
- A count is of requests: event batches for the Sequential SDK, uploads for recordings, or the requests of another tool's SDK. For `replay_event_malformed` and `heat_host_not_allowed`, it is of events.
- A refusal shows about a minute after it happens. Sequential keeps the counts for 30 days, so the oldest day of a 30-day window can be incomplete.
- A request with a wrong or revoked ingest key names no project, so Sequential cannot count it for your project. See **No events arrive** above.
- If Sequential cannot read the counts in time, the state is `unknown`.
- A host in a line can be another website that uses your project's public key.
- GET `/api/projects/:id/status` returns the same lines for the last 7 days, under `refusals`. In onboarding, the **Install** step shows them until its card says **It works**. Other pages do not show them yet.

| Reason | Sequential | What to do |
|---|---|---|
| `origin_not_allowed` | refused data from a website that is not in the project's allowed origins | If the host is your own site, an owner or admin adds it under **Allowed websites**. Do not add a host that you do not know |
| `origin_missing` | refused a request with no `Origin` or `Referer` header, because the project accepts only its allowed origins | Check that nothing between the page and Sequential, such as a proxy, removes the `Origin` header |
| `bundle_not_allowed` | refused data from an app whose bundle id is not in the project's allowed bundle ids | |
| `trial_origin_locked`, `trial_replay_after_claim`, `trial_session_cap` | refused data because the trial project is not claimed: it accepts only local development, it records no mobile replay, or it reached its session limit | Claim the trial project. See [Agent trials](/docs/agent-trial) |
| `billing_limit_reached` | refused data because the organisation was over its monthly session allowance | Recording of new sessions starts again when the monthly allowance resets. An owner or admin sees the reset date in the organisation settings |
| `billing_required` | refused data because the project needs a paid plan | Write to support@usesequential.com |
| `replay_disabled` | refused recordings because session replay is off for the project or its platform | Turn on session replay, or stop the SDK from recording |
| `too_large`, `event_too_large` | refused recording uploads over a size limit | Flush the recorder more often, or mask or block large elements |
| `rate_limited` | refused recording uploads over the project's replay rate limit | Record fewer sessions, or mask large elements |
| `event_rate_limited` | refused event batches over the project's event rate limit | Send fewer events. Look for a capture call that runs in a loop, or on each scroll or mouse move |
| `session_cap` | refused uploads of a session that reached the largest size of a recording | |
| `malformed`, `replay_event_malformed` | refused uploads, or dropped recording events, that it could not read | Update the SDK |
| `empty_batch` | received batches that held no events, and stored nothing | Update the SDK |
| `heat_host_not_allowed` | dropped heatmap data from a page whose host is not in the allowed origins | |
| `config_unavailable`, `trial_unavailable`, `not_stored` | could not check or store the data. The fault was on Sequential's side | Nothing to change. A sender that tries a 503 again sends the data again. If it continues, contact Sequential support |

### An agent sees [person] in your own site address

An agent gets a host or a URL with `[person]` in it, for example `www.[person].com`. A value that Sequential knows for a person has the word of your domain in it. Often this is a teammate's sign-up email with a tag, such as `name+yourbrand@…`, or a test user named after your product.

To fix it, add your site to the list of allowed websites: **Settings** → **Projects** → your project → **Sources & keys** → **Allowed websites**. From 10 October 2026, Sequential then keeps your own hosts readable for agents. See [Privacy at a glance](/docs/privacy-overview).

The list also refuses data from sites that are not on it. So add every site that runs your snippet. See [Organisations and projects](/docs/organisations-and-projects).

### Not a fault

- "Waiting for the first event from the sources above" stays while a line on the list reads "no events yet". Only **Sequential** and **Session replay** can read so. This includes **Session replay** when you do not record. Read the line for your own source.
- A first event can take up to about a minute to appear. If a project already has some data, a new source can take up to about two minutes to change to "receiving".
- "Used … ago" on **Sources & keys** only means that a request used the key, for example to get settings. It does not prove that Sequential stores events.

### No events arrive: more detail

- **Keys.** Each ingest key works only with its own SDK. Members, admins and owners can see keys. An archived project refuses all its keys. After **Restore project**, the same keys work again.
- **Pendo.** Pendo sends with your own Pendo API key. Paste the apiKey from your Pendo snippet.
- **Bot traffic.** Examples of automated requests: a headless browser, a test runner, curl or a server-side SDK. By design, automated tests do not appear in Sequential.
- **Opt-in.** Check that your consent banner calls `sequential.optIn()` when the visitor agrees. `data-opt-out` is a default, not a stored choice. So `sequential.optIn()` on one page does not carry to the next page. Do not call it only when the visitor clicks the banner.
- **Amplitude batching.** Today, batched requests do not reach Sequential's Amplitude handling.
- **Session ids.** Instead of the recorder, you can register your own `$session_id` super property.

## Session replay does not record

Owners and admins change each project's recording settings under **Settings** → **Projects** → your project → **Session replay**. A saved change reaches websites on the next page load and apps on the next launch. See [Recording settings](/docs/recording-settings).

| Symptom | Likely cause | Fix |
|---|---|---|
| No recordings at all | **Recording** is off, the platform is not ticked, or the project is archived. | Turn **Recording** on or tick the platform, then click **Save**. If archived, restore the project. |
| A website with PostHog, Mixpanel, Amplitude or Pendo records nothing | Their web recorders do not send to Sequential. | Add Sequential's recorder. See [Session replay (web)](/docs/session-replay). |
| An app with PostHog's mobile SDK records nothing | The app's PostHog setup has session replay off. | Set `sessionReplay = true`, or `enableSessionReplay: true` in React Native. See [Mobile apps](/docs/mobile). |
| The Sequential SDK or Smartlook records nothing | The project has no live **Session replay** key. | An owner or admin clicks **Create key** under **Session replay** on **Sources & keys**. |
| Only some sessions are recorded | **Sampling** is below 100 %. | Raise **Sampling**. |
| Short visits have no recording | **Skip sessions under (ms)**, default 2,000, applies to each page load. | Lower it. 0 turns the rule off. |
| No recordings, and the browser console shows `[sequential] replay: masking_selector_invalid` | A saved **Mask text selector** or **Block selector** is not valid CSS in that browser. Sequential records nothing rather than record unmasked content. | Fix the selector under **Masking** → **Advanced selectors**, then click **Save**. See [Masking and redaction](/docs/masking-and-redaction). |
| No recording from some visits, and the browser console shows a warning followed by `[sequential] replay: recorder_start_failed` | The recorder could not start on that page in that browser. Nothing from that visit was recorded or sent, not even DevTools data. The warning just before the line names the cause. | If it happens only for some visitors, such as an old browser or one with an extension that changes how pages work, there is nothing to fix on your site. If it happens on every visit to a page, a script on that page usually replaces a built-in browser feature that the recorder needs: check that page's other scripts. A reload does not help: the same browser on the same page fails the same way. |
| Some pages are never recorded | **URLs** allow and deny lists match only the page path. | Use path patterns, for example `/checkout/**`. |
| Text shows as ███ and images are missing | **Strict** masking is the default. | Switch **Masking** to **Balanced**. Only new recordings change. **Balanced** also records attribute values and the full page address. On mobile, the app's SDK sets masking. See [Masking and redaction](/docs/masking-and-redaction). |
| Fonts look wrong, or background images are missing | **Strict** masking cuts font and image addresses to their domain, so the player cannot load them. | Expected under **Strict**. See [Masking and redaction](/docs/masking-and-redaction). |
| A recording stops partway | A 413 on `/rec/`: **Max MB** (default 25) or one upload too large. No 413: **Max minutes** (default 60). | Raise the caps under **Session caps**. |
| A recording has gaps, with 429 responses | The project reached the upload rate limit: 50 MB a minute, shared by all its visitors. | Lower **Sampling** on busy projects. |
| A session has no **▶ Replay** in **Sessions** | The row says why in its place. "Processing · ready by 14:05", with a time: the recording is not ready yet. "Expired": the replay period ended, or the recording has no start that the player can use. "No recording": the session ids are different, the session was not recorded, or the recording expired more than about a week ago. Before a row gets its state, a dim "…" ("Checking recording…") shows, also for a session without a recording. It also shows while Sequential tries again after a failed check. "Couldn't check recording": Sequential could not read the state, also on the second try. The recording can exist. | For "Processing", wait until that time. The row then shows ▶ without a reload. For "Couldn't check recording", reload the page after a minute. Otherwise see [Sessions](/docs/sessions). |
| The player shows "This recording is still being processed — ready by 14:05.", with the time when it is ready | Sequential has not prepared all the uploads of the recording yet. With the default settings, that time is at most about 6.5 minutes after the last upload. When the time has passed, the player says "ready shortly". | Wait. While the browser tab is visible, the player checks again every 10 seconds and opens the recording when it is ready. A check that comes while the tab is hidden waits until you show the tab again. To check at once, select **Check now**. |
| The player shows "This is taking longer than expected." | The player checked every 10 seconds for at least 2 minutes and until 10 seconds after the time, but not for more than 10 minutes. The recording was still not ready. Sequential is behind on preparing recordings. The uploads are already stored. | The player checks again once a minute, up to 10 times, while the tab is visible. After that, select **Check now**, or open the replay again later. |
| The player shows "This session has no playable recording yet." | Sequential has an index of the recording, but it could not load enough of it to play. This can happen for a moment just after the recording becomes ready. | Select **Retry**. If it stays, check the session's events instead. |
| The player shows "This recording has expired." | The replay period of the first part of the recording ended. | See [Retention and deletion](/docs/retention-and-deletion). |
| The player shows "The recording could not be read right now. Retry shortly." | Sequential could not read the stored recording for a moment. | Select **Retry**. |

### Session replay: more detail

- **Platforms.** The **Platforms** choices are **Web**, **iOS** and **Android**. Uploads that still arrive get 403 `replay disabled for tenant` or `replay disabled for platform`.
- **Archived project.** It refuses its keys. An owner or admin clicks **Restore project** under **Danger**.
- **PostHog mobile.** PostHog's mobile recorder sends app recordings to Sequential. Sequential's own recorder is for websites.
- **Session replay key.** Sequential SDK and Smartlook installs get the key from Sequential. The project must have a live replay key. Then **Setup** says "Session replay is included in this tag." Without one, **Setup** says that session replay needs a live replay key, with a link to **Sources & keys**.
- **Sampling.** Staging and development projects start at 10 %. Each session gets its decision once, when it starts. Sessions that already have a decision keep it.
- **Short visits.** If the visitor leaves a page before **Skip sessions under (ms)**, that page sends nothing.
- **URLs.** `/checkout/**` works. A pattern with `https://` or `?` never matches. If the allow list has entries, only matching pages are recorded. In a single-page app, recording stops at a denied path until the next full page load.
- **Strict masking.** It masks all text, inputs and most attribute values. It blocks images, SVG, video, audio and iframes. It cuts addresses to their domain.
- **Balanced masking.** You must type the project slug to switch. Mark sensitive elements with `data-sq-mask`.
- **Caps.** When a cap is reached, recording ends for the rest of that page. "Too large" means over the server's upload limit. To keep uploads smaller, block heavy regions with `data-rr-block`.
- **Rate limit.** The 50 MB a minute limit applies unless your server sets another value.
- **Missing ▶.** The recording and your events do not share a session id. [Sessions](/docs/sessions) explains how ids are matched. The list stops showing a recording a fixed number of days after its last activity.

### Upload and retention limits

- **Server upload limit.** One upload can be at most 5 MB, unless whoever runs your Sequential server changed it.
- **Upload rate limit per IP address.** The 50 MB a minute limit also applies to each IP address. So testers on one office network share it.
- **Retries.** After a 429, the recorder retries after 30 seconds. It keeps only its last 5 waiting uploads.
- **When a recording stops playing.** The number of days is the "N d" in the **Session replay** summary line. For a new project, it is 30. After it, **Latest** shows "Expired" in place of **▶ Replay**. In **Latest**, **Watch** and the session list of a user, an older session past the first 200 can show ▶ for a moment, until its row gets its state.

## DevTools or masking shows less than you expect

| You see | Likely cause | Fix |
|---|---|---|
| In DevTools, a failed image, script or font shows only a domain and █ blocks. You cannot see which file failed | **Strict** masks the path of every file that the page loads. The kind, status and timing stay | Expected under **Strict**. Reproduce the issue in a browser. Or, on a staging project, set **Attribute text** to **URLs** under **Masking** → **Advanced selectors**. See [DevTools](/docs/devtools). |
| In DevTools, a part of an API path shows as █ blocks, such as `/api/orders/███████/items` | **Strict** masks id-like segments of an API call's route | Expected under **Strict**. The route words stay, so you can still see which call failed. |
| An error message or console text shows █ blocks in a path | Under **Strict**, Sequential masks UUIDs, long hex runs and runs of 6 or more digits after a `/` | Expected under **Strict**. |
| A replay shows the value of a checkbox, radio button or drop-down option in the page's HTML | **Balanced** records page markup as it is. Only what users pick or type is masked | Use **Strict**, or put `data-rr-block` on the element. See [Masking and redaction](/docs/masking-and-redaction). |
| 400 `masking_preset_conflict` from PATCH `/api/projects/:id/config` | The request names the preset `strict` and sets `mask_attributes` to `urls` or `off`. Sequential saved nothing | Send the preset `custom` to loosen attribute masking, with `confirm` and the project slug if the change records more. Or leave out `mask_attributes`, or set it to `strict`. |

## Watch is empty

Watch ranks only judged sessions.

| You see | Likely cause | Fix |
|---|---|---|
| "Background judging is switched off for this project." | An owner or admin switched it off. | An owner or admin turns it on under **Settings** → **Projects** → your project → **Insights**. |
| "Background judging is off for every project on this Sequential server." | The server does not run background judging. | Ask whoever runs your Sequential server. |
| "This Sequential server has no AI key set up, so it can't judge sessions." | The server has no key for the judge. | Ask whoever runs your Sequential server. |
| "Sequential can't tell right now whether background judging is running for this project." | Sequential could not read the project's settings. | Reload the page later. |
| "Nothing judged yet · N waiting" | Sequential judges a session about 30 minutes after its last event. | Wait, or widen the date range. |
| "Couldn't check whether judging is on" | Watch could not check if judging is on. | Click **Retry**. |
| "Not yet judged: N" never reaches zero | Some sessions never get a judgment. | Send a session id with every event. See [Sessions](/docs/sessions). |
| A session you expect is not listed | It is outside the **Sessions** date range. | Widen the date range. |

"N waiting" and "Not yet judged: N" also count sessions that will never get a judgment. See [Watch: sessions worth your time](/docs/watch).

### Watch: more detail

- **Turning judging on.** Owners and admins turn background judging on under **Settings** → **Projects** → your project → **Insights**. Sequential then also judges the unjudged sessions from the past 7 days.
- **Judging off, with verdicts.** If sessions in the range already have verdicts, Watch keeps the list and shows the reason above it.
- **Wider range.** Widening the date range includes older sessions.
- **Delay.** Sequential checks every 5 minutes. A busy project adds delay. When the daily allowance runs out, this also adds delay.
- **Counts.** "N waiting" and "Not yet judged: N" count all sessions in view that have no judgment.

These never get a judgment:

- Sessions with fewer than 3 meaningful events. By design, very short sessions stay unjudged.
- Events that have no session id.
- Sessions whose last event was already more than 7 days old when judging reached them.
- Sessions where the judge returned an error.

## One person shows as several users

Each event has one user id: the identify value, or before identify, an anonymous id per browser. See [Users and identity](/docs/users-and-identity).

| Symptom | Likely cause | Fix |
|---|---|---|
| The same person counts as several users | Your app does not identify them. | Call identify at sign-in, and on page load for signed-in people. See [Identify your users](/docs/identify-users). |
| A new user on every page load (Sequential SDK) | The browser blocks storage. | Identify signed-in users on every page load. |
| A person who signs up during a visit appears twice on **Users** (Sequential SDK) | The link to the anonymous id can take up to 5 minutes to show. | Wait 5 minutes, then reload. |
| A person who signs up during a visit appears twice on **Users** (Amplitude, Pendo or Smartlook) | Sequential joins the two ids only for the Sequential SDK, PostHog or Mixpanel. | None yet. This is a known limitation. |
| Funnels, flows or retention count one person twice | Sequential SDK, PostHog or Mixpanel: the link to the anonymous id can take up to 5 minutes to apply. Amplitude, Pendo or Smartlook: nothing links the two ids. | Sequential SDK, PostHog or Mixpanel: wait 5 minutes, then run it again. Amplitude, Pendo or Smartlook: keep a funnel on one side of identify. |
| **Dashboard** counts more users than **Users** | The **Dashboard** tiles count user ids. They do not use the link to the anonymous id. The **Traffic** tile labels this figure **User IDs**, with the hover text "Distinct user ids. A visitor who signed in during a visit counts once per id they used." | None. This is expected. |
| The **Sessions** card of a user page shows fewer sessions than the **Users** list | The card keeps its own date range. The **Sessions** stat at the top counts all the data, so it can be higher. | Set the same dates on both pages. |
| One person appears under two values you recognise | Your app passes different values to identify. Sequential does not merge identities. | Pass one value per person. |
| Smartlook: each person appears twice | Only the identify call carries the user id. | See [Moving from Smartlook](/docs/smartlook). |
| Two people show as one on a shared device | The next person keeps the previous user's id. | Call your SDK's reset on sign-out, for example `sequential.reset()`. |

### Identity: more detail

- **Storage.** Sequential stores every event under one user id. After identify, it is the value your app passes.
- **New users from one person.** Before identify, each browser has its own anonymous id. So a second device, a private window or cleared storage makes a new user.
- **Blocked storage.** The browser does not keep the anonymous id between pages.
- **Sign-up during a visit.** Later events go under your id. With the Sequential SDK, PostHog or Mixpanel, **Users** lists one user and counts that session once. With Amplitude, Pendo or Smartlook, **Users** lists both ids, and "Total sessions" counts that session twice. With every SDK, a funnel across sign-up loses people at that step.
- **Two values.** For example: an email on one screen and an account id on another. Sequential takes the value you pass at face value. Use one identifier for each person. Pass the same value everywhere, every time.
- **Smartlook.** Other events stay under Smartlook's visitor id.

## "No one with this id in this project."

The user page says this when no event that Sequential keeps has the id, in any dates. Check that you have the exact id that your app sends. With the Sequential SDK, PostHog or Mixpanel, an anonymous id that is linked to the person opens the same page.

If the page loads but its **Sessions** card says "No sessions in these dates.", the card keeps its own date range. This is the range that you last applied on the user page for this project, in this browser, or the last 10 days in UTC. Move the start date earlier and click **Apply**. Or open the user from a replay's header.

### User not found: more detail

- The page searches for the exact user id. It does not take the range from **Users**, **Sessions** or **Watch**. Here, the message means "not in this date range".
- **Try again** reloads the same range.
- A replay's header keeps the day of the recording in the range.

## Accounts is empty, or sessions have no account

On **Accounts**, a session without an account id is never a row. See [Users and accounts](/docs/users-and-accounts#the-accounts-list).

| You see | Likely cause | Fix |
|---|---|---|
| "No accounts yet. Accounts appear when your app sends an account id." | The project has no account. Accounts come from Pendo and from the Sequential SDK's `sequential.account()`. Group calls from PostHog, Mixpanel and Amplitude are not used for accounts yet. | With the Sequential SDK, call `sequential.account(id)` after sign-in. With Pendo, add `account: { id: … }` next to `visitor` in `pendo.initialize`. |
| "No account matches these filters." or a message about a health | No account matches your filters in these dates. | Click **Clear filters**. It keeps the dates. |
| "N sessions in this range had no account" | These sessions have no account id. **Accounts** counts them, but does not list them. | With Pendo, set the account before the first event on each page. With the Sequential SDK, call `sequential.account()` before those events. Only events sent after that are linked to it. Events from other SDKs have no account id. |
| "Accounts are unavailable right now." | Sequential could not read the list. | Click **Retry**. |
| An account reads "Account" and the start of its id | Your app sends no name for the account. | Send a name property, such as `name` or `company_name`, with the account. See [Name and plan](/docs/users-and-accounts#name-and-plan). |

## Insights tab messages

**Insights** judges one recording on demand. See [Session insights](/docs/session-insights).

| The tab says | Likely cause | Fix |
|---|---|---|
| "On-demand judging has used this project's daily allowance." | The daily allowance for new on-demand judgments is used. | Wait for the reset time the tab shows. |
| "Insights failed" with "Sequential could not judge this session. Try again." | The judge returned no usable answer. | Click **Retry**. |
| "Insights failed" with "Timed out after 45 s — try again." | The tab stopped waiting after 45 seconds. | Click **Retry**. |
| "Insights failed" with "Insights failed (Insights can't run right now. Try again shortly.)" | Sequential cannot read the daily allowance, so it does not judge. It spends nothing. | Click **Retry** after about 30 seconds. If it continues, ask whoever runs your Sequential server. |
| "Insights aren't set up on this server" | On-demand judging is not configured. | Ask whoever runs your Sequential server. |

Four more messages need no fix. See "Insights: more detail".

## Try it: "Preview failed"

**Try it** in the rubric editor judges your draft on one session. See [Customise the rubric](/docs/rubric).

| You see | Likely cause | Fix |
|---|---|---|
| "Preview failed" with "Can't test the rubric right now. Try again shortly." | Sequential cannot read the allowance of **Try it**, so it does not judge. It spends nothing. | Click **Retry** after about 30 seconds. If it continues, ask whoever runs your Sequential server. |

### Insights: more detail

- "Not enough activity to judge — fewer than 3 meaningful events": too little happened in the recording. Nothing to fix.
- "Already judged — same events, same questions, so the verdict below is unchanged.": **Re-run** has a 10-minute cooldown. Nothing to fix.
- "Insights run once the recording is ready (by 14:05).", with the time when the recording is ready: the recording is still being processed. Keep the replay open: the tab judges it on its own once the player loads the recording. If the player stopped checking, select **Check now**.
- "This recording has expired, so it can't be judged.": the replay period ended. Nothing to fix.
- **Allowance reset.** The tab shows the reset in your local time and as 00:00 UTC.
- **While the allowance is used.** Judgments saved in the last 7 days still open, unless someone edited the project's questions since then. If a verdict is already on screen, it stays. **Re-run** is hidden, because it cannot make a new judgment.
- **Not set up.** On-demand judging is not configured on your Sequential server.
- **Time-out.** If the judgment finished in the meantime, **Retry** gets it, and no new judgment is made.
- **Cooldown.** Within 10 minutes of a **Re-run** that made a new judgment on the same session, another **Re-run** keeps the saved judgment.

## Findings: the Verification card

The **Verification** card on a finding shows what the rate did after a release. See [Findings and fixes](/docs/findings).

| The card says | Likely cause | Fix |
|---|---|---|
| "A release in staging (…) named F-12; this project measures production." | The release marker is for another environment. Sequential measures only markers for the project's environment. The card lists up to 5 of the other markers, newest first. | Record a marker for the project's environment that names the finding. Check the `environment` that your CI job sends. |
| "Couldn't check for a release just now; reload the page to try again." | Sequential could not read the release markers. It does not mean that no release named the finding. | Reload the page. |
| "Not measured yet: no release has named F-12." | No marker for the project's environment or for another environment names the finding. | Name the finding in `finding_ids` of the marker. |

## Agents: "Waiting for your agent…" does not change

After **Create token** in onboarding, the step checks if the token was used. It shows "Waiting for your agent…" and checks every 5 seconds, only while the tab is visible, for 30 minutes. Then it shows "No call from your agent yet." and **Check again**.

| Likely cause | What to do |
|---|---|
| The agent has not sent a request yet | Restart the agent, so that it reads the new setup. Ask it something. Then press **Check again**. |
| The setup went to the wrong place | Use the setup for your agent, with the note under it. Claude Code needs `--scope user`. Cursor reads `~/.cursor/mcp.json`. Codex reads `~/.codex/config.toml`. Claude Desktop reads `claude_desktop_config.json`. |
| Claude Desktop did not read the setup | Quit Claude Desktop and open it again. Its setup runs `npx`, so the computer needs Node.js. |
| The agent uses an old token | Paste the setup again. It must contain the new token. |
| The new token no longer works | The step counts a use only while the token works: not revoked, not expired, and its project not archived. Create a new token. |

**Check again** checks at once, then for 30 more minutes. You can also leave with **Skip for now**. The token stays. Later, when the agent connects, the token on the **Coding agents** card of **Agents** shows "Used" and a time.

On **Agents**, "Activity isn't available right now." means that Sequential could not read the agent call log. It does not mean zero calls. Press **Try again**. Zero calls shows "No agent calls in the last 7 days." If Sequential looked up the token names and did not find a token, the page shows "a removed token". If Sequential could not look up the names, each token shows as "a token (names unavailable)", and the page says "Token names unavailable right now."

## Agents: a fix brief or a finding is refused

By default, a token does not get a fix brief or a finding that Sequential could not fully screen. See [Privacy at a glance](/docs/privacy-overview).

| You see | Likely cause | Fix |
|---|---|---|
| 503 `screen_unavailable` from GET `/api/findings/:n` or `/api/findings/:n/brief` | Sequential could not screen every quoted passage of the finding. The screen is not set up, its daily allowance is used up or it did not answer. Or the finding has more quoted text than the screen reads. | Try again after the `Retry-After` time, 60 seconds. If it continues, ask the operator of your Sequential server. |
| 400 `tool_error` from POST `/api/agent/get_fix_brief` or `/api/agent/get_finding`, or an MCP tool error that says "this server requires screening" | The same cause. | The same fix. |

The app, with a signed-in person, shows the brief also when the screen did not run. The operator can turn off the refusal for tokens with `FINDINGS_SCREEN_REQUIRED=false`. From 11 October 2026, the app does not show the brief when Sequential cannot check it for known people. See [Findings and fixes](/docs/findings).

## A fix brief says "screen paused"

| You see | Likely cause | Fix |
|---|---|---|
| The first lines of the brief say "screen paused, N quoted passages withheld". Each quoted passage reads `[instruction-like text removed]`. | Sequential cannot read the allowance for screening, and the project reached 10 screenings in a minute on this server process. So Sequential did not screen the brief, and it withheld every quoted passage. | Open the finding again after a minute, or ask the agent to get the brief again. Sequential does not keep a paused result. |

## Agents: Ask is refused or stops

The tool `ask_sessions` runs **Ask** for an agent. See [Ask: find sessions by describing them](/docs/ask). POST `/api/agent/ask_sessions` answers with the status below. Through MCP, the refusal is a tool error, and its text is the same JSON. When there is a `Retry-After` header, the JSON also has `retry_after_sec`. Sequential charges nothing to the allowances on a refusal. This includes 502 `ask_failed`: the judge answered for no session, so nothing is charged.

| You see | Likely cause | Fix |
|---|---|---|
| 400 `limit_too_large` | `limit` is more than 50. | Use 50 or less. Continue with `next_cursor`. |
| 400 `bad_query` | The description has a line break or a control character, or it is shorter than 3 characters without double quotes, backticks and extra spaces. | Use one line of 3–200 characters. |
| 402 `budget_exhausted` | The agent allowance of the project is used up, or the first group of up to 8 sessions would go over it. | Try again after `resets_at`, at midnight UTC. The operator can raise `AGENT_DAILY_TOKENS`. |
| 429 `token_daily_limit` | This token used its own daily allowance, or the first group of up to 8 sessions would go over it. | Try again after `resets_at`, at midnight UTC. The operator can raise `AGENT_TOKEN_DAILY_TOKENS`. |
| 429 `ai_concurrency` | Another `ask_sessions` call of this project still runs on this server. | Try again after 10 seconds. Do not send calls at the same time. |
| 503 `ai_busy` | This server process already runs 2 `ask_sessions` calls, of any projects. | Try again after 10 seconds. |
| 503 `ai_unavailable` | Sequential cannot read the allowances, so it does not spend. | Try again after 30 seconds. If it continues, ask the operator of your Sequential server. |
| 503 `ask_unavailable` | Judging is not configured on your Sequential server. | Ask the operator of your Sequential server. |
| 502 `ask_failed` | The judge failed for every session of the page. | Try again. |
| The answer has `stopped`: `"budget"` | A limit ran out during the call, or Sequential could no longer read the limits. `stop_reason` names it. The judge did not check the rest of the page. | Call again with `next_cursor`. For `budget_exhausted` or `token_daily_limit`, call after midnight UTC. For `ai_unavailable`, call again in a minute. A cursor used hours later continues in a list that has changed: some sessions can be skipped or come again. |

A wrong argument, such as `days` over 30 or an unknown `cursor`, is a 400 `tool_error`.

## Agents: too many requests

Sequential limits how often access tokens can call it. See [Limits](/docs/limits).

| You see | Likely cause | Fix |
|---|---|---|
| 429 `rate_limited` | This token sent more than its limit, by default 120 requests a minute. | Wait for the `Retry-After` time. Send fewer requests with this token. |
| 429 `project_rate_limited` | The tokens of this project together sent more read requests than the project read limit, by default 600 a minute. Sequential refuses them only when the operator turned this limit on with `TOKEN_PROJECT_LIMIT_ENFORCE=true`. | Wait for the `Retry-After` time. Send fewer read requests from all the agents of this project. The operator can raise `TOKEN_PROJECT_REQUESTS_PER_MINUTE`. |
| 503 `rate_limit_unavailable` | Sequential cannot count the requests, so it refuses them. | Try again after 30 seconds. If it continues, ask the operator of your Sequential server. |

The token limit refuses the HTTP request, also on `/mcp`. The project read limit refuses each tool call: through MCP, the refusal is a tool error, and its text is the same JSON, with `retry_after_sec`.

## A link says "This link is for a project you can't open"

A link can name its project with `project=`. Links in agent answers do. See [Links that open a project](/docs/sessions-and-replay#links-that-open-a-project).

| You see | Likely cause | Fix |
|---|---|---|
| "This link is for a project you can't open" | You are not a member of the organisation that owns the project. Or the project is archived. Or you are signed in with an account in another organisation. Or the project id in the link is wrong. | Sign in with the account that is a member. Or ask an owner or admin of the organisation to invite you. For an archived project, an owner or admin restores it. **Go to your sessions** opens the project that you have selected. |

Sequential never opens another project in place of the one that the link names.

## Agents: claude.ai

See [Connect claude.ai](/docs/connect-claude-ai).

| You see | Likely cause | Fix |
|---|---|---|
| You removed the connector in claude.ai, but the connection still shows under **Agents** | In our tests, claude.ai did not tell Sequential when a connector was removed. The connection stays live, and it counts toward your limit until it goes idle 30 days after claude.ai last renewed it. | Press **Disconnect** on the connection under **Agents**. If you connected claude.ai again, the older connection shows "Replaced by a newer connection?". See [An older connection that stays live](/docs/connect-claude-ai#an-older-connection-that-stays-live). |
| "You have reached your limit of 10 connections to …", or the project shows "at its connection limit for you" | You have 10 connections to this project. Connections that you removed only in claude.ai still count. Connections that are still being set up count too. | Disconnect the connections that you no longer use under **Agents**. A connection that is still being set up shows "Connecting…". Press **Cancel** on it, or wait: it clears within 10 minutes. |
| "… has reached its limit of 50 connections." | The project has 50 connections, from all people. | An owner or admin disconnects old ones under **Agents**. |
| claude.ai does not follow the instructions of the Sequential server | When we tested it (October 2026), claude.ai did not give the server's instructions to its model. The model does get each tool's description and the answers to its tool calls. | Say in your message what you want claude.ai to do. |
| A call fails with "This connection is paused while its project is archived" | The project is archived. | Restore the project. The connection works again. |
| claude.ai stops working after you changed or reset your password | A password change or reset ends every claude.ai connection that you made. | Connect claude.ai again. |
| **History** on **Agents** shows a claude.ai connection as "Access lost", "Ended after a password reset", "Ended for security", "Ended: the app was removed", "Revoked by Sequential support" or "Ended", and nobody pressed **Disconnect** | Sequential or claude.ai ended the connection. "Disconnected" shows only when someone pressed **Disconnect** or **Cancel**. "Ended" covers the other cases, for example a password change on **Profile**. See [History](/docs/connect-claude-ai#history). The [Audit log](/docs/audit-log) shows how it ended. | Connect claude.ai again. |
| **claude.ai** shows "Couldn't check whether claude.ai is available" and **Retry**, and onboarding has no **claude.ai** tab | Sequential checks once, when the page loads, that the claude.ai sign-in is on. The check got no answer: a network error, a server error, or no answer within 5 seconds. | Press **Retry**. If it stays, ask whoever runs your Sequential server. |
| **claude.ai** shows "Not available yet.", and onboarding has no **claude.ai** tab | Your Sequential server answered that the claude.ai sign-in is off. | Ask whoever runs your Sequential server. |
| "An owner or admin connects Claude and ChatGPT for this project." | Your role is member or viewer. | Ask an owner or admin to connect claude.ai. |

## Dates differ by one day

Sequential stores times in UTC, and date ranges are whole UTC days.

- **The default range can end on the wrong day.** West of UTC in the evening, the end date is already tomorrow's date. East of UTC early in the morning, it is still yesterday's date, so the range leaves out the events since midnight UTC. Set the end date to your today to include them.
- The range includes the whole end date, on every page.
- Days on the **Events** chart and **Retention** cohorts are UTC days.

### Dates: more detail

- The two dates at the top of the page default to UTC dates.
- **Some times are converted, some are not.** The **Sessions**, **Users** and **Events** lists show a relative time, such as "3 h ago". Hover it for your local time. **Ask** results show your local time.
- A chart day runs from midnight to midnight UTC. So evening activity in the Americas counts on the next UTC day.
- In a funnel's drill-down, the user detail page can show the UTC time without conversion.

## Recordings show "anonymous"

The replay header says "anonymous" when the recording has no user id. The ‹ › buttons to the user's previous and next session then stay disabled. This happens:

- with Amplitude, until your app calls `setUserId`
- with only the Smartlook compatibility script on the page
- with the Sequential SDK, when the browser blocks storage

**Sessions**, **Watch** and the user detail page still show the right user.

### Why the recording is anonymous

- The recorder takes the user id from PostHog, Amplitude, Mixpanel, Pendo or the Sequential SDK on the page. It does not read a user id from the Smartlook compatibility script.
- The recorder reads the user id of the Sequential SDK from the storage of the browser.
- Your events still carry the identified id.

## Custom event properties are missing

To see what Sequential stored, click the icon at the end of the event's row on **Events** (**Event details**). A side panel lists its properties and its **Raw event data**.

[What each SDK supports](/docs/support-matrix) lists which properties each SDK keeps.

| Symptom | Likely cause | Fix |
|---|---|---|
| In **Event details**, but a filter finds nothing | **is** on **Text** matches only the exact text of the whole value. A date and time value matches only with the type **Date**. | Copy the value from **Event details** exactly, or use **contains**. For a number or a date, choose the type **Number** or **Date**. |
| `capture()` throws "… is a reserved event name …" | The Sequential SDK reserves names that start with `$`. | Rename the event. |
| A Sequential SDK event never arrives | Its properties could not become JSON, so the SDK dropped it. | Send strings, numbers and booleans. |
| `register()` properties disappear after a page load | Sequential SDK super properties last only for the page. | Call `register()` on every page load. |
| User properties you set do not appear | The Sequential SDK and PostHog do not store them as user properties. Properties passed on the first `posthog.identify()` do not show anywhere in Sequential. Today, Sequential refuses Mixpanel's `people.set` from the browser. | Read them on the event. With PostHog, use `posthog.setPersonProperties()`. |
| Mixpanel properties that start with `$` are gone | Sequential drops them, except element properties. | Rename them without the `$`. |
| Pendo `track` properties are not on the event | Sequential stores them as user properties. | Filter with **Visitor Property**. |
| A URL in a property reads `[redacted]` | Sequential redacts URL query values, except attribution parameters such as `utm_*`. | See [What Sequential keeps from page URLs](/docs/url-policy). |

### Event properties: more detail

- **Raw event data.** The icon opens the **Raw event data** window. It shows the stored properties of the event.
- **Filters.** **is** on **Text** matches only the exact text of a value. For a number or a date and time, choose the type **Number** or **Date**.
- **JSON.** Examples of values the SDK cannot turn into JSON: a BigInt, or an object that refers to itself. Sequential stores objects and arrays as JSON text.
- **Mixpanel `$` properties.** Sequential drops them when it stores the event.
- **URLs.** Sequential redacts query values when it stores them.
- **User properties.** Check the support matrix before you rely on user properties.

### Where user properties go

- **Sequential SDK.** It keeps `identify()` properties on the `$identify` event that the call sends. A repeat `sequential.identify()` with the same id and the same properties sends nothing. From 11 October 2026, a repeat with changed properties sends a new `$identify` event with them.
- **PostHog.** Sequential keeps `$set` and `$set_once` only when they arrive on a `$set` event. That event comes from `posthog.setPersonProperties()` or a repeat identify with the same id.
- **Mixpanel.** Sequential refuses `people.set` from the browser today.

## Known limitations

These have no fix yet:

- Amplitude batching (`useBatch`) does not reach Sequential.
- Only the Sequential SDK, PostHog or Mixpanel joins a visitor's events from before identify to the identified user. With Amplitude, Pendo or Smartlook, the two ids stay two users on every page.
- The **Dashboard** tiles count user ids. They never join the ids. On the **Traffic** tile, this figure is labelled **User IDs**, with the hover text "Distinct user ids. A visitor who signed in during a visit counts once per id they used." On the **Top pages** tile, each row reads like "12 user IDs".
- Sequential refuses Mixpanel's `people.set` from the browser.

## Limits
- Sequential refuses automated requests, such as a headless browser, a test runner, curl or a server-side SDK.
- Staging and development projects start with **Sampling** at 10 %. Raise it to record every session.
- The 50 MB a minute upload limit also applies to each IP address. Testers on one office network share it.
- By default, a recording stops playing 30 days after its first part arrived.
- Watch never judges sessions with fewer than 3 meaningful events, sessions older than 7 days when judging reaches them, or sessions where the judge failed.
- With Amplitude, Pendo or Smartlook, a funnel across sign-up loses people at that step. Nothing links the ids from before and after identify.
- The **Event Property** filter matches only the event's own properties.

## Need help

If this page does not solve your problem, write to support@usesequential.com.

## Related

- [Check your install](/docs/verify)
- [Recording settings](/docs/recording-settings)
- [Session replay (web)](/docs/session-replay)
- [Sessions](/docs/sessions)
- [Watch: sessions worth your time](/docs/watch)
- [Session insights](/docs/session-insights)
- [Identify your users](/docs/identify-users)
- [Users and identity](/docs/users-and-identity)
- [Filters, date ranges and saved views](/docs/filters-and-saved-views)
- [What each SDK supports](/docs/support-matrix)
- [Limits](/docs/limits)
