Analytics Configuration (Build-Time)
These values are read from site.ts at build time. Changes require
a dev server restart (or rebuild for production).
{
"consentRequired": true,
"gtmEnabled": false,
"gtmId": "GTM-XXXXXX",
"ga4Enabled": false,
"ga4Id": "G-XXXXXXX",
"customSnippetsCount": 0,
"expirationDays": 365,
"policyUrl": "/privacy/",
"cookieClearingPatterns": [
"_ga",
"_gid",
"_gat",
"_gcl",
"_custom"
]
} Show code
import { siteConfig } from "@site/config/site";
const { analytics } = siteConfig;
// analytics.consentRequired — boolean
// analytics.googleTagManager.enabled / .id
// analytics.googleAnalyticsGA4.enabled / .id
// analytics.consent.expirationDays / .policyUrl Consent State (Runtime)
Current consent state read from localStorage. Updates when
you interact with the consent banner or use the console commands below.
Status: loading...
Timestamp: loading...
Expired: loading...
Show code
{/* Read consent state from localStorage */}
const raw = localStorage.getItem("analytics-consent");
const parsed = JSON.parse(raw);
// parsed.status — "accepted" | "declined" | undefined
// parsed.timestamp — Unix ms timestamp Injected Scripts (Runtime)
Checks the DOM for known analytics script patterns. Click "Scan" to inspect.
GTM script: —
GA4 script: —
dataLayer entries: —
Custom snippets in DOM: —
trackEvent Test
Fires a test event via window.trackEvent(). In dev mode,
check
console.debug. In production, check window.dataLayer.
Show code
// Fire a custom event via the trackEvent helper
window.trackEvent('event_name', { key: 'value' });
// In dev mode: events log to console.debug
// In production: events push to window.dataLayer Console Commands
Useful commands for testing consent flows:
Clear consent and reload:
localStorage.removeItem('analytics-consent'); location.reload(); Simulate expired consent:
var c = JSON.parse(localStorage.getItem('analytics-consent'));
c.timestamp = 0; localStorage.setItem('analytics-consent',
JSON.stringify(c)); location.reload();
Check dataLayer:
console.table(window.dataLayer); Show code
// Clear consent and reload (resets to banner shown state)
localStorage.removeItem('analytics-consent'); location.reload();
// Simulate expired consent
var c = JSON.parse(localStorage.getItem('analytics-consent'));
c.timestamp = 0;
localStorage.setItem('analytics-consent', JSON.stringify(c));
location.reload();
// Inspect dataLayer entries
console.table(window.dataLayer);