From 3b6cb316bb021ea52304796c71cb266cebb72e2f Mon Sep 17 00:00:00 2001 From: ernstmul Date: Thu, 13 Mar 2025 12:40:02 +0100 Subject: [PATCH] Send utm info to analytics --- src/lib/actions/analytics.ts | 3 +++ src/lib/helpers/utm.ts | 17 +++++++++++++++++ src/routes/+layout.svelte | 13 +++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 src/lib/helpers/utm.ts diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 036cf56c8..260cffe51 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -6,6 +6,7 @@ import { user } from '$lib/stores/user'; import { ENV, MODE, VARS, isCloud } from '$lib/system'; import { AppwriteException } from '@appwrite.io/console'; import { browser } from '$app/environment'; +import { getReferrerAndUtmSource } from '$lib/helpers/utm'; function plausible(domain: string): AnalyticsPlugin { if (!browser) return { name: 'analytics-plugin-plausible' }; @@ -65,6 +66,8 @@ export function trackEvent(name: string, data: object = null): void { }; } + data = { ...data, ...getReferrerAndUtmSource() }; + if (ENV.DEV || ENV.PREVIEW) { console.debug(`[Analytics] Event ${name} ${path}`, data); } else { diff --git a/src/lib/helpers/utm.ts b/src/lib/helpers/utm.ts new file mode 100644 index 000000000..df2cb2158 --- /dev/null +++ b/src/lib/helpers/utm.ts @@ -0,0 +1,17 @@ +export function getReferrerAndUtmSource() { + if (sessionStorage) { + let values = {}; + if (sessionStorage.getItem('utmReferral')) { + values = { ...values, utmReferral: sessionStorage.getItem('utmReferral') }; + } + if (sessionStorage.getItem('utmSource')) { + values = { ...values, utmSource: sessionStorage.getItem('utmSource') }; + } + if (sessionStorage.getItem('utmMedium')) { + values = { ...values, utmMedium: sessionStorage.getItem('utmMedium') }; + } + + return values; + } + return {}; +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index e21202297..42ea05abe 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -32,6 +32,19 @@ if (ref || referrer || utmSource || utmCampaign || utmMedium) { sdk.forConsole.sources.create(ref, referrer, utmSource, utmCampaign, utmMedium); } + + if (referrer || ref) { + sessionStorage.setItem('utmReferral', referrer ? referrer : (ref ?? '')); + } + if (utmSource) { + sessionStorage.setItem('utmSource', utmSource); + } + if (utmMedium) { + sessionStorage.setItem('utmMedium', utmMedium); + } + if (utmCampaign) { + sessionStorage.setItem('utmCampaign', utmCampaign); + } } if ($page.url.searchParams.has('migrate')) {