feat(website): Umami analytics (conversion + CTA events)

Add the Umami tracker (cookieless, no consent banner) in the document head,
limited to the production hostnames via data-domains so dev traffic doesn't
pollute the stats. Pageviews are auto-tracked per page and locale.

Custom events on the key funnel:
- demo-request (demo form submit, with teamSize)
- partner-application (partner form submit, with type)
- book-demo (every "Book a demo" CTA click) via data-umami-event
- login (clicks through to the app)

Also fix the mobile nav menu links, which weren't localized (would drop
Danish visitors back to English).
This commit is contained in:
Ronni Baslund
2026-06-06 21:14:42 +02:00
parent 7bee161ac1
commit 554cb99f2c
11 changed files with 35 additions and 13 deletions
+8
View File
@@ -45,6 +45,14 @@ export function useLocalizeHref() {
}
}
// Fire a custom Umami event. No-op on the server and when the tracker isn't
// active (e.g. localhost dev, where data-domains limits it to dezky.eu).
export function track(event: string, data?: Record<string, unknown>) {
if (!import.meta.client) return
const u = (window as unknown as { umami?: { track: (e: string, d?: unknown) => void } }).umami
u?.track(event, data)
}
// Smooth-scroll to an in-page anchor, accounting for the sticky 72px nav.
// Non-anchor / placeholder links (#) are ignored.
export function scrollToAnchor(hash: string) {