How to Set Up Metabase Alerts: Step-by-Step
Learn how to create and configure Metabase alerts on questions, set up email and Slack delivery, and troubleshoot common issues. Self-hosted setup included.
- Metabase alerts fire when your saved question data meets a condition: Results, Goal Line, or Progress Bar.
- Email and Slack must be configured by your admin before alerts can send; SMTP setup on self-hosted requires host, port, and credentials.
- Alert checks run on a schedule you set: minimum frequency is per-minute (v0.54+), but hourly is recommended for most databases.
- Common failures include disabled scheduled tasks, permission/RLS restrictions, SMTP misconfiguration, or expired Slack tokens.
- Test every alert by clicking Test Alert before relying on it; Metabase does not send all-clear notifications when conditions clear.
Metabase alerts are automated notifications that fire when your data meets specific conditions. You set them on saved questions and route them to email, Slack, or webhooks. Unlike dashboard subscriptions, which send static copies of entire dashboards, alerts are dynamic and reactive. Here's how to create and configure them on a self-hosted Metabase instance.
What Are Metabase Alerts (And How They Differ From Dashboard Subscriptions)
Metabase alerts and dashboard subscriptions are related but distinct features. An alert is a rule you attach to a saved question. When your data meets the alert's condition--for example, revenue exceeds $50K or falls below a goal--Metabase fires a notification. Alerts are reactive: they trigger only when your condition is true. Dashboard subscriptions, by contrast, are static. You subscribe to receive the entire dashboard on a schedule (daily, weekly, monthly) regardless of what's in it. If you want a message when something unusual happens, use an alert. If you want routine digests, use a subscription. Most teams use both: alerts for urgent signals, subscriptions for regular business review cycles.
Prerequisites: Email and Slack Setup (Admin Only)
Before you can send alerts, you need to configure at least one delivery channel. On self-hosted Metabase, this is an admin task. Email requires SMTP credentials: host, port, TLS/SSL settings, and optional auth. Slack requires creating a Slack app in your workspace and generating an OAuth token. Neither is difficult, but both must be done before your first alert fires. Your admin can configure these in Metabase's admin panel under Settings > Email or Settings > Slack Integration. If neither is set up, the alert creation UI will show a warning and prevent you from saving the alert. For step-by-step Slack setup, see the complete guide to Metabase Slack integration. Email configuration is covered in the next section.
How to Create an Alert on a Question: Step-by-Step
-
Start with a saved question. Open any question, run it, and check that your data is correct. Click the Save button at the top right if you haven't already. You cannot attach an alert to an unsaved question. For more on creating and structuring questions, see Opsily's guide to Metabase dashboards.
-
Click the three-dot menu () next to Save at the top. Select Alert Settings.
-
Choose your alert condition: Results, Goal Line, or Progress Bar (see next section for details). Select the column and comparison operator. For example: Revenue is greater than 50,000 or Orders count is less than 100.
-
Set a schedule. Metabase can check your condition every minute, hour, or on a custom cron schedule. If you use minute-level frequency (available in v0.54+), be aware of database load. For most questions, hourly is sufficient. Daily is common for high-volume queries.
-
Choose destinations: Email and/or Slack channel. You can send one alert to multiple channels at once. Enter recipient email addresses or select a Slack channel. Note that some channels may require special permissions; see the Slack section below.
-
Click Save and test immediately by clicking Test Alert if available in your version. Check your email and Slack to confirm delivery.
Your alert is now active. You can view and manage all active alerts from Admin > Settings > Alerts, or by returning to the question and clicking the three-dot menu again.
Alert Conditions: Results, Goal Line, and Progress Bar
Metabase offers three alert types, each suited to different use cases.
Results is the simplest. It fires whenever your question returns any rows matching your filter. For example, set a Results alert on Orders with status = cancelled and get notified the moment a cancellation is recorded. Useful for real-time event tracking. You can filter by column value: Alert me if Transactions table returns rows where Amount > 100,000.
Goal Line compares a metric against a target. Common example: Revenue for today is less than our $10K goal. You specify the column (usually a sum or count), the goal value, and whether the metric should be above or below. Fires only when the metric crosses the threshold. Good for tracking KPIs.
Progress Bar is the inverse. Instead of a fixed goal, it measures progress toward a target over time. Example: We've completed 75% of this month's sales target. Fires when progress reaches certain milestones (50%, 100%, etc.). Useful for time-bounded campaigns.
Most teams default to Results for transaction alerts and Goal Line for metrics. Progress Bar is less common but powerful for time-sensitive drives.
Setting Up Email Alerts (Including SMTP for Self-Hosted)
For self-hosted Metabase, you control the email configuration. Go to Admin > Settings > Email. You'll need SMTP credentials from your email provider or internal mail server.
Required fields:
- SMTP Host: Usually smtp.yourprovider.com (e.g., smtp.gmail.com for Google, mail.yourserver.com for internal)
- SMTP Port: 587 (TLS, most common) or 465 (SSL)
- Security: Select TLS or SSL. TLS on port 587 is standard; SSL on 465 also works. Avoid None in production.
- Username and Password: Often your email address and password or an app-specific token. Google requires an app password if 2FA is enabled.
Optional:
- From address: The sender email. Default is noreply@metabase.example.com; change to your branded address.
- Reply-to: Where replies go. Not all alert emails support replies, but setting it is good practice.
After entering credentials, Metabase offers a Send test email button. Use it. Send to your own inbox and confirm it arrives. If the test fails, check Metabase logs for SMTP error messages. Common issues include incorrect port, TLS/SSL mismatch, or auth failure.
Once test email succeeds, your alerts can send. Each alert destination can specify multiple recipient addresses, comma-separated.
Setting Up Slack Alerts
Slack alerts require a Slack app OAuth token. For detailed Slack app creation and authentication, see the complete guide to Metabase Slack integration. The short version: your admin creates a Slack app in your workspace (via manifest), installs it, and copies the OAuth token into Metabase's Slack settings. This happens once; after that, all alerts can route to Slack. When configuring an alert's Slack destination, select the channel. Private channels require the Slack app to be a member--check channel permissions if alerts to a private channel fail. If you rename a Slack channel after setting up an alert, the alert continues to work (Slack uses channel IDs internally, not names). If you delete the channel, alerts to it fail silently; you'll need to update the alert or delete it.
Why Alerts Don't Fire: Common Causes and Troubleshooting
Alerts sometimes fail to send. Start here:
The alert never fires at all (condition seems met): Check the scheduled task. Metabase runs alert checks as a background job. Verify it's enabled: Admin > Settings > Scheduled Tasks > Check for alerts should be ON. If OFF, enable it and wait for the next check cycle (usually within the minute). If the task shows an error, check your database connection and resource availability.
Condition is met but alert didn't send: Verify permissions. If the question has row-level security (RLS) restrictions, some users may not see the data triggering the alert. Check if the alert owner has permission to view all rows in the question. Alerts respect the creator's RLS filters.
Email arrives in spam or doesn't arrive: SMTP test passed but live alerts fail? Check: Are you sending to an external domain? Some hosts whitelist internal domains only. Did the email get rate-limited? If you're sending hundreds of alerts per hour, your ISP or recipient domain may throttle. Verify the From address is a valid, whitelisted domain for your mail server.
Slack alerts fail silently: The Slack OAuth token may have expired. Regenerate and update it in Metabase settings. The channel may have been deleted or the app removed from the workspace. Recreate the channel or reinstall the app. Check Metabase logs: Admin > Tools > Logs, filter for Slack errors.
Alert sent twice or not at all (flaky behavior): Rare, but can happen if the scheduled task crashes partway through. Restart the Metabase container or process. If flakiness persists, check database logs for locks or timeouts during the alert check cycle.
Best Practices: Scheduling, Permissions, and Alert Fatigue Prevention
Frequency: The smallest useful interval is once per hour for most teams. Minute-level alerts (available since v0.54) add database load; use them only for critical, low-volume queries. Daily checks are safest for large result sets or slow databases.
Alert fatigue: If an alert condition stays true for hours, Metabase fires it repeatedly on the configured schedule. Example: if Revenue < $10K is true and your alert checks hourly, you get an email every hour until revenue recovers. To prevent noise, either (a) accept it as intentional (some teams want hourly reminders of ongoing problems) or (b) use a Results condition with a time filter that excludes repeats (e.g., Orders created in the last 5 minutes). Slack alerts are usually less intrusive than email; route routine checks to Slack, urgent alerts to email.
Naming: Include the condition in the alert name. Daily Revenue Check is vague. Revenue < $10K - alert hourly tells you at a glance what it does.
Permissions: Alert creation is available to users with permissions to edit the question. Admins see all alerts; regular users see only their own. If a question is moved to a different database collection or archived, related alerts may break. Before archiving a question, check Admin > Settings > Alerts and delete or reassign its alerts.
Testing: Always test an alert before relying on it. Use the Test Alert button in the alert editor if available, or manually trigger the condition and verify the notification arrives within 1-2 minutes (depending on your check frequency). Do not assume an alert is live until you've seen it fire once.
Frequently Asked Questions
How do I edit an existing alert?
Open the question, click the three-dot menu (), and select Alert Settings. Modify the condition, schedule, or destinations, then save. Changes take effect immediately.
Can I send the same alert to multiple Slack channels?
Not directly. Each alert has one Slack destination. To send to multiple channels, create separate alerts on the same question with different Slack destinations. Metabase displays all alerts attached to a question in the three-dot menu.
What happens if I delete a question?
The alerts attached to it become orphaned and stop working. Metabase does not notify you. Before deleting a question, check Admin > Alerts and delete or reassign its alerts first.
Do alerts work with RLS (row-level security)?
Yes. Alerts respect the question creator's RLS filters. If the creator cannot see a row due to RLS, the alert condition won't fire for that row. This is by design but can be surprising if you expected an alert to trigger for data you think exists. Verify the alert creator's RLS permissions.
Can I use webhooks to send alerts somewhere custom?
Metabase supports webhooks in alert destinations, but webhook setup is not exposed in the UI by default. It requires configuration in the admin API or custom integration. Most teams stick to email and Slack.
Does Metabase send a follow-up alert when the condition clears?
No. Metabase alerts are one-way: they fire when the condition becomes true. They do not send all clear notifications. For two-way alerting, you'd need external tooling (e.g., a webhook receiver that tracks state).
How often can I check an alert condition?
Minimum frequency depends on your Metabase version. Modern versions (v0.54+) support per-minute checks, but we recommend hourly for databases with heavy query load. Each alert check runs the underlying question against your database, so frequent checks mean higher I/O and CPU.
The Bottom Line
Metabase alerts are straightforward to set up once you understand the three condition types and have email or Slack configured. Most teams fire them hourly or daily to catch important data events without overwhelming their inboxes. Test every alert once before relying on it; alert fatigue is real, and silent failures happen. Check out Opsily's managed Metabase hosting for a complete hosted environment with alerts pre-configured.