# Seean public product documentation The following content is generated from the same Markdown sources as the public website. Canonical pages are linked before each section. Source: https://seean.io/about/ # About Seean Seean is a web analytics product from **NesDesign LLC**. It helps website owners inspect traffic, compare campaigns, build conversion funnels and report revenue from connected order data. The public website is [seean.io](https://seean.io/). The application is [app.seean.io](https://app.seean.io/). For product questions or corrections, contact [hello@seean.io](mailto:hello@seean.io). ## Product facts | Topic | Current behavior | |---|---| | Installation | JavaScript snippet in a website's shared layout | | Traffic reports | Visitors, visits, views, pages, sources, campaigns and events | | Conversion analysis | Funnels built from collected pages and events | | Revenue | Server-supplied orders and attribution fields; USD amounts and full refunds | | Performance | Real visitor LCP, INP, CLS, FCP and TTFB measurements | | Multiple websites | Up to 30 sites, with a combined roll-up view | | Sharing and export | Revocable public report links; event and order CSV exports | | Trial | 15 days, no card required | | Paid plans | All features included; tiers depend on event volume | | Browser storage | localStorage visitor identifier and sessionStorage session information; no tracker cookies | ## What Seean does not claim Seean does not promise that every visitor or bot can be detected. Country estimates do not establish a visitor's precise physical location. Revenue reports do not recover attribution that an integration did not supply. The tracker uses persistent browser storage, so it should not be described as identifier-free or automatically exempt from consent requirements. The [documentation](/docs/) describes setup and limitations. The [changelog](/changelog/) records product updates, and [pricing](/#pricing) lists the available event-volume tiers. ## Sources for product information - [Website analytics overview](/web-analytics/) - [Full feature list](/features/) - [Tracker behavior and storage](/docs/add-the-tracker/) - [Order integration and attribution](/docs/revenue/) - [Privacy policy](/legal/privacy/) and [data processing agreement](/legal/dpa/) - [Plain-text documentation index](/llms.txt) and [full documentation text](/llms-full.txt) Product facts reviewed on September 9, 2026. Contact us if you find a discrepancy between a report, documentation and the application. --- Source: https://seean.io/changelog/ # Changelog

What shipped, and when.

2026-09-08

Launch

Overview, Realtime globe, Events, Funnels, Revenue, Campaigns, Performance. Share links, CSV export, Roll-up, onboarding tour, Google and GitHub sign-in, volume-based pricing with a 15-day trial.

Next

On the way

Payment webhooks for Polar, Stripe and Paddle. Self-serve import from Plausible, Fathom and Umami. Team access. Monthly email reports.

--- Source: https://seean.io/docs/add-the-tracker/ # Add the tracker

Install your site's script tag and check that events arrive. Review your consent requirements before enabling collection.

## 1. Copy your snippet Sign in, open your website, and go to **Settings → Tracking**. Your snippet looks like this, with your own site token: ```html ``` Keep both script and API addresses on `https://app.seean.io`, as shown above. An existing snippet using these addresses does not need to change when Seean updates its infrastructure. ## 2. Paste it before `` On every page you want to measure. Single-page apps are handled automatically: route changes count as pageviews. ## 3. Verify Open your site in a new tab, then look at **Settings → Tracking → Setup health**. It flips to "Receiving data" within seconds. The Overview banner disappears after the first pageview. ## What the tracker sends | Field | What it is | |---|---| | path | the page path, no query string | | hostname | the website being measured | | referrer | the browser's referring URL; the collector keeps its hostname only | | timezone | used to estimate country, without IP geolocation | | visitorId, sessionId | random identifiers stored in the browser and sent with events | | campaign | UTM source, medium and campaign when present | | Web Vitals | LCP, INP, CLS, FCP and TTFB; later measurements can update a sample | The collector also uses the request's user agent for browser, operating system and device categories, and may use its language region as a country fallback. Screen dimensions are not sent by the current tracker. The tracker writes a visitor ID to localStorage and session information to sessionStorage. These identifiers are sent to Seean and can link activity from the same browser. The visitor ID has no automatic expiry in the tracker. The tracker does not set cookies. It stops collection for Do Not Track, Global Privacy Control, or the browser opt-out described in [Exclusions](/docs/how-filtering-works/#ignore-your-own-visits). Where consent or an opt-out applies, control whether the script loads through your site's consent mechanism. See [storage and consent](/legal/gdpr/#cookies-storage-and-consent). ## Local development The tracker ignores `localhost` unless you add `data-local` to the script tag. --- Source: https://seean.io/docs/analyze/campaigns/ # Campaigns Open **Campaigns** to compare traffic carrying UTM parameters. ## Create a campaign link Use **Create campaign link** and enter a destination URL, source, medium and campaign. Copy the resulting URL into the campaign you are running. For example: ```text https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=launch ``` The tracker reads source, medium and campaign. It records pathname separately from the query string. ## Performance tabs Group results by Campaigns, Sources, Mediums or Source / medium. The report shows visitors, views, conversions, orders and revenue. Here, **Conversions** means custom-event occurrences, not a separately configured goal or unique converted people. ## Conversion events and revenue The Conversion events table shows custom-event counts within campaign sessions. Orders and revenue depend on campaign attribution supplied with [order data](/docs/revenue/). ## Missing campaign traffic Check the published link, tracker installation and selected period. A campaign label without collected activity will not create a report row. Changes to tagged campaign values can start a new tracker session. --- Source: https://seean.io/docs/analyze/funnels/ # Funnels A funnel measures how visitors progress through an ordered sequence of recorded pageviews and custom events. ## Create a funnel 1. Open **Funnels → New funnel**. 2. Give it a name. 3. Add between two and twelve steps, each a **Page** path or **Event** name. 4. Choose **Create**. Page steps match exact recorded paths; event steps match exact names. Use the values visible in [Pages](/docs/dashboard/pages/) and [Events](/docs/dashboard/events/). A website can have up to 50 funnels. ## Read the result Choose a funnel and date range in the toolbar. The diagram and step table show reached steps, conversions and drop-off. Steps advance in time order for the reported visitor; a sequence can span sessions within the selected data. ## Change the question A funnel analyzes activity already collected; creating it does not install new tracking. Instrument missing custom events before expecting those steps to fill. To use a different definition, create another funnel. Deleting a funnel removes its saved definition, not the website's event history. --- Source: https://seean.io/docs/analyze/performance/ # Performance Open **Performance** for measurements collected from visitors' browsers. ## Metrics | Metric | What it describes | |---|---| | LCP | Loading time for the largest content element. | | INP | Interaction responsiveness. | | CLS | Unexpected layout movement. | | FCP | Time until the first content is painted. | | TTFB | Time until the first response byte. | Choose a metric in the top strip to update the chart and breakdowns. Timing measurements and CLS use different units. ## Percentiles and attention Percentile views describe the sample distribution. A p75 value means 75% of the samples are at or below that value. **Needs attention** orders paths by the selected metric's p75, worst first, and requires at least three samples per path. ## Breakdowns Inspect device, country and browser groups, each with p75 and sample count. Small samples can change sharply; compare equivalent periods before drawing conclusions. ## Measurement limits The tracker uses the Web Vitals library and browser-supported observations. Missing metrics are not zero scores. These are field measurements, not a Lighthouse test, and single-page navigation does not necessarily create a new document measurement. Web Vitals have a separate [usage allowance](/docs/billing/). --- Source: https://seean.io/docs/analyze/realtime/ # Realtime Open **Realtime** from the website sidebar to inspect recent incoming activity. ## Time windows **Online** counts visitors active in the last five minutes. Visitors, Views and Events use the last 30 minutes. These rolling windows differ from a daily or monthly Overview report. ## Globe and controls Markers represent estimated countries, not precise visitor positions. Use zoom in, zoom out, reset or fullscreen to inspect the globe. Marker counts may be smaller than the online count because locations can be missing. ## Activity and breakdowns The activity table includes event, page, referrer, country and time. Other cards summarize countries, pages and referrers for the last 30 minutes. ## No recent traffic Open a tracked page and wait for incoming data. Check **Settings → Tracking → Setup health** and follow [troubleshooting](/docs/support/) if no pageviews arrive. A visitor can be absent because collection is blocked, excluded or paused. --- Source: https://seean.io/docs/analyze/search-console/ # Search Console The **Google search keywords** card imports query data from Google Search Console. ## Connect and sync 1. Open the card on Overview or **Settings → Tracking**. 2. Choose **Connect Search Console** and authorize a Google account with access to your website. 3. Select a property after returning to Seean. 4. Choose a date range and **Sync selected date range**. The integration must be configured for the deployment and is not connectable on the demo website. If the control reports that configuration is unavailable, contact support. ## Read query data The table shows up to 100 queries with clicks, impressions, CTR and position. The subtitle and synced time describe the imported period. Changing the dashboard date range alone does not mean Google data has been synced again. Google may omit anonymized low-volume queries and recent data can take time to finalize. Query totals need not equal every organic visit observed by the tracker. ## Reconnect or disconnect If access expires, reconnect. **Disconnect this website** in Tracking settings removes that website's imported keywords and connection; other website connections remain. Removing Seean from Google Account connections affects all connections using that Google account. --- Source: https://seean.io/docs/availability/ # Feature availability This page separates Seean's current workflows from features you may have used in other analytics products. ## Available workflows Seean includes website management, Overview statistics, Events activity log, Realtime, funnels, campaigns, Web Vitals, Search Console integration, revenue reporting, read-only share links, CSV export, PDF and weekly email reports, Roll-up, account management and billing. Integration availability can depend on deployment configuration. ## Tracking behavior Automatic pageviews use pathnames and supported history navigation. Custom events and 404 markers use the tracker API. Browser opt-out and path/hostname exclusions are documented in [Exclusions](/docs/tracking/exclusions/). Hash-path tracking, automatic scroll-depth events, automatic goal detection and cross-domain visitor handoff are not built-in switches. A scroll action can be instrumented as a custom event, but Seean does not automatically install that instrumentation. There is no managed first-party collection hostname setup in the dashboard. ## Installation platforms Use the [installation guide](/docs/installation-guides/) for HTML, Astro, Next.js and platforms with custom head code. A platform's ability to run the standard snippet does not mean Seean ships a plugin or verifies every version. Bolt, Bubble, Django, Ghost, Google Tag Manager, Kajabi, Laravel, Lovable, Podia, React Router, Replit, Squarespace, Vercel v0, Vue, Wix and WooCommerce do not have dedicated Seean setup guides yet. Use the standard snippet only where that platform supports it, and contact support for an exact installation review. ## Revenue providers The [server order API](/docs/revenue/) accepts verified orders from your integration. Seean does not currently ship native revenue connectors for Creem, Mollie, Paddle, Polar, RevenueCat, Revolut, Shopify, Stripe, Superwall or Whop. Polar handling Seean subscriptions is separate from importing your own customers' orders. ## Features not currently available Self-serve imports from Plausible, Fathom, Umami or DataFast, team invitations and roles, embed widgets, public profiles, monthly reports, traffic alerts, CLI, Raycast and an agent/MCP API are not current self-serve product workflows. The [import guide](/docs/import/) describes the assisted route. Listed gaps are availability notes, not a delivery-date commitment. --- Source: https://seean.io/docs/billing/ # Billing and usage

