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);
- });
-}