What is Product Analytics?
Product analytics measures how users interact with your product. It helps understand user behavior, identify improvements, and drive growth.
typescript
// Key metrics to track
interface ProductMetrics {
acquisition: number; // New users
activation: number; // Users who reach AHA moment
retention: number; // Users who return
revenue: number; // Revenue generated
referral: number; // Users who refer others
}Key Metrics
Acquisition Metrics
typescript
// Track where users come from
function trackAcquisition(source: string) {
analytics.track('user_acquired', {
source,
medium: 'organic',
campaign: null,
timestamp: new Date()
});
}
// Measure conversion rate
const conversionRate = (signUps / visitors) * 100;Activation Metrics
typescript
// Track user activation
function trackActivation(userId: string, action: string) {
analytics.track('user_activated', {
userId,
activationAction: action,
timeToActivation: calculateTimeToActivation(userId)
});
}
// AHA moment example
const isActivated = user.postsCreated >= 3;Retention Metrics
typescript
// Cohort analysis
function calculateRetention(cohort: Date[]): number[][] {
const retention: number[][] = [];
for (let week = 0; week < 8; week++) {
const activeUsers = cohort.filter(user =>
isActive(user, week)
).length;
retention[week] = [week, (activeUsers / cohort.length) * 100];
}
return retention;
}
// Retention rate
const retentionRate = (returningUsers / totalUsers) * 100;Analytics Tools
Event Tracking
typescript
// Custom event tracking
class AnalyticsTracker {
track(eventName: string, properties?: Record<string, any>) {
const event = {
name: eventName,
properties: {
...properties,
timestamp: new Date(),
userId: this.getUserId(),
sessionId: this.getSessionId()
}
};
this.send(event);
}
trackPageView(page: string) {
this.track('page_view', { page });
}
trackButtonClick(buttonId: string) {
this.track('button_click', { buttonId });
}
}Funnel Analysis
typescript
interface FunnelStep {
name: string;
event: string;
users: number;
}
function analyzeFunnel(steps: FunnelStep[]) {
const conversion = [];
let previousUsers = Infinity;
for (const step of steps) {
const stepConversion = (step.users / previousUsers) * 100;
conversion.push({
step: step.name,
users: step.users,
conversion: stepConversion,
dropOff: 100 - stepConversion
});
previousUsers = step.users;
}
return conversion;
}A/B Testing
Experiment Design
typescript
interface Experiment {
name: string;
variants: string[];
metrics: string[];
trafficSplit: number[];
}
function runExperiment(experiment: Experiment) {
const variant = assignVariant(experiment.trafficSplit);
// Track assignment
analytics.track('experiment_viewed', {
experiment: experiment.name,
variant
});
// Track metrics
for (const metric of experiment.metrics) {
analytics.track(`metric_${metric}`, {
experiment: experiment.name,
variant,
value: calculateMetric(metric)
});
}
}User Segmentation
Behavioral Segmentation
typescript
function segmentUsers(users: User[]) {
return {
powerUsers: users.filter(u => u.loginCount > 20),
casualUsers: users.filter(u => u.loginCount > 5 && u.loginCount <= 20),
atRiskUsers: users.filter(u => u.loginCount > 0 && u.loginCount <= 5),
churnedUsers: users.filter(u => u.loginCount === 0)
};
}Best Practices
- 1Define clear metrics
- 2Track user journeys
- 3Segment users
- 4Run A/B tests
- 5Iterate based on data
Conclusion
Product analytics guides decisions. Track key metrics, understand user behavior, and continuously improve your product.
Make data-driven decisions!