--- name: workleap-telemetry description: | Guide for Workleap's telemetry solution (@workleap/telemetry) that unifies Honeycomb, LogRocket, and Mixpanel with consistent correlation IDs. Use this skill when: (1) Initializing wl-telemetry in a frontend application (2) Working with correlation values (Telemetry Id, Device Id) and their lifecycle (3) Using Honeycomb for distributed tracing and performance analysis (4) Creating and enriching Honeycomb traces/spans using OpenTelemetry (5) Using LogRocket for session replay and frontend debugging (6) Using Mixpanel for product analytics and event tracking (7) Understanding Honeycomb, LogRocket, and Mixpanel roles in wl-telemetry (8) Correlating data across Honeycomb, LogRocket, and Mixpanel (9) Configuring loggers for wl-telemetry diagnostics (10) Using Noop telemetry clients to disable/mock telemetry (11) Reviewing PRs that add or modify telemetry instrumentation (12) Troubleshooting missing or inconsistent telemetry across tools --- # Workleap Telemetry (wl-telemetry) `@workleap/telemetry` is an umbrella package that integrates Honeycomb, LogRocket, and Mixpanel with consistent correlation IDs for unified debugging and analysis. ## Core Concepts ### Correlation Values Two automatic correlation IDs unify all telemetry platforms: | ID | Purpose | Honeycomb | LogRocket/Mixpanel | |---|---|---|---| | **Telemetry Id** | Single app load | `app.telemetry_id` | `Telemetry Id` | | **Device Id** | Device across sessions | `app.device_id` | `Device Id` | If LogRocket is enabled, Honeycomb and Mixpanel automatically receive `app.logrocket_session_url` / `LogRocket Session URL`. ### Platform Roles - **Honeycomb**: Distributed traces, performance monitoring, RUM metrics (LCP, CLS, INP) - **LogRocket**: Session replay, frontend debugging, user experience investigation - **Mixpanel**: Product analytics, event tracking, user behavior insights ## Quick Start ```typescript import { initializeTelemetry, TelemetryProvider } from "@workleap/telemetry/react"; const telemetryClient = initializeTelemetry({ logRocket: { appId: "your-app-id" }, honeycomb: { namespace: "your-namespace", serviceName: "your-service", apiServiceUrls: [/.+/g], options: { proxy: "https://your-otel-proxy" } }, mixpanel: { productId: "wlp", envOrTrackingApiBaseUrl: "production" } }); // Wrap application ``` ## Using Platform Clients ```typescript // Access via hooks const telemetryClient = useTelemetryClient(); const honeycombClient = useHoneycombInstrumentationClient(); const logRocketClient = useLogRocketInstrumentationClient(); const mixpanelClient = useMixpanelClient(); const track = useMixpanelTrackingFunction(); ``` ## Storybook/Testing (Noop Clients) ```typescript import { NoopTelemetryClient, TelemetryProvider } from "@workleap/telemetry/react"; const telemetryClient = new NoopTelemetryClient(); ``` ## Detailed References - **Full API Reference**: See [references/api.md](references/api.md) for complete APIs - **Integration Patterns**: See [references/integrations.md](references/integrations.md) for platform-specific patterns - **Usage Examples**: See [references/examples.md](references/examples.md) for common patterns ## Critical Rules 1. **Use umbrella package** - Always use `@workleap/telemetry`, not standalone packages 2. **Do not invent APIs** - Only use documented APIs from references 3. **Correlation is automatic** - Never manually set Telemetry Id or Device Id 4. **Noop for non-production** - Use `NoopTelemetryClient` in Storybook/tests 5. **Privacy matters** - Never log PII to LogRocket; use `data-public`/`data-private` attributes