diff --git a/web/src/components/PostHogProvider.tsx b/web/src/components/PostHogProvider.tsx index 60213046..8ddb9a26 100644 --- a/web/src/components/PostHogProvider.tsx +++ b/web/src/components/PostHogProvider.tsx @@ -15,7 +15,7 @@ export function PostHogProvider({ children }: { children: React.ReactNode }) { api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://eu.i.posthog.com", capture_pageview: false, // We capture pageviews manually capture_pageleave: true, // Enable pageleave capture - person_profiles: 'identified_only', + person_profiles: "identified_only", loaded(posthogInstance) { // @ts-expect-error window.posthog = posthogInstance diff --git a/web/src/lib/posthog-utils.ts b/web/src/lib/posthog-utils.ts index 8fb50bde..b5be3fd1 100644 --- a/web/src/lib/posthog-utils.ts +++ b/web/src/lib/posthog-utils.ts @@ -3,17 +3,17 @@ import { pb } from "./pb" /** * Identifies a user in PostHog with their PocketBase user data * Follows PostHog best practices for user identification - * + * * @param posthog - PostHog instance * @param user - PocketBase user model (optional, will use current auth if not provided) */ export function identifyUserInPostHog(posthog: any, user?: any) { if (!posthog) return - + const userData = user || pb.authStore.model - + if (!userData) return - + // Use PocketBase user ID as distinct_id (unique string) // Pass all available person properties for complete profile posthog.identify(userData.id, { @@ -33,12 +33,12 @@ export function identifyUserInPostHog(posthog: any, user?: any) { /** * Resets PostHog identity (should be called on logout) * This unlinks future events from the user - * + * * @param posthog - PostHog instance */ export function resetPostHogIdentity(posthog: any) { if (!posthog) return - + // Reset PostHog identity to unlink future events from this user // This is important for shared computers and follows PostHog best practices posthog.reset()