Skip to content

Commit 60f5c43

Browse files
committed
Analytics | referrer built-in event
1 parent af8bcc3 commit 60f5c43

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

src/modules/analytics.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import type { AuthModule } from "./auth.types";
1313
import { generateUuid } from "../utils/common";
1414

1515
export const USER_HEARTBEAT_EVENT_NAME = "__user_heartbeat_event__";
16+
export const ANALYTICS_REFERRER_EVENT_NAME = "__referrer_event__";
1617
export const ANALYTICS_CONFIG_ENABLE_URL_PARAM_KEY = "analytics-enable";
1718

1819
export const ANALYTICS_SESSION_ID_LOCAL_STORAGE_KEY =
@@ -39,6 +40,7 @@ const analyticsSharedState = getSharedInstance(
3940
requestsQueue: [] as TrackEventData[],
4041
isProcessing: false,
4142
isHeartBeatProcessing: false,
43+
wasReferrerTracked: false,
4244
sessionContext: null as SessionContext | null,
4345
config: {
4446
...defaultConfiguration,
@@ -174,6 +176,8 @@ export const createAnalyticsModule = ({
174176
startProcessing();
175177
// start the heart beat processor //
176178
clearHeartBeatProcessor = startHeartBeatProcessor(track);
179+
// track the referrer event //
180+
trackReferrerEvent(track);
177181
// start the visibility change listener //
178182
if (typeof window !== "undefined") {
179183
window.addEventListener("visibilitychange", onVisibilityChange);
@@ -233,6 +237,15 @@ function startHeartBeatProcessor(track: (params: TrackEventParams) => void) {
233237
};
234238
}
235239

240+
function trackReferrerEvent(track: (params: TrackEventParams) => void) {
241+
if (typeof window === "undefined" || analyticsSharedState.wasReferrerTracked)
242+
return;
243+
analyticsSharedState.wasReferrerTracked = true;
244+
const referrer = document.referrer;
245+
if (!referrer) return;
246+
track({ eventName: ANALYTICS_REFERRER_EVENT_NAME, properties: { referrer } });
247+
}
248+
236249
function getEventIntrinsicData(): TrackEventIntrinsicData {
237250
return {
238251
timestamp: new Date().toISOString(),

0 commit comments

Comments
 (0)