From 1c4ca3b6c70ef8f61e9e572066be196a8924ff96 Mon Sep 17 00:00:00 2001 From: Arthur Sepiol Date: Fri, 28 Nov 2025 00:16:15 +0300 Subject: [PATCH] feat(sessions): add referrer to session modal Display the initial referrer in the Session modal properties grid. Fetches the referrer from the session's first event to show where the user originally came from. --- .../[websiteId]/sessions/SessionInfo.tsx | 5 +++++ src/queries/sql/sessions/getWebsiteSession.ts | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionInfo.tsx b/src/app/(main)/websites/[websiteId]/sessions/SessionInfo.tsx index e968daba..3a2c85df 100644 --- a/src/app/(main)/websites/[websiteId]/sessions/SessionInfo.tsx +++ b/src/app/(main)/websites/[websiteId]/sessions/SessionInfo.tsx @@ -2,6 +2,7 @@ import { ReactNode } from 'react'; import { Icon, Grid, Column, Row, Label } from '@umami/react-zen'; import { useFormat, useLocale, useMessages, useRegionNames } from '@/components/hooks'; import { TypeIcon } from '@/components/common/TypeIcon'; +import { Favicon } from '@/components/common/Favicon'; import { KeyRound, Calendar, MapPin, Landmark } from '@/components/icons'; import { DateDistance } from '@/components/common/DateDistance'; @@ -60,6 +61,10 @@ export function SessionInfo({ data }) { > {formatValue(data?.device, 'device')} + + }> + {data?.referrerDomain} + ); } diff --git a/src/queries/sql/sessions/getWebsiteSession.ts b/src/queries/sql/sessions/getWebsiteSession.ts index 36c48c20..f4838994 100644 --- a/src/queries/sql/sessions/getWebsiteSession.ts +++ b/src/queries/sql/sessions/getWebsiteSession.ts @@ -32,7 +32,13 @@ async function relationalQuery(websiteId: string, sessionId: string) { count(distinct visit_id) as visits, sum(views) as views, sum(events) as events, - sum(${getTimestampDiffSQL('min_time', 'max_time')}) as "totaltime" + sum(${getTimestampDiffSQL('min_time', 'max_time')}) as "totaltime", + (select referrer_domain + from website_event + where website_id = {{websiteId::uuid}} + and session_id = {{sessionId::uuid}} + order by created_at asc + limit 1) as "referrerDomain" from (select session.session_id as id, session.distinct_id, @@ -83,7 +89,13 @@ async function clickhouseQuery(websiteId: string, sessionId: string) { uniq(visit_id) visits, sum(views) as views, sum(events) as events, - sum(max_time-min_time) as totaltime + sum(max_time-min_time) as totaltime, + (select referrer_domain + from website_event + where website_id = {websiteId:UUID} + and session_id = {sessionId:UUID} + order by created_at asc + limit 1) as referrerDomain from (select session_id as id, distinct_id as distinctId,