diff --git a/apps/web/index.html b/apps/web/index.html index 5f821e469..27385b378 100644 --- a/apps/web/index.html +++ b/apps/web/index.html @@ -5,9 +5,11 @@ TrustSwap diff --git a/apps/web/src/analytics.ts b/apps/web/src/analytics.ts index 9cfc2fab8..a3e9cf8bd 100644 --- a/apps/web/src/analytics.ts +++ b/apps/web/src/analytics.ts @@ -1,41 +1,33 @@ declare global { interface Window { umami?: { - // Custom events track: (eventName?: string, data?: Record) => void; - // Official pageview API trackView: (url?: string, referrer?: string | null, websiteId?: string) => void; }; } } -// Avoid duplicate tracking when rapid route updates occur +// Prevent duplicate for same route let lastPathname: string | null = null; -// Poll until the Umami script is loaded +// Wait for Umami script function whenUmamiReady(cb: () => void, tries = 20) { if (typeof window !== "undefined" && window.umami) return cb(); if (tries <= 0) return; setTimeout(() => whenUmamiReady(cb, tries - 1), 250); } +const WEBSITE_ID = "13760d0b-e30d-43c2-9026-1920a86720c8"; + export function trackPageView(pathname: string) { if (!pathname || pathname === lastPathname) return; lastPathname = pathname; whenUmamiReady(() => { if (window.umami?.trackView) { - // Proper pageview: shows up in the "Pageviews" metrics - window.umami.trackView(pathname); + window.umami.trackView(pathname, document.referrer || null, WEBSITE_ID); } else if (window.umami?.track) { - // Fallback as a custom event (visible under "Events", not "Pageviews") - window.umami.track("pageview", { url: pathname }); + window.umami.track("pageview", { url: pathname, website: WEBSITE_ID }); } }); } - -export function trackEvent(name: string, data?: Record) { - whenUmamiReady(() => { - window.umami?.track?.(name, data); - }); -}