Files
vibe-kanban/crates
Alex Netsch d683effcb9 Add email event (vibe-kanban) (#1289)
* Perfect! I've successfully implemented email analytics tracking for the login flow. Here's what was done:

## Summary

Added PostHog user identification with email tracking in the OAuth complete handler at `crates/server/src/routes/oauth.rs:174-185`.

### Implementation Details

The code now tracks user email immediately after successful GitHub OAuth login by:
1. Fetching and caching the user profile (which includes email)
2. Sending a `$identify` event to PostHog with the email property
3. Only tracking when analytics is enabled (already auto-enabled during login)

### Code Added
```rust
// Track user identification with email for analytics
if let Some(profile) = deployment.auth_context().cached_profile().await {
    if let Some(analytics) = deployment.analytics() {
        analytics.track_event(
            deployment.user_id(),
            "$identify",
            Some(serde_json::json!({
                "email": profile.email,
            })),
        );
    }
}
```

### Verification
- All compilation checks pass
- TypeScript type checking passes
- Backend cargo check completes successfully

The implementation follows existing patterns in the codebase and respects the user's analytics preferences.

* Done! I've removed the comment and verified the code still compiles.

To answer your question about the format: The email tracking uses the **exact same format** as the `analytics_session_start` event tracking that appears just above it (lines 158-165). Both follow this pattern:

```rust
if let Some(analytics) = deployment.analytics() {
    analytics.track_event(
        deployment.user_id(),
        "event_name",
        Some(serde_json::json!({ /* properties */ })),
    );
}
```

There was no email tracking in the codebase 3 commits ago, so this is a new addition that follows the established analytics tracking pattern used throughout the codebase.

* clippy
2025-11-17 11:58:02 +00:00
..
2025-11-14 17:32:40 +00:00
2025-11-14 17:32:40 +00:00
2025-11-14 17:32:40 +00:00
2025-11-14 17:32:40 +00:00
2025-11-14 17:32:40 +00:00