@s-stolz/analytics-core
v0.0.3
Published
Framework-independent Website Analytics tracker.
Readme
@s-stolz/analytics-core
Framework-independent Website Analytics tracker for browser sites.
Consent-Free Setup
Consent-free analytics is the default. The tracker sends an initial Page View and common history navigation Page Views without cookies, localStorage, sessionStorage, IndexedDB, or durable retry queues.
import { createAnalyticsTracker } from "@s-stolz/analytics-core";
const analytics = createAnalyticsTracker({
siteId: "voicepipe",
endpoint: "https://analytics.example/v1/events",
environment: "production"
});Development and test environments are disabled by default unless enabled is set explicitly.
Framework adapters that send their own route-aware Page Views can set
autoTrackPageViews: false to disable the initial and history-driven automatic Page Views.
Consent-Based Setup
Use consent-based analytics when the site offers persistent analytics identity after consent. Consent state and Visitor ID are separate first-party cookies.
const analytics = createAnalyticsTracker({
siteId: "voicepipe",
endpoint: "https://analytics.example/v1/events",
environment: "production",
privacyMode: "consent_based"
});
analytics.grantConsent();
analytics.denyConsent();
analytics.revokeConsent();Revocation deletes the Visitor ID while preserving the consent outcome.
Page Patterns
Page Patterns group parameterized routes without storing every concrete URL as its own page identity.
const analytics = createAnalyticsTracker({
siteId: "voicepipe",
endpoint: "https://analytics.example/v1/events",
environment: "production",
resolvePagePattern({ pageLocation }) {
if (pageLocation.path.startsWith("/accounts/")) {
return "/accounts/:accountId/settings";
}
return undefined;
}
});
analytics.trackPageView({ pagePattern: "/pricing" });Interactions
Interactions are explicit developer-named events. Use stable kebab-case names and put custom context inside properties.
analytics.trackInteraction("pricing-plan-selected", {
pagePattern: "/pricing",
properties: {
plan: "pro",
billingCycle: "annual"
}
});Sensitive property names such as email, token, password, name, phone, and userId are blocked by default.
