@claria-analytics/web
v0.1.1
Published
Claria client-side analytics tracker
Readme
@claria-analytics/web
Client-side analytics for tracking how human visitors interact with your website. Part of the Claria analytics platform.
What it does
@claria-analytics/web tracks page views from real human visitors. It fires on every page navigation, capturing the URL, referrer, and a first-party session identifier. Data is sent to the Claria backend for analysis alongside AI bot traffic.
Key characteristics:
- Lightweight -- no dependencies, minimal footprint
- Uses
navigator.sendBeaconfor reliable delivery (withfetchfallback) - First-party session cookie (7-day default, configurable)
- SSR-safe -- guards against
window/documentaccess during server rendering - Never throws -- all errors are silently caught to avoid impacting your site
Installation
npm install @claria-analytics/webpnpm add @claria-analytics/webyarn add @claria-analytics/webQuick Start (Next.js + React)
Add ClariaAnalytics to your root layout. It renders nothing visible -- it only fires analytics events on route changes.
// app/layout.tsx
import { ClariaAnalytics } from "@claria-analytics/web/react";
import { Suspense } from "react";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>
<Suspense fallback={null}>
<ClariaAnalytics
clientId={process.env.NEXT_PUBLIC_CLARIA_CLIENT_ID!}
/>
</Suspense>
{children}
</body>
</html>
);
}Why
<Suspense>? TheClariaAnalyticscomponent usesuseSearchParams()internally, which requires a Suspense boundary in the Next.js App Router.
Framework-Agnostic Usage
If you're not using React, you can call sendPageView directly:
import { sendPageView } from "@claria-analytics/web";
sendPageView({ clientId: "your_client_id" });Call this on every page navigation in your app (e.g., after a popstate event or route change).
Configuration
All configuration is passed via props (React) or the config object (core API).
| Prop / Field | Type | Required | Default | Description |
| ------------ | --------- | -------- | ------------------------------------- | -------------------------------------------------- |
| clientId | string | Yes | -- | Your Claria client identifier (provided by Claria) |
| endpoint | string | No | https://claria-dashboard.vercel.app | Claria backend URL |
| sessionTTL | number | No | 604800 (7 days) | Session cookie lifetime in seconds |
| debug | boolean | No | false | Enable debug logging to the browser console |
Exports
| Entry Point | Export | Description |
| ----------------------------- | ----------------- | -------------------------------------- |
| @claria-analytics/web | sendPageView | Framework-agnostic page view function |
| @claria-analytics/web/react | ClariaAnalytics | React component for Next.js App Router |
Types
Both entry points also export the following TypeScript types:
ClariaWebConfig-- Configuration object shapePageViewPayload-- The payload sent to the Claria backendClariaAnalyticsProps-- React component props (same asClariaWebConfig)
How It Works
- On each page navigation, the SDK reads (or creates) a
claria_sidsession cookie. - It builds a minimal payload:
client_id,url,referrer,session_id, and a timestamp. - The payload is sent to
{endpoint}/api/collectviasendBeacon(orfetchas fallback). - All parsing, attribution, and verification happens on the Claria backend -- the SDK is a lightweight data forwarder.
License
Proprietary. All rights reserved.
