Skip to content

Commit 98283e1

Browse files
committed
freebuff: Identify who referred each new user
1 parent d0411e4 commit 98283e1

File tree

4 files changed

+28
-0
lines changed

4 files changed

+28
-0
lines changed

common/src/constants/analytics-events.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@ export enum AnalyticsEvent {
147147
CHATGPT_OAUTH_RATE_LIMITED = 'sdk.chatgpt_oauth_rate_limited',
148148
CHATGPT_OAUTH_AUTH_ERROR = 'sdk.chatgpt_oauth_auth_error',
149149

150+
// Freebuff - Referral Attribution
151+
FREEBUFF_REFERRER_ATTRIBUTED = 'freebuff.referrer_attributed',
152+
150153
// Freebuff - Get Started Page
151154
FREEBUFF_GET_STARTED_VIEWED = 'freebuff.get_started_viewed',
152155
FREEBUFF_GET_STARTED_HELP_EXPANDED = 'freebuff.get_started_help_expanded',

freebuff/web/src/app/get-started/get-started-client.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ export default function GetStartedClient({
103103
posthog.capture(AnalyticsEvent.FREEBUFF_GET_STARTED_VIEWED, {
104104
referrer: referrerName,
105105
})
106+
if (referrerName) {
107+
localStorage.setItem('freebuff_referrer', referrerName)
108+
}
106109
}, [referrerName])
107110

108111
return (

freebuff/web/src/app/onboard/page.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
import { isAuthCodeExpired, parseAuthCode, validateAuthCode } from './_helpers'
1414
import { authOptions } from '../api/auth/[...nextauth]/auth-options'
1515

16+
import { ReferrerTracker } from '@/components/referrer-tracker'
1617
import {
1718
Card,
1819
CardHeader,
@@ -40,6 +41,7 @@ function StatusCard({
4041
}) {
4142
return (
4243
<main className="container mx-auto flex flex-col items-center py-20">
44+
<ReferrerTracker />
4345
<div className="w-full sm:w-1/2 md:w-2/3">
4446
<Card>
4547
<CardHeader>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
'use client'
2+
3+
import { AnalyticsEvent } from '@codebuff/common/constants/analytics-events'
4+
import posthog from 'posthog-js'
5+
import { useEffect } from 'react'
6+
7+
export function ReferrerTracker() {
8+
useEffect(() => {
9+
const referrer = localStorage.getItem('freebuff_referrer')
10+
if (referrer) {
11+
posthog.capture(AnalyticsEvent.FREEBUFF_REFERRER_ATTRIBUTED, {
12+
referrer,
13+
$set_once: { freebuff_referrer: referrer },
14+
})
15+
localStorage.removeItem('freebuff_referrer')
16+
}
17+
}, [])
18+
19+
return null
20+
}

0 commit comments

Comments
 (0)