diff --git a/src/lib/utils/utm.ts b/src/lib/utils/utm.ts new file mode 100644 index 0000000000..e663d782f9 --- /dev/null +++ b/src/lib/utils/utm.ts @@ -0,0 +1,14 @@ +export function getReferrerAndUtmSource() { + if (sessionStorage) { + let values = {}; + if (sessionStorage.getItem('referrer')) { + values = { ...values, referrer: sessionStorage.getItem('referrer') }; + } + if (sessionStorage.getItem('utmSource')) { + values = { ...values, utmSource: sessionStorage.getItem('utmSource') }; + } + + return values; + } + return {}; +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index e5bb4c1ee6..3dd7ef339e 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -74,6 +74,12 @@ if (ref || referrer || utmSource || utmCampaign || utmMedium) { createSource(ref, referrer, utmSource, utmCampaign, utmMedium); } + if (referrer) { + sessionStorage.setItem('referrer', referrer); + } + if (utmSource) { + sessionStorage.setItem('utmSource', utmSource); + } const initialTheme = $page.route.id?.startsWith('/docs') ? getPreferredTheme() : 'dark'; applyTheme(initialTheme); diff --git a/src/routes/contact-us/+page.svelte b/src/routes/contact-us/+page.svelte index 460644dcdd..2c735bb705 100644 --- a/src/routes/contact-us/+page.svelte +++ b/src/routes/contact-us/+page.svelte @@ -6,6 +6,7 @@ import MainFooter from '../../lib/components/MainFooter.svelte'; import { socials } from '$lib/constants'; import { PUBLIC_GROWTH_ENDPOINT } from '$env/static/public'; + import { getReferrerAndUtmSource } from '$lib/utils/utm'; let email = ''; let firstName = ''; @@ -25,7 +26,8 @@ email, firstName, subject, - message + message, + ...getReferrerAndUtmSource() }) }); if (response.status >= 400) { diff --git a/src/routes/contact-us/enterprise/+page.svelte b/src/routes/contact-us/enterprise/+page.svelte index 227a14638c..6c4897cdfb 100644 --- a/src/routes/contact-us/enterprise/+page.svelte +++ b/src/routes/contact-us/enterprise/+page.svelte @@ -7,6 +7,7 @@ import Pink from '../bg.png'; import { loggedIn, user } from '$lib/utils/console'; import { PUBLIC_GROWTH_ENDPOINT } from '$env/static/public'; + import { getReferrerAndUtmSource } from '$lib/utils/utm'; let email = ''; let name = ''; @@ -36,7 +37,8 @@ companySize, companyWebsite, firstName: name, - message: useCase + message: useCase, + ...getReferrerAndUtmSource() }) }); diff --git a/src/routes/integrations/technology-partner/+page.svelte b/src/routes/integrations/technology-partner/+page.svelte index f75e4b2c1d..179b6ab343 100644 --- a/src/routes/integrations/technology-partner/+page.svelte +++ b/src/routes/integrations/technology-partner/+page.svelte @@ -9,6 +9,7 @@ //import BlobPink from "$routes/startups/(assets)/blob-pink.svg"; // import BlobPinkMobile from "$routes/startups/(assets)/blob-pink-mobile.svg"; import Pink from './bg.png'; + import { getReferrerAndUtmSource } from '$lib/utils/utm'; import { PUBLIC_GROWTH_ENDPOINT } from '$env/static/public'; let email = ''; @@ -40,7 +41,8 @@ email, firstName: name, subject, - message + message, + ...getReferrerAndUtmSource() }) }); if (response.status >= 400) { diff --git a/src/routes/oss-program/+page.svelte b/src/routes/oss-program/+page.svelte index 99495411b2..227a0af36f 100644 --- a/src/routes/oss-program/+page.svelte +++ b/src/routes/oss-program/+page.svelte @@ -7,6 +7,7 @@ import { socials } from '$lib/constants'; import GradientBackground from './bg.png'; import { PUBLIC_GROWTH_ENDPOINT } from '$env/static/public'; + import { getReferrerAndUtmSource } from '$lib/utils/utm'; let personName = ''; let personEmail = ''; @@ -35,7 +36,8 @@ githubUrl, websiteUrl, license, - message + message, + ...getReferrerAndUtmSource() }) }); if (response.status >= 400) { diff --git a/src/routes/startups/+page.svelte b/src/routes/startups/+page.svelte index d7f18cb408..441b1b0dd8 100644 --- a/src/routes/startups/+page.svelte +++ b/src/routes/startups/+page.svelte @@ -19,6 +19,7 @@ import { PUBLIC_GROWTH_ENDPOINT } from '$env/static/public'; import Faq from './faq.svelte'; + import { getReferrerAndUtmSource } from '$lib/utils/utm'; const title = 'Startups' + TITLE_SUFFIX; const description = DEFAULT_DESCRIPTION; @@ -58,7 +59,8 @@ personName, personEmail, companyName, - companyUrl: companyUrl.startsWith('http') ? companyUrl : `https://${companyUrl}` + companyUrl: companyUrl.startsWith('http') ? companyUrl : `https://${companyUrl}`, + ...getReferrerAndUtmSource() }) });