Event Tracking — Code Map
API
| File | Role |
|---|---|
apps/api/src/event-tracking/event-tracking.module.ts | Global module; exports EventTrackingService |
apps/api/src/event-tracking/event-tracking.service.ts | Facade: track, identify, onModuleDestroy |
Callers (known)
apps/api/src/announcements/announcements.service.ts—track('announcement_published', ...)apps/api/src/payments/payment-observability.service.ts(or equivalent) — delegates PostHog captureProgrammingEvents(libs/shared/src/lib/analytics/programming-events.ts) callers:apps/api/src/workouts/workouts.service.ts—create()(workout_created, always) andsetSections()(workout_created, only whendto.sourceis given)apps/api/src/class-sessions/class-sessions.service.ts—createInlineWorkout()(workout_created,source: 'quick')apps/api/src/daily-programming/daily-programming.service.ts—set()/setStatus()(wod_published)apps/api/src/exercises/exercise-overrides.service.ts—upsertOverride()(movement_customized,movement_video_replaced)apps/api/src/workout-results/workout-results.service.ts—create()(workout_done)apps/api/src/ai/parse/parse-commit.service.ts— passessource: 'paste'intoWorkoutsService.create/setSections(does not callEventTrackingServiceitself)- Web (client-side
posthog.capture, not through this API service):apps/web/src/components/overview/schedule/add-workout-popover.tsxandsession-detail-sheet.tsx(wod_post_started/wod_post_completed),apps/web/src/components/overview/workouts/workout-builder/use-builder-save.ts(wod_post_completedfor the builder entry, plusworkout_created.source),apps/web/src/components/member/workouts/workout-detail-drawer.tsx(whiteboard_opened),apps/web/src/components/shared/prescription/prescribed-section.tsx(movement_demo_opened)
Dependencies
posthog-node(vendor SDK).
Config
| Env | Purpose |
|---|---|
NODE_ENV | Required production for any network call |
POSTHOG_API_KEY | API key |
POSTHOG_HOST | Optional; default https://eu.i.posthog.com |