Same features on every plan. Only the monthly event volume changes.

## Trial 15 days from signup, no credit card, with a 100K-event monthly allowance shared across your websites. When it ends, pick a volume in **Billing**. Existing history remains subject to the [retention policy](/legal/privacy/#storage-and-retention). ## What counts A collected pageview or custom event counts toward the event allowance. Traffic rejected by basic bot filtering or your exclusion rules does not count. Web Vitals use a separate sample allowance of five times the plan's event volume; updates to an existing metric sample do not add a new sample. ## Plans | Events a month | Monthly | Yearly | |---|---|---| | 100K | $6 | $60 | | 500K | $14 | $140 | | 1M | $24 | $240 | | 3M | $49 | $490 | | 5M | $79 | $790 | | 10M | $149 | $1,490 | Prices exclude local taxes. Yearly billing includes two months free. Payments are handled by Polar; invoices and cancellation live in the customer portal linked from Settings → Billing. ## At the limit Collection pauses when its allowance is reached. Allowances reset monthly; a plan upgrade can increase them. An expired trial also stops collection until a paid plan is active. Rejected events are not stored for later replay. Existing records remain subject to the retention policy. --- Source: https://seean.io/docs/custom-events/ # Custom events

Anything you can attach a click handler to can be an event.

```js window.seean.track("signup"); window.seean.track("download", { file: "pricing.pdf" }); ``` Events show up on the Overview (Events card), in the [Events activity log](/docs/events-activity-log/), in funnels as steps, and in campaign conversion reports. Properties are sent with the event, but the current activity-log table does not display them. ## Naming Use short, stable names: `signup`, `cta_click`, `newsletter_signup`. Renaming later splits your history. ## 404 pages Send `window.seean.track("pageview", { status: 404 })` from your not-found page and it appears under **Pages → 404s**. The marked 404 call is an additional pageview, not an update to the automatic pageview. See [404 tracking](/docs/tracking/404/) before using it. --- Source: https://seean.io/docs/dashboard/ # Dashboard overview Choose a website from **Your sites** or the site switcher, then open **Overview**. Reports apply to that website. Select the **Seean** wordmark to return to the homepage. ## Read the overview The top strip shows [visitors, visits, views, bounce rate, session time and net revenue](/docs/dashboard/kpis/). Select Visitors, Views or Net to change the chart series. The chart also offers Trend and Conversion peak views. Below the chart, cards break down pages, sources, locations, devices and custom events. Google search keywords are available after [connecting Search Console](/docs/analyze/search-console/). ## Take the guided tour Open your workspace menu in the sidebar and choose **Show tour** to walk through the Overview. Use **Next** and **Back** to move between steps, or **Skip** / **Close** to finish. The tour follows your light or dark theme. ## Set a period Use the date control in the top bar. Where available, **No comparison → Previous period** adds the preceding period. See [date ranges and filters](/docs/dashboard/filters/) for how filtering changes a report. ## Inspect a result Click a supported breakdown row to filter the Overview. Selected filters appear above the KPIs; remove one with its close button. Open **Events** in the sidebar for the [individual activity log](/docs/events-activity-log/). ## Understand report state A calculation notice can show that results are being prepared or refreshed. Use the displayed computed time and period when checking whether two reports describe the same data. An empty report can mean no matching data, an uninstalled tracker or paused collection; follow [setup troubleshooting](/docs/support/). --- Source: https://seean.io/docs/dashboard/devices/ # Devices Open **Overview → Devices** to compare the environments visitors use. ## Tabs **Browsers** groups browser families, **OS** groups operating systems, and **Devices** groups categories such as desktop, mobile and tablet. Click a row to filter the Overview by that dimension. ## How classification works Categories are inferred from request user-agent information. A modified, reduced or unrecognized user agent can produce an unknown or imperfect classification. The tracker does not send screen dimensions. ## Investigate an issue Use the same device or browser group when checking [Performance](/docs/analyze/performance/). A large traffic share identifies a useful testing target; it does not itself establish a performance problem. --- Source: https://seean.io/docs/dashboard/events/ # Events on the dashboard The **Overview → Events** card summarizes custom events in the selected report. ## Count and share **Count** shows occurrences per custom event name. **Share** expresses each name as a percentage of the total custom-event count. A custom event can occur more than once for the same visitor; counts are not unique people. ## Filter by event Click a row in Count to select that event name. The Overview uses matching sessions as its filter scope. Remove the event chip above the KPIs to clear it. ## Inspect individual records Open **Events** from the sidebar for the [activity log](/docs/events-activity-log/). This is separate from the summary card. To add an event, follow [custom events](/docs/custom-events/); to compare a sequence, use [funnels](/docs/analyze/funnels/). --- Source: https://seean.io/docs/dashboard/filters/ # Date ranges and filters Use the date control in the dashboard toolbar. The selected range is carried in the URL. ## Select a range Choose a preset or a custom interval. Changing a range recalculates the active report and resets paginated views such as the activity log. Controls available on a page reflect that report; Realtime has its own short rolling windows. ## Compare with the previous period Where the comparison control is available, choose **Previous period**. It compares against the interval immediately before the selected one. This is different from choosing an arbitrary second date range. ## Filter matching sessions Overview filters include page, entry, exit, referrer, country, browser, operating system, device and custom-event name. A matching event selects the session; other activity from that session can still contribute to the report. Entry, exit and source describe the session. This explains why filtering by a path can still show other pages visited in matching sessions. ## Clear and share a filter Remove filter chips above the KPIs. The URL preserves range and filter parameters for returning to the same view, but does not grant access to someone else. Use a [share link](/docs/sharing/) when you intend to publish a read-only dashboard. --- Source: https://seean.io/docs/dashboard/kpis/ # KPIs The Overview summarizes the selected website, period and filters. ## Metric definitions | Metric | What Seean counts | |---|---| | Visitors | Distinct reported visitor identifiers in the selected data. | | Visits | Distinct visitor/session combinations. | | Views | Events named `pageview`. | | Bounce rate | Share of sessions with at most one pageview. | | Session time | Average time between the first and last recorded activity in a session. | | Net | Accepted order amounts minus full refunds in the selected report. | ## Visitors and sessions The tracker stores a random visitor identifier in localStorage and session information in sessionStorage. A new session starts after 30 minutes of inactivity, when the clock moves backward, or when a different tagged campaign starts. Different browsers or cleared storage can create separate visitor identifiers. These numbers count observed activity; they are not a census of people. A visitor who blocks collection is not included. ## Interpret time and bounce A session with one recorded activity has zero measured duration. Seean cannot determine how long someone stayed after their final recorded activity. A custom event does not add a pageview, so a session may contain custom events and still have only one view. ## Compare results The previous-period comparison uses the selected period's preceding interval. Use the same range and [filters](/docs/dashboard/filters/) when comparing reports. [Revenue setup](/docs/revenue/) is required before Net can represent your orders. --- Source: https://seean.io/docs/dashboard/locations/ # Locations **Overview → Locations** groups visitors by estimated country. Clicking a country applies a country filter to the Overview. ## Where estimates come from Seean uses browser-reported timezone or language information to estimate country. It does not use visitor IP geolocation. Multiple countries can share timezones or language settings, so a result can be missing or inaccurate. ## Realtime globe [Realtime](/docs/analyze/realtime/) places markers using estimated countries. These are representative positions, not a visitor's physical location. ## Available detail Region, city and precise coordinates are not collected by the current tracker. Country reports should not be used to identify a person or verify where a particular visitor lives. Compare country totals within the same period and filter scope. --- Source: https://seean.io/docs/dashboard/pages/ # Pages Open **Overview → Pages** to see how paths contribute to the selected period. ## Tabs | Tab | Meaning | |---|---| | Top | Unique visitors recorded on each page path. | | Entered | First recorded path of sessions in the selected data. | | Exited | Last recorded path of sessions in the selected data. | | 404s | Recorded pageviews marked with `status: 404`. | Entry and exit describe recorded activity in the report window. They do not prove that the visitor closed the browser on that page. ## Filter the dashboard Click a Top, Entered or Exited row to apply the corresponding path filter. Remove the chip above the KPIs to return to the unfiltered report. A session matching a page filter contributes its session activity; see [filter scope](/docs/dashboard/filters/). ## Paths and missing pages The tracker records pathname without query strings or fragments. Different query values do not create separate page rows. Missing pages appear only after their tracker runs; automatic server error detection is not included. See [404 tracking](/docs/tracking/404/). --- Source: https://seean.io/docs/dashboard/sources/ # Sources Open **Overview → Sources** to inspect how visitors reached the website. ## Source tabs | Tab | What it groups | |---|---| | Referrers | Referring hostnames, with Direct when no external referrer is available. | | Channels | Campaign medium where supplied, otherwise a classification such as Search, AI, Social or Referral. | | AI | Recognized referring hostnames from AI services. | | Hostnames | Reported website hostnames receiving traffic. | | Bots | Bot labels present in accepted records. | ## Apply a referrer filter Click a Referrers or AI row to filter the Overview. The source is a hostname, not the full referring page URL. A missing referrer can result from browser policies or a direct visit; Direct does not identify one particular acquisition method. ## Limits Classification depends on the recorded values. Traffic from an AI service that sends no recognizable referrer will not be identified as AI. [Bot handling](/docs/how-filtering-works/) is limited and does not establish that every accepted visitor is human. For deliberate link tagging, use [campaigns](/docs/analyze/campaigns/). Read the [AI referral guide](/guides/ai-referral-traffic/) for interpretation. --- Source: https://seean.io/docs/data/export/ # Export data Open **Settings → Export** on the website you want to export, then select the report period. ## Events CSV Choose **Download events CSV**. The file contains timestamp, event name, path, referrer, country, browser, operating system, device, visitor and session identifiers, and UTM source, medium and campaign. Custom properties are not columns in the current CSV. ## Orders CSV Choose **Download orders CSV** for timestamp, amount, currency, product, order kind, refund state, visitor identifier and supplied attribution fields. Amounts are recorded in cents. ## Download progress Exports fetch records in pages and show progress. Keep the page open until completion. If a download is cancelled or fails, read the displayed message and retry; an incomplete export should not be treated as a complete archive. The selected site and range determine the export. Overview filter chips are not additional CSV export filters. ## Summary reports For a readable summary instead of raw records, use [PDF and email reports](/docs/reports/). Export data before deleting a website or account. --- Source: https://seean.io/docs/events-activity-log/ # Events activity log Open **Events** in a website's sidebar to inspect individual records rather than summary totals. ## Activity log tabs | Tab | Records shown | |---|---| | All | Pageviews and custom events together. | | Views | Pageview records only. | | Events | Custom-event records only. | The summary shows total events and event types for the report period. It is a period summary, not a count of the rows currently loaded in the active tab. ## Table columns | Column | Content | |---|---| | Event | Pageview or the custom event name. | | Page | Path where the event was recorded. | | Referrer | Recorded referring hostname, or a dash when absent. | | Country | Country name and flag where an estimate exists. | | Time | Relative time of the record. | The current table does not display custom properties or offer an event-name selector. To filter summaries by a name, use the [Overview Events card](/docs/dashboard/events/). ## Load more The first page contains up to 40 records, newest first. **Load more** fetches another 40. Switching tab, website or date range starts a new paginated view. ## Refresh and time range Use the date control above the page. The log keeps a stable time window while you browse so routine refreshes do not discard pages. **Refresh activity** appears when a newer window is available. ## Export the records For a CSV, open **Settings → Export → Download events CSV**. The [export guide](/docs/data/export/) lists fields and explains date-range selection. --- Source: https://seean.io/docs/how-filtering-works/ # Bot identification and filtering Basic filtering discards recognized crawler signatures and common automation clients before collection. The tracker also stops in browsers reporting automation. These checks are always active; they do not detect every bot. Detection matches known client names such as Googlebot, GPTBot, HeadlessChrome and curl as complete tokens. A device model containing the letters “bot” is not enough to discard a visit. Unrecognized automation can still pass these basic checks. ## What appears in reports **Sources → Bots** groups labels present in accepted records. Historical labelled records may remain after filtering changes. A missing label is not proof that the visitor is human. ## Limits User agents can be spoofed and some automated traffic resembles ordinary browsers. Seean does not use visitor IP geolocation or prove whether a visitor uses a VPN. Traffic that never runs the tracker or sends a collection request cannot appear in the reports. ## Usage and exclusions Discarded requests do not count toward event usage. Accepted pageviews and custom events count, including any accepted event with a bot label. Use [browser, path and hostname exclusions](/docs/tracking/exclusions/) to exclude your own new activity. Rules do not rewrite previously collected history. ## Ignore your own visits Open **Settings → Exclusions** for browser opt-out commands and path or hostname rules. Follow the [complete exclusions guide](/docs/tracking/exclusions/) for exact matching behavior and how to resume collection. --- Source: https://seean.io/docs/import/ # Import your data

