6 min read

What Is Engagement Score in Mixpanel

Engagement Score measures how actively a user interacts with your product. In Mixpanel, this score helps you segment users—separating your power users from those who've gone dormant. Without it, you're flying blind on who's really using what.

What Engagement Score Actually Measures

Engagement Score isn't a single metric—it's a calculated value based on user behavior patterns.

Understanding the Three Components

Engagement Score combines event frequency (how often a user acts), recency (how recently they acted), and event diversity (how many different actions they perform). Mixpanel uses these signals to compute an overall activity score that reflects actual user value.

javascript
// Track events that contribute to engagement
mixpanel.track('Feature Used', {
  feature_name: 'dashboard',
  timestamp: new Date().toISOString()
});

// Set user properties for engagement tracking
mixpanel.people.set({
  'Last Active': new Date(),
  'Total Events': 142,
  'Engagement Level': 'high'
});
Events and properties tracked for engagement scoring

Why Recency Weights Heavy

A user who acted yesterday has higher engagement than one who acted six months ago. Mixpanel's calculations automatically weight recent events more heavily, so dormant users score lower without you manually recalculating anything.

javascript
// Query engagement metrics using Mixpanel Events API
const getEngagementData = async () => {
  const response = await fetch(
    'https://data.mixpanel.com/api/2.0/events',
    {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer YOUR_SERVICE_ACCOUNT_TOKEN',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        event: ['Feature Used', 'Dashboard Viewed'],
        unit: 'day',
        interval: 7
      })
    }
  );
  return response.json();
};

Using Engagement Score for User Segmentation

Once you understand engagement, you can segment users by activity level to target them differently.

Create Cohorts Based on Activity Levels

In Mixpanel, use Cohorts to build segments of users with similar engagement patterns. Filter by event count, days since last event, or specific feature usage. This is where engagement score becomes actionable for retention campaigns.

javascript
// Identify highly engaged users using the SDK
mixpanel.people.set({
  'Engagement Score': 85,
  'User Tier': 'power_user',
  'Days Since Last Action': 0
});

// Use get_distinct_id to track engagement per user
const userId = mixpanel.get_distinct_id();
mixpanel.track('User Segmented', {
  distinct_id: userId,
  engagement_tier: 'power_user'
});

Build Custom Engagement Tiers

Don't just rely on raw scores. Define tiers: Power Users (50+ events/month), Active Users (10-49), At Risk (1-9), and Dormant (0 last 30 days). Tag users with these tiers as properties so you can filter instantly in Insights and Funnels.

javascript
// Assign engagement tiers based on event volume
const assignEngagementTier = (eventCount) => {
  if (eventCount >= 50) return 'power_user';
  if (eventCount >= 10) return 'active';
  if (eventCount >= 1) return 'at_risk';
  return 'dormant';
};

// Set tier as a user property
const tier = assignEngagementTier(monthlyEventCount);
mixpanel.people.set({
  'Engagement Tier': tier,
  'Events This Month': monthlyEventCount
});

Track Engagement Changes Over Time

Set a baseline engagement score when the user signs up, then update it monthly. Use Funnels in Mixpanel to see how users move between tiers—who's graduating from at-risk to active, and who's churning to dormant.

javascript
// Set initial engagement tier at signup
mixpanel.people.set_once({
  'First Engagement Tier': 'new_user',
  'Signup Date': new Date()
});

// Track tier transitions as events for funnel analysis
mixpanel.track('Engagement Tier Changed', {
  previous_tier: 'at_risk',
  new_tier: 'active',
  event_count_this_month: 25
});

// Use this to build funnels: Signup → Active → Power User → Churn
Tip: Keep your tiers simple. A threshold based on events in the last 30 days beats complex formulas. Mixpanel's Insights report shows volume trends; use that to set realistic tier cutoffs for your product.

Common Engagement Score Mistakes

Getting engagement right requires avoiding these pitfalls.

Mistake: Ignoring Product Type When Setting Thresholds

Engagement norms vary wildly. A SaaS dashboard user might be highly engaged with 5 events/month; a social app user expects 50/day. Define engagement relative to your product, not some universal benchmark, by analyzing your own user behavior in Insights.

javascript
// Don't compare engagement across different features
// Instead, define separate thresholds per feature
const featureEngagementThresholds = {
  'Dashboard': { active: 5, power: 15 },
  'API': { active: 20, power: 100 },
  'Analytics': { active: 3, power: 10 }
};

// Track which feature drives engagement
mixpanel.track('Feature Engaged', {
  feature: 'Dashboard',
  engagement_level: 'power_user'
});

Mistake: Not Weighting Events by Business Value

Not all events are equal. A user who clicked a button 100 times isn't more engaged than one who completed a workflow once. Weight events by business value—use property filters in Mixpanel to exclude noise and focus on meaningful actions.

javascript
// Only track meaningful, user-initiated events
mixpanel.track('Critical Action Completed', {
  action: 'report_generated',
  business_value: 'high',
  time_to_complete: 245 // seconds
});

// Exclude low-value noise
mixpanel.track('User Engagement', {
  event_type: 'manual_action',
  user_initiated: true,
  is_automated: false
});

Mistake: Setting Score Once and Never Refreshing

Engagement is dynamic. Recompute scores weekly or monthly, not once at signup. Dormant users won't wake up if you're still labeling them as active based on their onboarding spike from six months ago.

javascript
// Refresh engagement scores regularly
const refreshEngagementScores = () => {
  const lastMonth = new Date();
  lastMonth.setMonth(lastMonth.getMonth() - 1);
  
  mixpanel.track('Engagement Score Recalculated', {
    period: 'monthly',
    calculation_date: new Date().toISOString(),
    baseline_date: lastMonth.toISOString()
  });
};

// Run this as a scheduled job, not just once
setInterval(refreshEngagementScores, 7 * 24 * 60 * 60 * 1000);

Common Pitfalls

  • Confusing raw event count with engagement—a power user often does fewer, more deliberate actions than button-clickers
  • Applying the same engagement thresholds across different features or user segments instead of defining product-specific baselines
  • Forgetting that engagement decays—last month's scores become stale fast, especially for at-risk users
  • Treating Engagement Score as a single number instead of a signal: always pair it with recency and event type

Wrapping Up

Engagement Score is your signal for which users are getting value and which ones are slipping away. Track it consistently, define tiers that match your product, and let Mixpanel's cohort tools do the heavy lifting. If you want to track this automatically across tools, Product Analyst can help.

Track these metrics automatically

Product Analyst connects to your stack and surfaces the insights that matter.

Try Product Analyst — Free