@@ -13,6 +13,7 @@ import type { AuthModule } from "./auth.types";
1313import { generateUuid } from "../utils/common" ;
1414
1515export const USER_HEARTBEAT_EVENT_NAME = "__user_heartbeat_event__" ;
16+ export const ANALYTICS_REFERRER_EVENT_NAME = "__referrer_event__" ;
1617export const ANALYTICS_CONFIG_ENABLE_URL_PARAM_KEY = "analytics-enable" ;
1718
1819export 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+
236249function getEventIntrinsicData ( ) : TrackEventIntrinsicData {
237250 return {
238251 timestamp : new Date ( ) . toISOString ( ) ,
0 commit comments