DAU, WAU, and MAU—daily, weekly, and monthly active users—are the foundation of measuring product engagement. If you're trying to understand whether your product's growth is real or just noise, these metrics cut through the static. Mixpanel makes it straightforward to track and compare them.
What DAU, WAU, and MAU Actually Mean
These three metrics measure unique users over different time windows. They're not about raw session counts—they're about who came back.
Daily Active Users (DAU)
DAU counts the number of unique users who triggered at least one tracked event on a given day. In Mixpanel, this is calculated from events you send with a distinct_id. A user visiting on Monday and Tuesday counts as 2 DAU (one per day), not a single returning user yet.
// Tracking an event that counts toward DAU
mixpanel.track('Page View', {
'Page Name': 'Dashboard',
'Device Type': 'Desktop'
});
// Each day this user triggers an event = +1 to that day's DAUWeekly Active Users (WAU)
WAU counts unique users who had at least one tracked event in a calendar week (typically Sunday through Saturday). If a user was active on Monday and Friday of the same week, they contribute 1 to that week's WAU, not 2.
// WAU is automatically calculated by Mixpanel
// The same events that build DAU also build WAU
mixpanel.track('User Login', {
'Email': '[email protected]',
'Plan Type': 'Pro'
});
// This event on Thursday counts toward that week's WAUMonthly Active Users (MAU)
MAU counts unique users with at least one event in a calendar month. If a user was active on the 5th and the 25th of March, they count as 1 MAU for March. MAU hides churn—it only shows who came back sometime that month, not how consistently.
// All events feed into MAU calculation
mixpanel.track('Feature Used', {
'Feature Name': 'Export Report',
'Export Format': 'PDF'
});
// Being active once in March = +1 to March's MAU
// Dropoff (inactive April-May-June) won't show until next monthWhy DAU/WAU/MAU Ratios Matter
Raw numbers are less useful than the ratio between them. The ratios tell you whether users are sticky or just casual.
Reading the DAU/MAU Ratio
Divide DAU by MAU. A ratio of 0.5 means half your monthly users came back on any given day—that's decent engagement. A ratio of 0.1 means only 10% of your monthly users are daily active, which signals weak habit formation. Mixpanel's Retention report (under Insights) shows this directly.
// Fetch retention data from Mixpanel API to calculate ratios
const getRetentionData = async (projectToken, startDate, endDate) => {
const response = await fetch(
`https://mixpanel.com/api/2.0/retention?from_date=${startDate}&to_date=${endDate}&retention_type=daily`,
{
headers: {
'Authorization': 'Basic ' + btoa(projectToken + ':')
}
}
);
return response.json();
};
getRetentionData('YOUR_TOKEN', '2024-01-01', '2024-01-31');Comparing DAU, WAU, and MAU Trends
In Mixpanel, go to Reports > Active Users and view the chart. You'll see DAU, WAU, and MAU graphed over time. Flat DAU but rising MAU means you're acquiring but not retaining. Rising all three means you're both growing and keeping users.
// Query Mixpanel API for 30-day active user trends
const getDauWauMauTrends = async (token) => {
const response = await fetch(
'https://mixpanel.com/api/2.0/events/top?type=general&limit=40&unit=day',
{
headers: {
'Authorization': 'Basic ' + btoa(token + ':')
}
}
);
return response.json();
};
// Compare the trend lines to spot retention patterns
getDauWauMauTrends('YOUR_TOKEN').then(data => {
console.log('DAU/WAU/MAU trend:', data);
});Setting Up Proper Event Tracking for Accurate DAU/WAU/MAU
These metrics only work if you're tracking events consistently. Mixpanel uses distinct_id to identify unique users across sessions.
Initialize Mixpanel with a Distinct ID
Every user needs a stable distinct_id. For logged-in users, use their user ID. For anonymous visitors, Mixpanel auto-generates one. Make sure you're not resetting the ID between sessions, or Mixpanel will treat the same person as multiple users.
// Initialize Mixpanel (SDK auto-assigns distinct_id for anon users)
mixpanel.init('YOUR_PROJECT_TOKEN');
// For logged-in users, explicitly identify them
if (user.id) {
mixpanel.identify(user.id); // Use user ID as distinct_id
mixpanel.people.set({
'$name': user.name,
'$email': user.email,
'Signup Date': user.createdAt
});
}Track Events Consistently
Send events on meaningful user actions—not on every pixel load. Mixpanel counts unique users per day/week/month, not event frequency. One event per user per day = 1 DAU contribution. Track logins, feature usage, or page views that signal real engagement.
// Track intentional user actions
mixpanel.track('Dashboard Opened', {
'Plan': 'Pro',
'Region': 'US'
});
mixpanel.track('Report Exported', {
'Report Type': 'Monthly Summary',
'Format': 'PDF'
});
// Multiple events per user per day still = 1 DAU
// Mixpanel aggregates by unique user, not event volumeCommon Pitfalls
- Confusing DAU with daily sessions—a user with 5 sessions on the same day is still 1 DAU, not 5
- Assuming MAU growth means retention is healthy—MAU can hide churn if churned users stop appearing partway through the month
- Resetting distinct_id between sessions for the same logged-in user—this makes Mixpanel count them as different people, artificially inflating metrics
- Tracking every interaction as an event—you'll drown your data in noise and lose signal on real engagement patterns
Wrapping Up
DAU, WAU, and MAU are simple but powerful. DAU shows daily habit strength, WAU bridges the gap, and MAU reveals your total addressable base. The ratios matter more than raw counts—a 0.5 DAU/MAU ratio is healthier than 10 million MAU with a 0.05 ratio. Track consistently, keep your distinct_id stable, and watch the trends. If you want to track these metrics automatically across all your tools and build more sophisticated cohort analysis, Product Analyst can help.