Switching should not mean starting from zero.

## Assisted import Contact hello@seean.io with your Seean site domain and the source tool before transferring an export. The assisted import route is available during the trial; support will confirm the format and transfer process. Keep an original copy of your export. ## Self-serve availability Self-serve import for Plausible, Fathom and Umami exports is on the [changelog](/changelog/) roadmap. DataFast is not a current import connector. There is no upload or automatic history-merge screen in Settings. ## Export from Seean Exporting *out* of Seean is self-serve on every plan: **Settings → Export**. --- Source: https://seean.io/docs/index/ # Documentation

From your first pageview to understanding what brings people back. Find the guide for the task in front of you.

## Start collecting 1. [Create your account and website](/docs/manage/websites/). 2. [Install the tracker](/docs/add-the-tracker/) using your site's snippet. 3. Open your website, then check **Settings → Tracking → Setup health**. 4. [Read your dashboard](/docs/dashboard/) once pageviews arrive. ## Explore your traffic Understand [KPIs](/docs/dashboard/kpis/), [pages](/docs/dashboard/pages/), [sources](/docs/dashboard/sources/), [locations](/docs/dashboard/locations/) and [devices](/docs/dashboard/devices/). Use the [activity log](/docs/events-activity-log/) for individual records, or [Realtime](/docs/analyze/realtime/) for recent activity. ## Measure outcomes Record [custom events](/docs/custom-events/), build [funnels](/docs/analyze/funnels/), compare [campaigns](/docs/analyze/campaigns/), and [send orders](/docs/revenue/) to connect traffic with revenue. ## Work with your data [Export CSVs](/docs/data/export/), [prepare PDF and weekly reports](/docs/reports/), [share a dashboard](/docs/sharing/) or use [Roll-up](/docs/manage/rollup/) across your websites. ## Find the right guide Use **Find a guide** or press **F** to search guide titles and content. On mobile, open **Documentation → Menu**. Every article includes section links and previous/next navigation. [Installation guides](/docs/installation-guides/) cover the supported setup patterns. [Feature availability](/docs/availability/) distinguishes built-in features from custom integrations and features that are not available. For help, [contact support](/docs/support/). --- Source: https://seean.io/docs/installation-guides/ # Installation guides

The snippet is the same everywhere; only the place you paste it changes.

