mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-25 16:56:22 +02:00
- Added referral code tracking in PostHog initialization to capture initial and last seen referral codes. - Wrapped PostHog capture calls in a safeCapture function to prevent app breakage due to ad-blockers. - Introduced PostHogReferral component in PostHogProvider for improved referral tracking.
34 lines
931 B
TypeScript
34 lines
931 B
TypeScript
"use client";
|
|
|
|
import { useEffect } from "react";
|
|
import { trackReferralLanding } from "@/lib/posthog/events";
|
|
|
|
const REF_STORAGE_KEY = "surfsense_ref_code";
|
|
|
|
/**
|
|
* Captures the ?ref=<code> URL parameter on first landing and fires a
|
|
* PostHog event so marketing campaigns can be attributed.
|
|
*
|
|
* The ref code is persisted to sessionStorage so it survives client-side
|
|
* navigations that strip query params (e.g. login redirect), but a fresh
|
|
* event is fired for each new browser session with a ref param.
|
|
*/
|
|
export function PostHogReferral() {
|
|
useEffect(() => {
|
|
if (typeof window === "undefined") return;
|
|
|
|
const params = new URLSearchParams(window.location.search);
|
|
const ref = params.get("ref");
|
|
|
|
if (ref) {
|
|
try {
|
|
sessionStorage.setItem(REF_STORAGE_KEY, ref);
|
|
} catch {
|
|
// Private browsing may block sessionStorage
|
|
}
|
|
trackReferralLanding(ref, window.location.href);
|
|
}
|
|
}, []);
|
|
|
|
return null;
|
|
}
|