Support and troubleshooting
Email hello@seean.io with the website domain, affected screen, selected period and what you expected to see.
Use the FAQ for common product questions, feature availability to check supported integrations, and billing and usage for allowances and invoice access.
No pageviews arrive
- Confirm the deployed page includes the correct site token and API origin from Settings.
- Check that the browser can load
/k.jsand send the collection request. - Check consent controls, browser privacy preferences, blockers and configured exclusions.
- Check whether the trial expired or usage reached its allowance.
- Open Settings → Installation → Setup health, which shows the most recently received pageview and offers Check installation.
Do not rotate a token as a first troubleshooting step: rotation invalidates existing installations.
Check the published setup
Seean checks the published homepage of every website that is not yet verified automatically, without anyone opening the dashboard: every minute during the website’s first day, every 5 minutes for the rest of its first week, every 30 minutes for the rest of its first month and every 6 hours after that. Changing the domain or rotating the site token restarts this schedule from the first-day pace. The first check that finds the snippet, the token and an allowing security policy verifies the website immediately; no visit is needed. Verified websites and websites that already receive events are no longer polled; resetting the statistics of a website that is not verified puts it back on this schedule.
The empty Overview installation banner also runs one check when it opens. Owners and website admins can also use Settings → Installation → Setup health → Check installation. It reads the published homepage and checks the generated tracker address, site-token reference, and security policy (the HTTP header and any <meta http-equiv="Content-Security-Policy"> tag in the page head). Results appear on screen without a reload. If the connection to Seean drops, the screen warns that received data may be out of date and disables new checks until reconnection:
- Security policy blocks Seean names the blocking script or connection directive and the sources to add. Merge them with your existing policy and publish the change; keep other application permissions intact.
- Seean is installed means the tracker address and site token appear in the page source and the security policy (header and meta tag) allows the script and collection requests. No visit is required. The website is marked as installed immediately: the Overview installation banner closes, Your sites shows Installed, and Setup health shows Installation verified with the check time. Reports fill in as visitors arrive; blockers or consent choices can still stop individual visitors from being counted.
- Tracker reference found — confirm in a browser means the address and token appear, but the policy uses nonce, hash or strict-dynamic rules the check cannot evaluate, or the page head is too long to read (see the limits below). An earlier verification is kept; follow browser verification.
- Setup could not be confirmed can mean an absent or different snippet, client-side loading, or consent-gated loading. Follow browser verification before concluding the tracker is missing.
- Could not inspect explains an unavailable page, HTTP error, oversized response or unsupported address. Retry after fixing the published page, or use browser verification.
- Last pageview received shows the newest retained pageview for this website, independently of the selected report period. An old timestamp is evidence of past collection, not proof the current installation works. Without pageviews, Installation verified shows the last successful check and Not installed yet means no check has verified the published page.
A later check that finds the snippet or token missing, or a policy that blocks Seean, removes the verification and the banner returns while the website has no data. Changing the website domain, rotating its site token or changing the collector hostname used by the generated snippet also removes verification and restarts the automatic checks. Collector changes include enabling/disabling first-party collect and activating, losing or disconnecting a custom collection domain; changing a fallback hostname while an active custom domain still serves the snippet does not reset verification. Publish the current snippet and its security-policy origins before checking again. Existing analytics data is kept. A check that cannot read the page leaves the previous result unchanged.
A manual or automatic result for an earlier installation configuration cannot verify the new one or remove its queued check. If a manual check says Installation settings or a newer check changed during this check, review the current generated snippet and retry; Seean does not mark the obsolete result as installed.
Manual checks are limited to two per minute per signed-in user across their websites; automatic checks do not count toward this limit. The checker only reads the configured domain’s public HTTPS homepage, with up to three redirects within that domain and its www address, a 12-second total deadline and a 2 MiB response limit. Private addresses, IP-literal sites, nonstandard ports, IPv6-only sites and compressed responses that ignore the request for uncompressed HTML are not inspected.
This is a server-side source/header check: it does not execute JavaScript, bypass consent or browser blockers, inspect other routes, or prove nonce/hash/strict-dynamic policies work. A page head longer than 16 KB that still has an http-equiv meta tag beyond that point, or meta-tag policies longer than 16 KB, cannot be confirmed by this check and needs browser verification. Different CDN responses and policies on other pages require browser verification. It checks the hostname the generated snippet currently uses - your own collection domain once it is active, otherwise the first-party collect address or app.seean.io; an older standard snippet can still work after first-party collect is enabled. The check itself sends no analytics events and does not store the fetched HTML; only the verification time, the time of the latest applied check and the next automatic check time are kept. Viewers cannot run installation checks.
Verify an installation
- Open your published website in a normal browser tab. Complete your site’s analytics-consent flow if applicable. Keep your visitors’ privacy choices respected.
- In browser developer tools, open Network. Reload the page and look for
https://app.seean.io/k.js. It should load successfully, possibly from browser cache. - Look for a POST to
https://app.seean.io/api/collectif you use the standard production snippet. Its JSON body includes your public token intand the page pathname inp. A 204 response alone is not proof that data was stored: excluded requests can also finish without an error response. - In Seean, open Events, select a range including now and refresh the list. Match your page path and time. Also check Settings → Installation → Setup health, for the last received pageview time.
- Navigate to a different pathname, then use Back and Forward. Confirm each intended pageview in Events. Queries and fragments are not distinct page paths; a new campaign or session can still count the same pathname again. Consecutive notifications for an unchanged pathname in the same session are deduplicated; leaving a path and returning can produce another pageview.
Use a separate website/token when testing so your checks do not inflate a customer’s reports. A successful script download, a working page preview or old data in Setup health does not prove a new installation works.
Script loads but no collection request appears
Check for browser opt-out, Do Not Track, Global Privacy Control or an automated browser. window.seean can exist with inactive methods when collection is disabled, so checking that object alone is insufficient. Load the snippet as a classic external script, with data-site and data-api on that same element.
If your website uses a Content Security Policy, allow https://app.seean.io in the effective script policy and in connect-src. If you define script-src-elem, it also needs to allow the tracker. Merge these origins into your existing policy; do not replace the rest of it or enable all origins. Inline loaders used by a tag manager may additionally need your existing nonce/hash policy. See script options.
Requests fail or counts are doubled
An unknown/rotated token can produce a 404; a billing allowance or inactive plan can stop collection. Check billing and the token in the deployed HTML. A blocked request or CSP error is visible in browser developer tools. Follow exclusions when requests succeed but the expected data is absent.
Search both project files and tag-manager containers for k.js. Keep one installation and let it observe supported navigation. Adding a History Change trigger that reloads the whole tracker, or manually sending pageview on every navigation, can double counts.
Local or automated testing
Localhost and 127.0.0.1 require data-local. Browser automation or privacy settings may intentionally stop collection. A browser UI test is not evidence that a real pageview was ingested.
Reports look different
Match the website, date range, filters and computed period. Realtime uses two- and thirty-minute windows; Overview normally covers a longer interval. Country estimates and Google query imports have their own limits.
An analysis did not start
Each analytics page starts one calculation for its period. The notice above the page explains a refusal: Your current analyses are still running waits for the running ones; Too many analyses were started for this website. Try again in N seconds means the start budget (120 a minute across all of the account owner’s websites and teammates; a burst of twenty and thirty a minute per website shared by share links, widgets and demo visitors who are not members of the demo) is spent, and the page retries once by itself after the wait. Could not start this analysis. Please retry is an unexpected failure; the browser console logs the server request ID for support. Retry analysis starts again immediately.
Background analytics and on-demand breakdowns share a bounded execution budget: two calculations across the service, at most one per website owner. This includes Realtime and the lightweight online count. A background calculation waits while the budget is occupied; an expanded breakdown can instead show Analytics is busy. Retry the breakdown shortly. Use Retry breakdown after another calculation finishes. This limits competing analytics work but is not a guarantee of constant collection latency or unlimited capacity. A loading or failed calculation is not a zero count.
When a calculation finishes, the next eligible waiting calculation receives its place immediately. Opening several websites in one account does not add a fixed retry delay after each completed calculation. A running calculation in that account still has to finish first; preparing accepted source data, storage outages and recovery snapshots can delay when a report becomes ready.
Contact safely
Include screenshots of errors where helpful. Do not send passwords, verification codes, revenue secrets or exported visitor data unless a specific secure support process has been agreed. Billing and account questions can be described without exposing those values.
Something unclear? Contact support.