## Plain HTML Paste the snippet before `` in every page, or in the shared header include. ## Next.js (App Router) Add it to `app/layout.tsx` inside `` using `next/script` with `strategy="afterInteractive"`, or paste the tag directly. Route changes are tracked automatically. ## Astro Put the tag in your base layout's ``. Add `is:inline` so Astro leaves it untouched. ## WordPress Appearance → Theme File Editor → `header.php`, before ``. Or use a "header scripts" plugin if you prefer not to edit theme files. ## Shopify Online Store → Themes → Edit code → `theme.liquid`, before ``. ## Webflow Project settings → Custom code → Head code. ## Framer Site settings → General → Custom code → Start of ``. ## Verify Settings → Tracking → Setup health shows "Receiving data" once the first pageview arrives. --- Source: https://seean.io/docs/manage/account/ # Account and sign-in Use the white **Sign in** button in the [Seean homepage](/) header to access an existing account, or go directly to [app.seean.io](https://app.seean.io/login). **Start free for 15 days** opens signup for a new account. On mobile, the header shows **Sign in** and **Try free** together beside the logo. ## Sign-in methods Use email and password, Google or GitHub through the available sign-in controls. Password signup requires 12–128 characters. If an external sign-in is cancelled or you are offline, return to the form and retry. If Seean asks you to sign in again after a service update, use your existing sign-in method. Your account and websites stay linked to that account. ## Verify email Enter the eight-digit verification code sent to your account email. Codes expire after ten minutes. Billing and emailed reports require a verified account email. If a code is invalid or expired, request a new one through the sign-in flow. ## Reset a password Choose **Forgot password?**, submit your email and follow the reset-code form. For account privacy, the form does not confirm whether an email belongs to an account. ## Delete your account Open account settings. Cancel an active subscription through [Billing](/docs/billing/) first and export data you need. Account deletion requires typing **DELETE** and removes access to every website in that account; associated data is then deleted. Encrypted recovery copies follow the separate retention schedule in the [privacy policy](/legal/privacy/#storage-and-retention). This is different from deleting just one website. For unresolved access problems, [contact support](/docs/support/) without sending passwords or verification codes. --- Source: https://seean.io/docs/manage/reduce-usage/ # Reduce usage Use Billing to compare monthly usage with the plan allowance. ## What to review Each accepted pageview and custom event uses event allowance. Web Vitals use a separate sample allowance. Review [billing and usage](/docs/billing/) before changing collection. ## Avoid duplicate collection Install one tracker snippet per page. In single-page apps, route changes are handled automatically; do not also send a pageview on every route unless you deliberately replace that behavior. Keep custom events tied to meaningful actions. A handler attached twice can send two events. Avoid emitting an event on every scroll movement or animation frame. ## Exclude test activity Use [traffic exclusions](/docs/tracking/exclusions/) for your own browser, admin paths or staging hostnames. Rules apply to new collection and do not remove existing history. ## Reaching the allowance Collection pauses at the limit. Upgrade the event tier or wait for the monthly reset; rejected events are not buffered for later recovery. Removing old data does not recreate already consumed allowance. --- Source: https://seean.io/docs/manage/rollup/ # Roll-up Open **Roll-up** to compare websites without switching between them. ## Combined totals The top strip combines visitors, visits, views, bounce rate, session time and net revenue for the selected range. Visitor counts are combined website counts, not deduplicated identities across domains. The same person can contribute to several websites. ## Website table Each row shows the site's counts and rates. Click its domain to open that site's Overview. ## Loading and dates Use the report date control to change the common period. Sites may be calculated separately; read calculation notices while summaries are being prepared. Use the same date range on an individual site when reconciling its row with the Overview. Use [Your sites](/docs/manage/websites/) for adding a website or checking whether its tracker has started sending data. --- Source: https://seean.io/docs/manage/websites/ # Websites and settings **Your sites** lists the websites in your account. Each has its own tracking token, settings and analytics. ## Add a website Choose **Add website**, enter its domain and name, then install its generated snippet. Accounts support up to 30 websites. New sites show a waiting state until a pageview arrives. Site cards show visitors from the last 24 hours and a recent online count. Open a card to see that website's Overview. ## Change settings **Settings → General** changes the website name and domain. **Tracking** contains the snippet, token rotation, setup health, revenue integration and Search Console. Other tabs manage exclusions, sharing, exports, billing and deletion. ## Rotate a tracking token In **Tracking**, choose **Rotate token** and confirm. The old snippet stops working. Replace the script's site token everywhere you installed it and verify incoming pageviews again. This public tracking token is separate from the private revenue key. ## Delete a website Export anything you need first. **Settings → Danger zone → Delete website** removes the site and starts deletion of its associated data. This cannot be undone. If a saved URL no longer opens a website, check that you are signed into the owner account and that the site still exists. --- Source: https://seean.io/docs/reports/ # PDF and weekly reports Open **Settings → Export → Reports & export** for the selected website. ## Download a PDF 1. Choose the report date range. 2. Select **Prepare PDF report**. 3. Wait for preparation to finish. 4. Choose **Download prepared PDF**. The displayed prepared period identifies the data in the file. Selecting a new range requires preparing its report. ## Email a report Choose **Email PDF to me** to queue the current report for your account email. Your email must be verified. Recent email reports show delivery state or an error; queued or provider-accepted is not the same as confirmed inbox delivery. ## Weekly delivery Enable **Send me weekly reports** for your own website. Seean schedules a seven-day summary and PDF for Monday at 09:00 Istanbul time. Turn the checkbox off to stop future weekly delivery. Demo websites do not support scheduled weekly delivery. You can still use the available sample download or email controls. ## Other schedules and alerts Monthly reports and automatic traffic spike/drop alerts are not currently exposed as product features. See [availability](/docs/availability/). --- Source: https://seean.io/docs/revenue/ # Revenue attribution

Connect verified orders to the traffic and campaigns behind them.

