Your DAU/MAU ratio tells you how much of your monthly user base is actually coming back daily. If it's dropping, you need to know fast. Amplitude lets you set up alerts on this metric so you catch problems before they become bigger issues.
Create a DAU/MAU Ratio Chart
Amplitude doesn't have a built-in DAU/MAU metric, so you'll create it using a formula that divides your daily and monthly active user counts.
Open your dashboard and add a new chart
In Amplitude, go to Dashboards and either open an existing dashboard or create a new one. Click + Add chart to start.
Set up segmentation for DAU and MAU
Add your first chart as Segmentation. Choose Active Users as your metric and set time grain to Day. Create a second segmentation chart with Active Users and time grain set to Month. You now have the raw counts you need for the ratio.
// Query Amplitude API to get DAU and MAU counts
const getEngagementMetrics = async (apiKey, startDate, endDate) => {
const dauQuery = await fetch('https://api.amplitude.com/2/metrics', {
method: 'POST',
headers: { 'Authorization': `Bearer ${apiKey}` },
body: JSON.stringify({
metric: 'active_users',
group_by: 'day',
start: startDate,
end: endDate
})
});
const mauQuery = await fetch('https://api.amplitude.com/2/metrics', {
method: 'POST',
headers: { 'Authorization': `Bearer ${apiKey}` },
body: JSON.stringify({
metric: 'active_users',
group_by: 'month',
start: startDate,
end: endDate
})
});
return { dau: await dauQuery.json(), mau: await mauQuery.json() };
};Create a formula to calculate the ratio
Click Add formula on your dashboard. Divide the DAU metric by the MAU metric (e.g., [DAU] / [MAU]). Your ratio will typically fall between 0 and 1. A ratio of 0.35 means 35% of your monthly users returned today.
Configure the Alert
Once your ratio chart is live, you can set thresholds that trigger notifications when engagement dips.
Open alert settings on your chart
Click the three-dot menu on your DAU/MAU ratio chart and select Alert. This opens the alert configuration.
Set your threshold and check frequency
Set a lower bound threshold (for example, 0.20, meaning alert if the ratio drops below 20%). Select less than (<) as your operator. Choose how often Amplitude should check—hourly works for volatile products, daily for stable ones.
Choose your notification channel
Amplitude can send alerts to Email, Slack, or Webhook. For immediate visibility, use Slack. For less-critical alerts, email is fine. If you're integrating with an incident management tool, use the webhook.
// Handle incoming Amplitude alert via webhook
const handleAlert = (req, res) => {
const { metric_name, metric_value, threshold, triggered_at, condition } = req.body;
console.log(`Alert triggered: ${metric_name} = ${metric_value} (threshold: ${threshold})`);
// Log to your monitoring system
if (metric_value < threshold) {
// Your DAU/MAU ratio fell below the threshold
// Trigger incident response, page oncall, or log to Datadog/New Relic
}
res.status(200).json({ received: true });
};Test before going live
Click Test alert to verify your Slack channel or webhook actually receives the notification. This catches configuration errors before the alert silently fails.
Automate Alerts with the API
If you manage multiple dashboards or want to create alerts programmatically, use Amplitude's Alerts API.
Retrieve your API credentials
Go to Settings > API keys in Amplitude and grab your API key and secret. These authenticate your API requests.
Create the alert programmatically
Use the Alerts API to create, update, or delete alerts without the UI. This is useful for scaling monitoring across many dashboards or managing alerts in code.
// Create a DAU/MAU alert via Amplitude Alerts API
const createDAUMAUAlert = async (apiKey, webhookUrl) => {
const response = await fetch('https://api.amplitude.com/v1/alerts', {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'DAU/MAU Engagement Alert',
description: 'Alert if daily/monthly active user ratio drops below 25%',
metric_name: 'active_users',
threshold: 0.25,
condition: 'less_than',
check_frequency: 'daily',
notification_channels: [
{ type: 'webhook', url: webhookUrl }
]
})
});
const alert = await response.json();
console.log(`Alert created with ID: ${alert.id}`);
return alert;
};Common Pitfalls
- Setting your threshold too low—healthy products see 0.25–0.40. If you alert at 0.10, you'll never get notified.
- Not accounting for seasonality or rollouts—a single day's dip will trigger false positives. Use a 3-5 day rolling average instead of a single day.
- Misconfiguring the notification channel—test your Slack webhook or email before relying on it. Amplitude fails silently if the endpoint is invalid.
- Mixing cohorts or segments—if your DAU includes one country filter but MAU doesn't, your ratio becomes meaningless. Keep both definitions identical.
Wrapping Up
You now have real-time visibility into whether your users are actually coming back. A DAU/MAU alert catches regressions fast—bad releases, onboarding problems, seasonal dips. If you want to track this automatically across tools, Product Analyst can help.