Core Concepts
Event Tracking
Events are discrete user actions:
- page_view, button_click, form_submit
- purchase, signup, login
- custom business events
Structure: { "event": "purchase_completed", "userId": "user-123", "timestamp": "2024-01-15T10:30:00Z", "properties": { "amount": 99.99, "currency": "USD", "items": ["product-1", "product-2"] } }
### User Identification
Identify: Link anonymous → authenticated user Alias: Merge multiple identities
Flow:
- Anonymous visitor (device_id: abc123)
- User signs up (user_id: user-456)
- Identify call links abc123 → user-456
- Historical events attributed to user-456
### Funnels
Conversion funnels track multi-step processes:
Signup Funnel: Landing Page (1000 visitors) ↓ 60% conversion Signup Form (600 started) ↓ 75% conversion Email Verification (450 sent) ↓ 80% conversion Profile Complete (360 completed)
Overall: 36% conversion rate
### Cohorts
Group users by shared characteristics:
Time-based:
- "January 2024 signups"
- "Users active in last 7 days"
Behavior-based:
- "Users who completed onboarding"
- "Power users (>10 sessions/week)"
Attribute-based:
- "Enterprise plan users"
- "Mobile-only users"
### User Journeys
Session-based path analysis:
Typical Journey: Homepage → Product List → Product Detail → Cart → Checkout → Confirmation
Touchpoints to track:
- Entry point (referrer, campaign)
- Pages visited (sequence, duration)
- Actions taken (clicks, scrolls)
- Exit point (conversion or drop-off)
## Analytics Providers
### Provider Comparison
| Provider | Best For | Pricing |
|----------|----------|---------|
| Google Analytics | Free tier, SEO | Free / 360 |
| Mixpanel | Product analytics | Event-based |
| Amplitude | Behavioral analytics | MTU-based |
| Segment | CDP + routing | MTU-based |
### Provider Abstraction
// Provider-agnostic interface interface AnalyticsProvider { trackEvent(event, properties) identifyUser(userId, traits) aliasUser(previousId, newId) setUserProperties(userId, properties) flush() // Force send buffered events }
// Multi-provider routing analytics.track("purchase", {amount: 99}) → Sends to GA4, Mixpanel, Amplitude simultaneously
## Metrics Framework
### AARRR Pirate Metrics
Acquisition: How do users find us?
- Traffic sources, campaign performance
Activation: Do users have a good first experience?
- Signup rate, onboarding completion
Retention: Do users come back?
- DAU/MAU, retention curves
Referral: Do users tell others?
- NPS, viral coefficient
Revenue: Do we make money?
- ARPU, LTV, conversion rate
### Event Naming Conventions
Format: object_action (snake_case)
Good:
- user_signed_up
- product_viewed
- order_completed
- subscription_cancelled
Bad:
- SignUp (inconsistent)
- click (too generic)
- userDidSomething (unclear)
## Implementation Patterns
### Event Schema
Standard properties (always include):
- timestamp: ISO 8601
- userId or anonymousId
- sessionId
- platform (web, ios, android)
- version (app version)
Event-specific properties:
- Relevant to the action
- No PII in event names
- Use IDs, not names for entities
### Privacy Considerations
GDPR/CCPA compliance:
- User consent before tracking
- Right to deletion (purge user data)
- Data minimization (track only needed)
- Anonymization options
- Data retention policies
## Related Skills
- `analytics-spring`: Spring Boot analytics implementation
- `apigen-architecture`: Overall system architecture