Seean reports revenue using the landing page, converting page, source and campaign fields supplied with your orders. Missing attribution fields are shown as unattributed; they are not automatically reconstructed from a visitor's history. The current order API accepts USD amounts in cents and full-order refunds. Partial refunds and other currencies are not supported. ## Sending orders Open your website's revenue setup to create an order API secret. Use your server or payment webhook handler to send verified orders to the displayed endpoint. Keep the secret on your server; do not include it in browser code. This is a custom integration, not an automatic connection to every checkout provider. The tracker exposes `window.seean.attribution()` with the visitor ID, landing path, converting path and campaign. Pass those fields to your server with the order. First source, last source, touch count and time to purchase must be supplied separately if you want to report them. Only forward payment events after verifying them with your provider. ## What you see - **Attribution breakdown**: supplied landing pages, converting pages, first source and last source - **Revenue by product**: orders, revenue, share - **Touches before purchase**: the touch count supplied with each order; absent counts do not establish the visitor's actual journey - **Top purchase paths**: the supplied landing and converting page pairs, not a reconstruction of every page visited ## Revenue report Open **Revenue** in the website sidebar. The top strip shows gross, refunds, net, attributed revenue, attribution rate and time to buy. Below it, inspect attribution breakdowns, products, supplied touch counts, purchase path pairs and the latest 20 orders. These values describe the order fields your integration sends. ## Integration reference Follow [Order API and refunds](/docs/revenue/api/) for payloads, server-key handling, full refunds and retry behavior. [Provider availability](/docs/availability/#revenue-providers) explains the distinction between a custom API integration and a native checkout connector. --- Source: https://seean.io/docs/revenue/api/ # Order API and refunds Use **Settings → Tracking → Revenue integration** on your own website. ## Create a server key Choose **Create revenue key**. Copy the secret once and save it in your server environment as `SEEAN_REVENUE_SECRET`. Use the endpoint displayed under Integration examples. The site ID in the payload is the website's internal ID, not its tracking token. Send `Authorization: Bearer ` and `Content-Type: application/json`. Never put this key in browser code. ## Order payload After verifying payment with your provider, send: ```json { "siteId": "YOUR_SITE_ID", "type": "order", "externalId": "order-123", "amount": 2900, "currency": "USD", "product": "Your product", "kind": "one-time" } ``` Amounts are USD cents. Subscription orders can use `"kind": "subscription"`. Use a stable external order identifier and include optional attribution fields described in the [overview](/docs/revenue/). ## Full refunds Send to the same endpoint: ```json { "siteId": "YOUR_SITE_ID", "type": "refund", "externalId": "order-123" } ``` Other currencies and partial refunds are rejected. ## Retries and key rotation Identical orders and refunds with the same externalId are deduplicated. Conflicting order data returns 409. Retry 429 or 503 later with the same payload and identifier. Rotating the revenue key invalidates the previous key immediately. Update the server integration before expecting later orders to arrive. This is a custom server integration; provider webhook verification remains your responsibility. --- Source: https://seean.io/docs/sharing/ # Shared dashboards Share links let someone view a website's read-only Overview without signing in. ## Create a link 1. Open **Settings → Sharing**. 2. Choose **Create link**. 3. Copy the generated URL and send it to the intended recipient. Anyone with that URL can use it. Treat it as access to the shared analytics rather than a public site address. ## What recipients can see The share page shows the read-only Overview for the linked website and its available date ranges. It does not grant settings access or ownership of the account. A share link is not a team invitation. Team roles and per-person access are not currently available. ## Revoke access Choose **Revoke** beside a link and confirm. That URL stops granting access; other share links remain independent. If a link reaches an unintended audience, revoke it and create a replacement for the intended recipients. See [feature availability](/docs/availability/) for embed widgets and public profiles. --- Source: https://seean.io/docs/support/ # Support and troubleshooting Email [hello@seean.io](mailto:hello@seean.io) with the website domain, affected screen, selected period and what you expected to see. ## No pageviews arrive 1. Confirm the deployed page includes the correct site token and API origin from Settings. 2. Check that the browser can load `/k.js` and send the collection request. 3. Check consent controls, browser privacy preferences, blockers and configured exclusions. 4. Check whether the trial expired or usage reached its allowance. 5. Open **Settings → Tracking → Setup health**, which checks the last 30 minutes. Do not rotate a token as a first troubleshooting step: rotation invalidates existing installations. ## 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 five- and thirty-minute windows; Overview normally covers a longer interval. Country estimates and Google query imports have their own limits. ## 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. --- Source: https://seean.io/docs/tracking/404/ # 404 tracking Seean can report not-found pages when the page sends a marked pageview. ## Send a marker After the tracker is ready on your not-found page: ```js window.seean.track("pageview", { status: 404 }); ``` The record uses the current pathname. It appears under **Overview → Pages → 404s**. ## Avoid misleading counts The normal tracker also sends an automatic pageview on page load. Sending the marked call adds another pageview; it does not update or replace the automatic record. Account for this when interpreting total views and usage. ## What this does not detect Seean does not crawl your site for broken links or inspect every HTTP response. If a failed page never loads the tracker or never sends the marker, it will not appear in the 404 report. Use the [activity log](/docs/events-activity-log/) to inspect recorded paths and the [export](/docs/data/export/) when you need the underlying rows. --- Source: https://seean.io/docs/tracking/exclusions/ # Filter your visits and exclusions Open **Settings → Exclusions** to keep testing and internal activity out of new collection. ## Ignore your browser On the tracked website, run this in that site's browser console, then reload: ```js localStorage.setItem('seean_ignore', 'true'); ``` To resume, remove the preference and reload: ```js localStorage.removeItem('seean_ignore'); ``` This affects that browser and website origin. Running it on app.seean.io does not set the preference on your own site. Do Not Track and Global Privacy Control also stop collection. ## Exclude a path Add an exact path such as `/admin`, or a child-path prefix such as `/admin/*`. The latter matches children but not `/admin` itself. Paths are case-sensitive; omit query strings and fragments. ## Exclude a hostname A hostname rule matches that hostname and its www alias, not every other subdomain. For example, excluding `staging.example.com` does not exclude `example.com`. On save, a pasted URL becomes a lowercase hostname without its trailing dot or first `www.` prefix. The saved name shown in the list is what the rule matches, together with one added `www.` prefix. For example, a saved `www.example.com` matches `www.example.com` and `www.www.example.com`; it does not match `example.com`, `other.www.example.com` or `www.www.www.example.com`. ## Scope and limits Each website supports up to 50 rules. Matching new pageviews, custom events and Web Vitals are discarded before usage counting. Existing data stays in history. Remove a rule to allow future matching traffic again. Use **Remove** beside the saved rule. This removes only that entry and leaves other hostname or path rules in place. Removing the same entry again has no further effect. If a request fails, retry after the error; your existing rules remain unchanged. Basic bot filtering is always active; it is not proof of complete bot detection. See [bot handling](/docs/how-filtering-works/). --- Source: https://seean.io/docs/tracking/script/ # Script and tracking options Use the generated snippet in **Settings → Tracking**. The tracking token identifies a website; it is not an account password or order API secret. ## Script attributes | Attribute | Purpose | |---|---| | `data-site` | Required public website collection token. | | `data-api` | API origin used for the collection endpoint. Use the generated value. | | `data-local` | Allows local development on localhost or 127.0.0.1. | | `defer` | Loads the script without blocking HTML parsing. | ## Navigation The tracker sends an initial pageview, observes history pushState, replaceState and popstate, and handles restored pages. It deduplicates repeated page notifications for the same session and pathname. Query strings and hash fragments are not distinct page paths. ## Public methods `window.seean.track(name, properties)` sends a custom event. `window.seean.attribution()` returns visitor and landing/converting path information for a server-side order integration. Call these methods only after the tracker has loaded. Optional chaining can avoid an exception if collection is blocked, but it also means the event is not sent. ## Storage and domains Visitor identifiers use localStorage; sessions use sessionStorage. Storage is scoped to the website origin, so subdomains and separate domains do not automatically share one visitor identity. There is no cross-domain identity handoff. Use a separate site entry and token when you need separate reports. Review [exclusions](/docs/tracking/exclusions/) and [privacy](/legal/privacy/) before installing. Use [feature availability](/docs/availability/) for unsupported tracking modes. --- Source: https://seean.io/features/ # Every feature, on every plan

No feature gates and no enterprise tier. Each section links to the docs that explain how it works.

