Skip to content

Instantly share code, notes, and snippets.

@abhishekpatel946
Last active April 14, 2023 03:10
Show Gist options
  • Save abhishekpatel946/f671edc2640be436a1ac1744806c4fab to your computer and use it in GitHub Desktop.
Save abhishekpatel946/f671edc2640be436a1ac1744806c4fab to your computer and use it in GitHub Desktop.
A tiny open-source posthog custom plugin for analytics support. https://getanalytics.io/
import posthog from 'posthog-js'
import { env } from '../../configs'
type Config = {
token: string
enabled: boolean
}
export default function postHog(config: Config) {
let isPostHogLoaded = false
return {
name: 'posthog',
initialize: (): void => {
if (config.enabled && typeof window !== 'undefined') {
posthog.init(config.token, { api_host: env.NEXT_PUBLIC_POSTHOG_HOST })
isPostHogLoaded = true
}
},
track: ({ payload }: any): void => {
posthog.capture(payload.event, payload.properties)
},
page: ({ payload }: any): void => {
posthog.capture('$pageview', payload.properties)
},
identify: ({
payload,
}: {
payload: {
userId: string
traits: {
$set?: object
$set_once?: object
}
}
}): void => {
const { userId } = payload
const { $set, $set_once } = payload.traits
if (userId) {
posthog.identify(payload.userId, $set, $set_once)
}
},
loaded: (): boolean => {
return isPostHogLoaded
},
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment