diff --git a/docs/content/scripts/analytics/rybbit-analytics.md b/docs/content/scripts/analytics/rybbit-analytics.md index 9ecf2566..1f56644a 100644 --- a/docs/content/scripts/analytics/rybbit-analytics.md +++ b/docs/content/scripts/analytics/rybbit-analytics.md @@ -141,22 +141,34 @@ You must provide the options when setting up the script for the first time. ```ts export const RybbitAnalyticsOptions = object({ siteId: union([string(), number()]), // required + autoTrackPageview: optional(boolean()), trackSpa: optional(boolean()), trackQuery: optional(boolean()), + trackOutbound: optional(boolean()), + trackErrors: optional(boolean()), + sessionReplay: optional(boolean()), + webVitals: optional(boolean()), skipPatterns: optional(array(string())), maskPatterns: optional(array(string())), - debounce: optional(number()) + debounce: optional(number()), + apiKey: optional(string()), }) ``` #### Configuration Options - `siteId` (required): Your Rybbit Analytics site ID +`autoTrackPageview`: Set to `false` to disable automatic tracking of the initial pageview when the script loads. You will need to manually call the pageview function to track pageviews. Default: `true` - `trackSpa`: Set to `false` to disable automatic pageview tracking for single page applications - `trackQuery`: Set to `false` to disable tracking of URL query strings +- `trackOutbound`: Set to `false` to disable automatic tracking of outbound link clicks. Default: `true` +- `trackErrors`: Set to `true` to enable automatic tracking of JavaScript errors and unhandled promise rejections. Only tracks errors from the same origin to avoid noise from third-party scripts. Default: `false` +- `sessionReplay`: Set to `true` to enable session replay recording. Captures user interactions, mouse movements, and DOM changes for debugging and user experience analysis. Default: `false` +- `webVitals`: Set to `true` to enable Web Vitals performance metrics collection (LCP, CLS, INP, FCP, TTFB). Web Vitals are disabled by default to reduce script size and network requests. Default: `false` - `skipPatterns`: Array of URL path patterns to ignore - `maskPatterns`: Array of URL path patterns to mask for privacy - `debounce`: Delay in milliseconds before tracking a pageview after URL changes +- `apiKey`: API key for tracking from localhost during development. Bypasses origin validation for self-hosted Rybbit Analytics instances ## Example diff --git a/src/runtime/registry/rybbit-analytics.ts b/src/runtime/registry/rybbit-analytics.ts index e28bbea2..c66eb576 100644 --- a/src/runtime/registry/rybbit-analytics.ts +++ b/src/runtime/registry/rybbit-analytics.ts @@ -4,11 +4,17 @@ import type { RegistryScriptInput } from '#nuxt-scripts/types' export const RybbitAnalyticsOptions = object({ siteId: union([string(), number()]), // required + autoTrackPageview: optional(boolean()), trackSpa: optional(boolean()), trackQuery: optional(boolean()), + trackOutbound: optional(boolean()), + trackErrors: optional(boolean()), + sessionReplay: optional(boolean()), + webVitals: optional(boolean()), skipPatterns: optional(array(string())), maskPatterns: optional(array(string())), debounce: optional(number()), + apiKey: optional(string()), }) export type RybbitAnalyticsInput = RegistryScriptInput @@ -60,11 +66,17 @@ export function useScriptRybbitAnalytics(_options? scriptInput: { 'src': 'https://app.rybbit.io/api/script.js', 'data-site-id': String(options?.siteId), + 'data-auto-track-pageview': options?.autoTrackPageview, 'data-track-spa': options?.trackSpa, 'data-track-query': options?.trackQuery, + 'data-track-outbound': options?.trackOutbound, + 'data-track-errors': options?.trackErrors, + 'data-session-replay': options?.sessionReplay, + 'data-web-vitals': options?.webVitals, 'data-skip-patterns': options?.skipPatterns ? JSON.stringify(options.skipPatterns) : undefined, 'data-mask-patterns': options?.maskPatterns ? JSON.stringify(options.maskPatterns) : undefined, 'data-debounce': options?.debounce ? options.debounce.toString() : undefined, + 'data-api-key': options?.apiKey, }, schema: import.meta.dev ? RybbitAnalyticsOptions : undefined, scriptOptions: {