See how these reports fit together in the [website analytics overview](/web-analytics/), or [try the live demo](https://app.seean.io/s/demo). ## Overview One screen with visitors, visits, views, bounce rate, session time and net revenue, a trend chart with previous-period overlay, and breakdowns for pages, sources, locations, devices and events. Click any row to filter the whole dashboard. ## Realtime A live globe of recent visitors, the pages they view and estimated countries. Locations come from reported country, timezone or browser language; they are not precise visitor locations. ## Funnels Build funnels from the pages and events you already collect. See visitors, conversion and drop-off per step, with a band chart that makes the leaks obvious.

Revenue attribution

Connect your checkout to send USD orders, full refunds and attribution details. Reports group revenue by the pages, sources and campaign information supplied with each order. Missing attribution is shown as unattributed. Partial refunds and other currencies are not currently supported. ## Campaigns UTM reports by campaign, source and medium with visitors, views, conversions, orders and revenue. A link builder composes tagged URLs for you. ## Web Vitals and performance LCP, INP, CLS, FCP and TTFB collected from real visitors. p50, p75 and p95 trends with good and poor thresholds, and the pages that need attention. ## Events Custom events with one line of JavaScript. Counts, shares and a full activity log. Read the [custom event setup](/docs/custom-events/) and [AI referral measurement guide](/guides/ai-referral-traffic/) to connect incoming visits to useful actions. ## Share links Public, read-only dashboards you can hand to a client or post in a team channel. Revoke them anytime. ## Export Event and order records for a selected date range as CSV, on every plan. Exports include the reporting fields documented in the dashboard; they are not a complete backup of all data types. ## Roll-up All your websites in one view with per-site numbers for any range. ## Privacy The tracker uses browser storage for visitor and session identifiers rather than cookies. Analytics records do not include a visitor IP field. Consent requirements depend on your location and use; see [storage and consent](/legal/gdpr/#cookies-storage-and-consent). --- Source: https://seean.io/guides/ai-referral-traffic/ # How to measure AI referral traffic AI referral traffic means a browser visit that follows a link from an AI service, such as ChatGPT, Perplexity, Claude or Copilot. It is different from an AI bot fetching a page or an AI answer mentioning your brand. Website analytics measures visits and actions; it does not count every answer in which your site appears. ## Three different signals | Signal | Where to measure it | What it tells you | |---|---|---| | A browser follows a cited link | Website source reports, when a referrer is present | An attributable visit arrived | | An AI crawler requests a page | Server or CDN request logs | A request was made; it does not prove a citation | | An AI answer cites your page | The answer itself or an available publisher report | That particular answer referenced the page | Keep these measures separate. Adding them together as “AI traffic” mixes people, automated requests and answer exposure. ## 1. Find the sources that actually arrive In Seean, open your website's Overview and inspect the source breakdown. Look for hostnames actually recorded in your data. Depending on how a service opens links, these may include `chatgpt.com`, `perplexity.ai`, `claude.ai` or `copilot.microsoft.com`. This is an example list, not a guarantee that every service sends a referrer. Select a source row to filter the dashboard. Inspect which landing pages receive visits and which actions follow. A service can omit the referrer, or a person can copy a URL into a new tab. Those visits cannot reliably be assigned to an AI service from the referrer alone. ## 2. Measure useful actions Choose a small number of outcomes before evaluating a source: a completed signup, a requested demo or a verified purchase. Send a custom event only when the action succeeds. For example, after a signup has completed and the Seean tracker is available: ```js window.seean?.track("signup"); ``` Do not send the event merely because a person opened the signup page. Build a funnel using the landing page and the completed event to see the difference between an interested visit and an outcome. See [custom events](/docs/custom-events/). ## 3. Tag links you control For a link in a resource you publish, use stable UTM values that describe the actual distribution. For example, a newsletter announcing an AI referral guide could use: ```text https://example.com/guides/ai-referrals/?utm_source=newsletter&utm_medium=email&utm_campaign=ai_referral_guide ``` Tagging a newsletter as `chatgpt` would manufacture an AI source, not measure one. You generally cannot control the links generated in another service's answers. Treat observed referrers and your own campaign tags as different sources of evidence. ## 4. Connect revenue carefully If a visit leads to a sale, your server can send the verified order and attribution details to Seean. Use [the order integration](/docs/revenue/) to report the fields your checkout supplies. Missing fields stay unattributed; the dashboard does not infer an AI source or reconstruct the full journey. Compare AI-referred visits, successful events and orders over a consistent date range. With only a few visits, inspect the actual journeys and wait for more evidence before changing your acquisition budget. ## 5. Review crawling separately Use your hosting or CDN logs to check crawler requests to public pages, robots.txt and your sitemap. A JavaScript analytics tracker is not a complete crawler log: many crawlers do not execute it. A user-agent name can also be copied, so use the provider's published verification guidance before treating a request as authentic. OpenAI documents [OAI-SearchBot and its other agents](https://developers.openai.com/api/docs/bots). Perplexity publishes [crawler purposes and IP ranges](https://docs.perplexity.ai/docs/resources/perplexity-crawlers). Google explains that [AI search features use the same underlying SEO foundations](https://developers.google.com/search/docs/appearance/ai-features). ## A weekly review that stays useful Record the date range, observed source hostnames, landing pages, successful events and attributable orders. Compare the previous period using the same definitions. Keep a separate citation sample with the exact question, service, date and cited URL. A sampled answer describes that observation, not your universal position in AI search. [Explore Seean's analytics](/web-analytics/) · [Install the tracker](/docs/add-the-tracker/) · [Try the demo](https://app.seean.io/s/demo) --- Source: https://seean.io/legal/dpa/ # Data processing agreement

Effective 8 September 2026. This DPA forms part of the terms of service and applies to the hosted Seean service at app.seean.io. No signature is needed; accepting the terms accepts this DPA. We will sign a copy for your records on request.

## 1. Parties and roles This agreement is between you, the customer ("controller"), and NesDesign LLC, a Wyoming limited liability company ("processor", "we"). For analytics data collected from your websites you determine the purposes and means of processing and we act only on your instructions. For our own account and billing records we act as controller; that processing is described in the [privacy policy](/legal/privacy/). ## 2. Subject matter We process personal data only to provide, secure and support the Seean web analytics service as described in the terms and in your configuration of it. ## 3. Duration Processing lasts for as long as your account is open, and afterwards only for the period needed for deletion under clause 12. ## 4. Categories of data subjects Visitors to the websites on which you install the tracker, and the people you authorise to use your account. ## 5. Categories of personal data Analytics data includes page paths, hostnames, referring hostnames, timezone, campaign tags, browser and device categories, Web Vitals measurements, and random visitor and session identifiers. The tracker sends the referrer URL available to the browser; only its hostname is retained in analytics records. The request's user agent and language may be processed to derive browser categories and country estimates. The tracker does not send screen dimensions or use device fingerprinting. Visitor and session identifiers are stored in localStorage and sessionStorage rather than cookies and sent with events. The visitor ID has no automatic expiry in the tracker and may persist across visits. These identifiers are pseudonymous and may constitute personal data. Analytics records do not include a visitor IP field; network and hosting services may nevertheless process IP addresses while handling requests. Two optional features are under your control and may carry personal data if you choose to send it: custom event properties, and order data used for revenue attribution. You must not send special categories of personal data as defined in Article 9 of the GDPR. For account users: email address, sign-in method, and authentication metadata. ## 6. Processing instructions We process personal data only on your documented instructions, which are given by the terms, this DPA and your use of the service, unless law requires otherwise, in which case we will tell you before processing unless the law forbids it. We will tell you if, in our opinion, an instruction infringes data protection law. ## 7. Confidentiality Access to personal data is limited to those who need it to operate or support the service. Everyone with access is bound by a written confidentiality obligation that survives the end of their engagement, and access is withdrawn when it is no longer needed. ## 8. Security measures We maintain technical and organisational measures appropriate to the risk of the processing, and we review them as the service changes. They include: - personal data encrypted in transit with TLS, and encrypted at rest by the infrastructure providers named in clause 9; - access granted on a least-privilege basis and protected by multi-factor authentication; - production separated from development, with no production personal data used in development; - rate limiting and input validation on the endpoints that receive events; - analytics records that omit a visitor IP field, while network services may process IP addresses; - dependencies kept current and security updates applied without undue delay; - backups encrypted and restricted to service recovery. We never receive or store payment card numbers. We do not describe the detail of our controls publicly; a customer with a legitimate need may request further information under clause 14. ## 9. Sub-processors You give general authorisation for the sub-processors below. We remain responsible for their performance. | Sub-processor | Purpose | |---|---| | Convex, Inc. | Application database and backend | | Hetzner Online GmbH | Application hosting, database and backend | | Cloudflare, Inc. | DNS, web traffic delivery and encrypted recovery backup storage | | Polar Software Inc. | Payments and invoicing, merchant of record | | Resend, Inc. | Transactional email delivery | | Google LLC | Sign-in with Google, and Search Console data where you connect it | | GitHub, Inc. | Sign-in with GitHub | For current processing locations and data-residency enquiries, contact [hello@seean.io](mailto:hello@seean.io). This provider list does not establish a particular hosting region or an EU-only processing guarantee. Sign-in providers process data only for customers who choose them. We will announce a new or replacement sub-processor by email at least thirty days before it starts processing; if you object on reasonable data protection grounds within that period you may terminate the affected part of the service and receive a refund for the unused period. ## 10. International transfers Where personal data of people in the European Economic Area, the United Kingdom or Switzerland is transferred to a country without an adequacy decision, the transfer is made under the European Commission's standard contractual clauses (Decision 2021/914), module two where you are a controller and we are your processor, and module three where a sub-processor is engaged, with the United Kingdom International Data Transfer Addendum where the United Kingdom GDPR applies. The clauses are incorporated by reference; the annexes are populated by clauses 2, 4, 5, 8 and 9 of this DPA, and the parties' contact point is the address in clause 17. ## 11. Assistance Taking account of the nature of the processing, we will help you by appropriate technical and organisational measures to answer requests from data subjects, and we will help you with data protection impact assessments and prior consultation where the information is available to us. If a data subject contacts us directly about data we process for you, we will refer them to you and will not respond substantively ourselves. ## 12. Deletion and return You can export event and order records as CSV from the dashboard. For other data return requests, contact us. On deletion of a website or closure of the account, we delete or irreversibly anonymise the personal data within thirty days, except where storage is required by law. Encrypted recovery backups follow a separate 30-day retention schedule. Deletion requests must be reapplied before restored data returns to service. ## 13. Personal data breach We will notify you without undue delay, and in any case within seventy-two hours of becoming aware of a personal data breach affecting personal data processed for you, with the information we have about its nature, likely consequences and the measures taken, and we will update you as more becomes known. ## 14. Audits We will make available the information needed to demonstrate compliance with this DPA and will contribute to audits carried out by you or an auditor you appoint. Audits take place no more than once a year unless a breach or a supervisory authority requires otherwise, on thirty days' notice, during business hours, without disrupting the service, and subject to confidentiality. Answering a reasonable written questionnaire satisfies this clause where it addresses your concern. ## 15. Your responsibilities You are responsible for having a legal basis for the processing you instruct, for telling your visitors about it, for keeping personal data out of custom event properties and order payloads unless you have a basis for sending it, and for the accounts you grant access to. ## 16. Liability and precedence Liability under this DPA is subject to the limitations in the terms of service. If this DPA and the terms conflict on data protection, this DPA prevails; if this DPA and the standard contractual clauses conflict, the clauses prevail. ## 17. Contact Data protection enquiries: NesDesign LLC, Wyoming, United States, [hello@seean.io](mailto:hello@seean.io). ## 18. Acceptance Accepting the terms of service, or using the service, constitutes acceptance of this DPA by both parties. The version published at this address is the operative one, unless we have signed a separate written agreement with you. --- Source: https://seean.io/legal/gdpr/ # GDPR and privacy

Last updated 9 September 2026. This page explains how Seean is built for the GDPR and where your responsibilities as a website owner begin.

## Who plays which role For your **account data** (your email address, sign-in method, plan and invoices) NesDesign LLC is the controller. For the **analytics data of your websites** you are the controller and NesDesign LLC is the processor: we process it only to provide Seean and only on your instructions. That relationship is set out in our [data processing agreement](/legal/dpa/), which forms part of the terms and needs no separate signature, although we will sign a copy for your records on request. ## Data minimisation by default Seean limits the data used for analytics, but random identifiers and associated activity may still be personal data: - the tracker uses localStorage and sessionStorage rather than cookies for visitor and session identifiers; - analytics records do not include a visitor IP field; network services may still process IP addresses; - no device fingerprinting; - country estimated from a reported value, browser timezone or language region, without IP geolocation; - referrers reduced to a hostname, so query strings and paths of the referring page are never kept; - the visitor ID has no automatic expiry in the tracker and may persist across visits. Recognised bot user agents and common automation clients are filtered before analytics storage and usage accounting. This basic filtering does not establish that every accepted visit is human. ## What may still be processed Two things deserve care, because they are under your control rather than ours. **Custom events and properties.** If you send properties with an event, you decide what is in them. Do not put names, email addresses, order details tied to a person, or anything else that identifies a visitor into an event property. **Revenue attribution.** If you post orders to Seean, you choose which identifiers travel with them. Use your own opaque order identifiers rather than customer identifiers. If you do send personal data through these features, you are the controller of it and you need a legal basis for it. Seean will process it as your processor under the DPA. ## Cookies, storage and consent The tracker reads and writes visitor and session identifiers in browser storage. Cookie and similar-technology rules can apply to this storage even though no cookies are set. Whether consent, an opt-out or another requirement applies depends on the jurisdiction and use. Seean does not claim a universal exemption for analytics. The tracker stops analytics collection for Do Not Track, Global Privacy Control, or a browser opt-out set with `localStorage.seean_ignore = "true"`. Configure your consent mechanism to control whether the script loads, including applicable opt-out choices. See the [ICO guidance on storage and access technologies](https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guidance-on-the-use-of-storage-and-access-technologies/what-are-storage-and-access-technologies/) for the scope of the UK rules. ## Your responsibilities as a customer - Tell your visitors, in your own privacy notice, that you measure traffic with Seean and what that involves. - Only install the tracker on sites you control and are entitled to measure. - Keep personal data out of custom events and order payloads. - Handle requests from your visitors as controller; we will help you answer them. ## International transfers We are a United States company. Our providers may process data internationally. See the DPA for transfer terms and contact [hello@seean.io](mailto:hello@seean.io) for current processing locations or a specific data-residency requirement. ## Data processing terms Our [data processing agreement](/legal/dpa/) sets out the subject matter and duration of processing, the categories of data and data subjects, security measures, sub-processors, transfer mechanisms, breach notification, audit rights and deletion. It is incorporated into the [terms of service](/legal/terms/). ## Contact NesDesign LLC · Wyoming, United States · [hello@seean.io](mailto:hello@seean.io) --- Source: https://seean.io/legal/privacy/ # Privacy policy

Last updated 9 September 2026. NesDesign LLC, a Wyoming limited liability company, operates Seean at app.seean.io.

This policy covers two different groups: people who visit a website that uses Seean, and our own customers. The two are treated very differently, so they are described separately. ## Visitors to sites that use Seean Seean measures activity using random browser identifiers. These are pseudonymous identifiers, not a guarantee that the data is anonymous. The tracker sends the page path, hostname, the referrer URL made available by the browser, timezone, visitor and session identifiers, campaign tags and Web Vitals measurements. The collector reduces the referrer to a hostname before storing analytics records. Browser, operating system and device categories are derived from the request's user agent; its language region may be used as a country fallback. The current tracker does not send screen dimensions. Custom events and their properties are sent when configured. Order data comes from a separate checkout integration. The tracker does not set cookies. It stores a random visitor ID in localStorage and session information in sessionStorage, and sends these identifiers with events. The visitor ID has no automatic expiry in the tracker and may persist across visits until browser storage is cleared. These identifiers can link activity from the same browser and may be associated with order data supplied by the website owner. Analytics records do not include a visitor IP field, and country estimates do not use IP geolocation. Country may come from a reported value, timezone or browser language and can be inaccurate. Network and hosting services may process IP addresses when handling requests; this policy does not claim that IP addresses never reach our infrastructure. The tracker stops analytics collection for Do Not Track, Global Privacy Control, or a browser opt-out set with `localStorage.seean_ignore = "true"`. Website owners must configure when the tracker loads to implement applicable consent and opt-out requirements. Using browser storage rather than cookies does not by itself establish an exemption from those requirements. We do not sell data, we do not build advertising profiles, and we do not share analytics data between customers. ## Customers When you create an account we process your email address, your chosen sign-in method (password, Google or GitHub), the domains of the websites you add, your plan and usage counters, and the analytics data described above for those websites. If you contact us, we keep that correspondence. Billing is handled by Polar as merchant of record. Polar processes your billing details and issues invoices; we receive only the subscription status, plan and invoice metadata needed to run your account. We never see or store card numbers. ## How we use it We use this information to provide the dashboard and reports, to filter recognised bot user agents and common automation clients, to send service email such as verification codes, trial and billing notices and the reports you have enabled, to enforce plan limits, to keep the service secure and to detect abuse, and to comply with our legal and accounting obligations. Matching bot traffic and configured path or hostname exclusions are discarded before analytics storage and usage accounting. Existing historical bot-labelled records are kept. We do not use your analytics data to train models, and we do not use it for our own marketing. ## Legal bases For customers in the European Economic Area and the United Kingdom, we rely on performance of a contract to provide the service and to send service email, on our legitimate interests to keep the service secure and to prevent abuse, and on legal obligation for accounting records. For analytics data of your visitors, you are the controller and decide the legal basis; we act only on your instructions as processor. ## Sharing and sub-processors We share data only with the infrastructure and payment providers we need to run the service. They are listed with their purpose in our [data processing agreement](/legal/dpa/). We also disclose information where the law requires it, or where it is necessary to protect the service, our customers or their visitors, and we will tell you about a legally binding request unless we are prohibited from doing so. We do not sell personal information and we do not share it for cross-context behavioural advertising, as those terms are used in United States state privacy laws. ## Storage and retention Event, Web Vitals and order records are subject to a rolling three-year retention window; scheduled cleanup removes older records. You can request earlier deletion from the dashboard. This window does not describe the lifetime of identifiers in a visitor's browser. Account records are kept while the account is open. After an account is closed we delete or irreversibly anonymise the data within thirty days, except invoices and accounting records, which we keep for as long as tax law requires. Encrypted recovery backups follow a separate 30-day retention schedule. They are restricted to service recovery; deletion requests must be reapplied before restored data returns to service. ## International transfers We are a United States company and use infrastructure providers that may process data internationally. The applicable transfer terms are set out in our [data processing agreement](/legal/dpa/). Contact [hello@seean.io](mailto:hello@seean.io) for current processing locations and any specific data-residency requirements. ## Your rights Depending on where you live you may have the right to access, correct, delete or receive a copy of your personal data, to object to or restrict processing, and to complain to a supervisory authority. Residents of California and other United States states with privacy laws have equivalent rights, including the right not to be discriminated against for exercising them. You can export or delete your own data from settings at any time. For anything else, write to [hello@seean.io](mailto:hello@seean.io) and we will answer within thirty days. If Seean processes data about you because you visited a website that uses it, that website's owner is the controller and you should contact them; we will support them in answering you. ## Children Seean is not intended for children, and the service may not be installed on sites that primarily target children under 13. ## Changes We will update this policy as the service changes, and we will change the date at the top. For changes that materially affect customers we will give notice by email or in the dashboard before they take effect. ## Contact NesDesign LLC · Wyoming, United States · [hello@seean.io](mailto:hello@seean.io) --- Source: https://seean.io/legal/terms/ # Terms of service

Last updated 9 September 2026. These terms apply to the hosted Seean service at app.seean.io.

## Who we are Seean is provided by NesDesign LLC, a limited liability company formed in the State of Wyoming, United States ("we", "us"). By creating an account, installing the tracker, or using the dashboard you ("you", "customer") agree to these terms. If you accept on behalf of a company, you confirm you are authorised to bind it. ## The service Seean is a web analytics service. You add a small script to websites you control, and Seean measures visits and events, filters recognised bot user agents and common automation clients, and shows traffic, conversion and revenue reports in a dashboard. Basic filtering cannot identify every bot. Revenue reports require an order integration; the current integration supports USD orders and full refunds. Features may change as the product develops; we will not remove a material feature from a paid plan without notice under *Changes* below. ## Your account You must give an accurate email address and keep your credentials secure. You are responsible for everything done through your account, for the websites you add, and for having the right to collect analytics on them. One person or company per account; you may invite others only through features we provide for that purpose. We may refuse or close an account used for unlawful purposes. ## Acceptable use You may not use Seean to collect data you are not entitled to collect, to attempt to identify individual visitors, to re-identify or merge Seean data with other datasets for that purpose, to send events you did not generate, to probe or overload the service, or to resell the service without a written agreement with us. You may not install the tracker on sites that primarily target children under 13, or on sites whose content is unlawful where they are published. ## Plans, billing and taxes Every plan carries every feature; plans differ only in the number of events included each month. Prices are shown on our pricing page and start at $6 per month. Subscriptions are billed in advance, monthly or yearly; yearly billing includes two months free. Payments are handled by Polar Software Inc., which acts as merchant of record for the sale. Polar issues your invoice and collects any VAT, sales tax or equivalent that applies where you are located. Your purchase is therefore also subject to Polar's terms, and card details are never seen or stored by us. If you exceed the events included in your plan, we will tell you in the dashboard and by email; traffic that we identify as automated is never counted against your allowance. Continued overage may require moving to a higher volume. ## Free trial New accounts include a fifteen day trial with a 100,000-event monthly allowance shared across their websites and no payment details required. At the end of the trial, collection stops until you choose a plan. Data collected during the trial is kept under *Your data and retention* below and becomes available again when you subscribe. ## Cancellation and refunds You may cancel at any time from billing settings. Cancellation takes effect at the end of the period you have already paid for, and you keep access until then. We do not give pro-rata refunds for partial periods. Where a refund is required by mandatory consumer law, or where we have charged you in error, contact us and we will arrange it with Polar. ## Your data and retention Analytics data belongs to you. You can export event and order records as CSV, and you can delete a website or your whole account from settings. Event, Web Vitals and order records are subject to a rolling three-year retention window unless you delete them earlier. This is separate from the lifetime of identifiers in browser storage. After an account is closed, we delete or irreversibly anonymise the data within thirty days, except for records we must keep for accounting and tax purposes. For personal data processed on your behalf, our [data processing agreement](/legal/dpa/) applies and forms part of these terms. ## Suspension and termination We may suspend an account that is materially in breach of these terms, that is being used unlawfully, or that threatens the stability or security of the service. Where it is reasonable to do so we will warn you first and give you a chance to fix the problem. We may terminate for repeated or serious breach, or if payment fails and remains unpaid after we have notified you. You may terminate at any time by closing your account. ## Availability We aim for high availability but do not promise uninterrupted service, and we do not offer a contractual uptime guarantee on these plans. Maintenance that we expect to cause downtime is announced in advance where practical. ## Third-party services Seean relies on infrastructure and payment providers listed in our [data processing agreement](/legal/dpa/). Optional integrations that you enable, such as signing in with Google or GitHub or connecting Google Search Console, are governed by those providers' own terms. ## Disclaimers The service is provided "as is" and "as available". To the extent permitted by law we disclaim all implied warranties, including merchantability, fitness for a particular purpose and non-infringement. Analytics figures are estimates produced by measurement and filtering; they will not match other tools exactly, and you should not rely on them as the sole basis for a legal, financial or regulatory decision. ## Limitation of liability To the extent permitted by law, neither party is liable for indirect, incidental, special or consequential damages, or for lost profits, revenue or data. Our total liability arising out of or relating to the service is limited to the fees you paid us in the twelve months before the event giving rise to the claim. Nothing here limits liability that cannot be limited by law, including for fraud or wilful misconduct. ## Indemnity You will defend and indemnify us against third-party claims arising from your websites, your content, the data you choose to collect, or your breach of these terms, except to the extent the claim results from our own breach. ## Changes We may update these terms. For material changes affecting paid accounts we will give at least fourteen days' notice by email or in the dashboard before they take effect. Continuing to use the service after that date means you accept the new terms; if you do not, you may cancel and we will refund any period paid for but not used. ## Governing law and disputes These terms are governed by the laws of the State of Wyoming, United States, without regard to its conflict of law rules. The exclusive venue for disputes is the state and federal courts located in Wyoming, and both parties consent to that jurisdiction. If you are a consumer resident in the European Union, the United Kingdom or another jurisdiction whose mandatory law gives you the right to bring proceedings locally, this clause does not take that right away. ## Contact NesDesign LLC · Wyoming, United States · [hello@seean.io](mailto:hello@seean.io) --- Source: https://seean.io/support/faq/ # FAQ ## Do I need a cookie banner? The tracker does not set cookies, but it stores visitor and session identifiers in the browser. Consent and notice requirements depend on your location and how you use the service. See [storage and consent](/legal/gdpr/#cookies-storage-and-consent). ## How accurate is the country? It is an estimate based on a reported country, the browser's timezone or its language region. Seean does not use IP geolocation for analytics. Shared timezones and device settings can produce incorrect estimates; the globe does not show a visitor's precise location. ## Do you filter bots? Seean labels recognised bot user agents in **Sources → Bots**. This is not comprehensive bot detection: labelled visits remain in analytics and count toward event usage. See [bot identification](/docs/how-filtering-works/). ## Can my client see the dashboard without an account? Yes. Create a share link in Settings → Sharing. It is read-only and can be revoked anytime. ## What can I export? You can export event and order records for a selected date range as CSV on every plan. These exports do not include every stored field or every data type, such as Web Vitals samples. ## How do I manage my data? Export event and order records from your dashboard, or delete a website from its settings. See our [privacy policy](/legal/privacy/) for retention and our [DPA](/legal/dpa/) for processing terms. ## How do I cancel? Open **Billing → Manage subscription**. Cancellation takes effect at the end of the paid period. Existing analytics remain subject to the retention policy and any deletion you request. --- Source: https://seean.io/web-analytics/ # Website analytics that connects traffic to outcomes Seean is web analytics software for people who need to understand website traffic, campaign performance and order revenue in one dashboard. Install a JavaScript tracker, collect pageviews and custom events, then use those events to build funnels. A separate server integration sends verified order data for revenue reports. [Try Seean free for 15 days](https://app.seean.io/signup) or [explore the live demo](https://app.seean.io/s/demo). No card is required for the trial. ## What can you measure? | Question | Seean report | Setup needed | |---|---|---| | Which pages attract visitors? | Overview, pages and traffic sources | Install the tracker | | Which campaigns bring visits and conversions? | UTM campaign, source and medium reports | Tag campaign links; send conversion events | | Where do visitors leave the signup journey? | Funnels with conversion and drop-off by step | Choose tracked pages or events as steps | | Which pages and sources are associated with sales? | Revenue attribution | Send verified USD orders with attribution fields | | Which pages feel slow to real visitors? | Web Vitals with percentile trends | Install the tracker and allow time for samples | | How are my websites doing together? | Roll-up across up to 30 sites | Add each website and its tracker | ## From the first pageview to a useful report 1. Add your website and copy its snippet from **Settings → Tracking**. 2. Install the snippet in your site's shared page layout, subject to your consent requirements. 3. Open a page and confirm that Setup health shows incoming data. 4. Name the actions that matter, such as `signup` or `demo_request`, and send them as [custom events](/docs/custom-events/). 5. Build a funnel from the pages and events in that journey. Use a previous period to compare results after a change. See the [tracker installation guide](/docs/add-the-tracker/) for the exact snippet and [platform installation notes](/docs/installation-guides/) for Next.js, Astro, WordPress, Shopify, Webflow and Framer. ## Understand the measurement limits Seean's tracker does not set cookies. It does use localStorage and sessionStorage for browser identifiers, so “cookieless” does not mean that no visitor identifier is stored. Browser restrictions, consent choices, blockers and missing JavaScript execution can reduce what you measure. The tracker does not identify a person across devices. Country is estimated from available country, timezone or language information; the globe is not a precise location service. [Bot identification](/docs/how-filtering-works/) uses declared user-agent patterns and does not detect every automated visit. Order reporting uses the information supplied by your integration. It does not reconstruct missing attribution, and its current supported currency is USD with full-order refunds. Read [how revenue attribution works](/docs/revenue/) before connecting a checkout. ## Can Seean measure visitors from AI search? When an AI service sends a browser visit with a referrer, it can appear in the source report. A citation without a click is not a visit. If the browser or service omits the referrer, analytics cannot reliably infer that visit's AI origin. Our [AI referral measurement guide](/guides/ai-referral-traffic/) explains how to evaluate those visits without overstating visibility. ## Is Seean a fit for your team? Seean is intended for teams that want traffic, events, funnels, campaigns and order reporting in a shared workflow. Every paid plan includes the same features; event volume determines the tier. You can manage up to 30 websites and export events and orders as CSV. If you need partial refunds, non-USD order reporting or automatic cross-device identity, the current product does not cover those requirements. Review the [full feature list](/features/), [billing rules](/docs/billing/) and [privacy information](/legal/privacy/) before choosing a tool. [See plans and pricing](/#pricing) · [Ask a product question](mailto:hello@seean.io)