Analytics & Intelligence

How to Set Up Metabase Slack Integration: Step-by-Step

J
James Eriksson
··7 min read
Connect Metabase dashboards to Slack in 15 minutes. Step-by-step setup, alert configuration, troubleshooting image/private channel issues, and best practices to avoid alert fatigue.
TL;DR
  • Metabase's Slack integration uses a built-in app manifest and OAuth flow; setup takes 10-15 minutes.
  • Subscribe dashboards to channels on a schedule (hourly, daily, weekly, custom). Create alerts that fire conditionally when metrics hit thresholds.
  • Most issues: missing files:write scope (images don't show), bot not invited to private channels, or users with row/column security blocked from creating alerts.
  • Metabot (Cloud/Enterprise only) lets team members ask natural language questions in Slack without leaving the app.
  • Use subscriptions for routine reports, alerts for emergencies. Name alerts clearly and set re-check frequency to prevent alert fatigue.

Metabase's native Slack integration sends dashboard subscriptions and alerts directly to your team's channels. Set it up using Metabase's built-in Slack app manifest and OAuth flow, no custom coding required. Most setups take 10-15 minutes.

Why Integrate Metabase with Slack?

Three things matter here: dashboards reach your team where they already communicate, automated subscriptions eliminate the "go check the dashboard" friction, and real-time alerts fire when metrics hit thresholds you define. Metabot, Metabase's AI agent in Slack, lets team members ask data questions directly without switching apps.

Subscriptions send snapshots of full dashboards on a schedule: hourly, daily, weekly, or custom. Alerts fire only when conditions are met, like revenue dropping below a target or error rates spiking. Both prevent silence around metrics that matter. Over 60% of Metabase deployments use Slack integration, according to Metabase's own surveys.

Prerequisites: What You Need

You need admin access in both Metabase and your Slack workspace. Metabase v0.65 or later includes native Slack integration. Earlier versions require custom webhooks or third-party connectors.

In Metabase, go to Admin > Settings to configure the connection. In Slack, you need workspace admin rights to create and install the Slack app. Individual users don't need special permissions yet, that comes when you configure who can subscribe or create alerts.

Step 1: Create Your Slack App

Use Metabase's app manifest to skip manual configuration. The manifest pre-configures OAuth scopes and prevents setup mistakes that break images or private channel access.

In Metabase, navigate to Admin > Settings > Slack and click "Create a Slack App." Metabase generates a manifest in YAML format. Copy it. Then open api.slack.com/apps/new in your browser, find the "From an app manifest" button (not the default UI flow), select your workspace, and paste the manifest. Slack auto-creates the bot with four OAuth scopes: chat:write (send messages), files:write (send images and charts), channels:read (list channels), and groups:read (list private channels). These scopes are why the manifest matters: a missing files:write breaks image delivery, and missing groups:read hides private channels from dropdowns.

Step 2: Connect Metabase to Slack

Paste your bot token into Metabase and test the connection. Go to api.slack.com, find your app, and navigate to OAuth & Permissions. Copy the Bot User OAuth Token (starts with xoxb-). Return to Metabase Admin > Settings > Slack and paste it into the "Bot User OAuth Token" field. Click "Test Connection" -- you should see a success message.

If the test fails: verify the token is correct, confirm the bot has channels:read and groups:read scopes, and check that your network allows HTTPS to Slack. Metabase stores the token encrypted. Optional: set the bot's icon in Slack > Basic Information > Display Information for visual polish.

Step 3: Set Up Dashboard Subscriptions

Subscriptions send the full dashboard to Slack on a schedule you choose. Open any dashboard, click the three-dot menu, and select "Subscribe to dashboard." Choose Slack, pick the channel, and set the schedule: Hourly, Daily (pick time), Weekly (pick day and time), or Custom (cron expression, e.g., 0 9 * * 1 for 9am Mondays).

Metabase sends a snapshot of all dashboard cards, filters, and parameters as they appear on screen. For private channels, you must invite the Metabase bot to that channel first (see troubleshooting). One dashboard can subscribe to multiple channels; one channel can receive multiple dashboard subscriptions with no limits.

Step 4: Create Slack Alerts

Alerts fire conditionally when thresholds are met. Open a saved question, click the three-dot menu, and select "Create an alert." Choose Slack as the destination and pick the alert type:

  • Results exist: Fire every time the query returns rows.
  • Goal-based: Compare a metric against a fixed target. Fire if it drops below the target.
  • Progress: Compare two values in the result. Fire if one exceeds the other.

Set the threshold, message, and re-check frequency. Key difference from subscriptions: alerts are conditional and fire only on trigger. Subscriptions are unconditional and fire on schedule. Use alerts for emergencies (spike in errors, drop in revenue) and subscriptions for routine business reviews.

Troubleshooting Common Issues

Images not showing in Slack. Dashboard cards arrive blank with no images. Root cause: files:write scope missing or Site URL not configured. Fix: verify files:write:user is in the Slack app OAuth scopes. In Metabase Admin > Settings > General, check that Site URL is configured with your HTTPS domain (never localhost in production). Test the connection again.

Private channels missing from dropdown. Metabase bot is not a member of the private channel. Fix: open the private channel, click the channel name, go to Members, add your Metabase bot, and refresh the Metabase page. Private channel now appears in the dropdown.

Permission error: "You don't have permission to create alerts." Non-admin users or users with row/column security restrictions cannot create Slack alerts or subscriptions. Row and column security users have restricted data access; Metabase blocks them from creating alerts as a safety feature. Fix: ask an admin to create the alert on your behalf, or grant the user full read access to the dashboard (note: this means they see all rows and columns, which may violate your data governance rules). This is a tradeoff with no workaround in native Metabase.

Advanced: Metabot for Natural Language

Metabot lets team members ask data questions directly in Slack: "What's our monthly recurring revenue?" and get instant answers without opening Metabase. Enable it in Metabase Admin > Settings > Slack, then team members type /metabot <question> or mention @Metabase_Bot in a thread. Metabot translates the question, runs the query, and posts the result.

Prerequisites: Metabase Cloud or Enterprise with encryption at rest enabled. Self-hosted open-source Metabase does not support Metabot. Limitations: Metabot sees your full schema and answers only based on existing questions (it cannot create entirely new queries from scratch). Metabot responses are visible to all channel members, so avoid Metabot in channels with sensitive data. Use separate channels per data governance tier.

Best Practices for Slack Alerts

Manage alert fatigue with clear naming. Name alerts descriptively: "Revenue drop below $50k/day" beats "Alert 1." Include the threshold in the name. Set re-check frequency wisely: hourly for operational emergencies (payment failures, downtime), daily for business metrics (revenue, churn), weekly for trends. Metabase defaults to hourly; change it. Start with one non-critical dashboard to verify images load and channels are correct before rolling out to executive dashboards. Document alert purpose in a pinned channel message. Review active subscriptions quarterly and archive unused ones. Mute non-critical channels if they receive too many subscriptions daily.

Frequently Asked Questions

How do I see all active subscriptions and alerts? In Metabase Admin > Tools > Subscriptions & Alerts, you see all active items. Filter by "Slack" to see only Slack-bound subscriptions and alerts. You can pause or delete from this view.

What happens if I rotate my Slack bot token? You must update the token in Metabase Admin > Settings > Slack. Existing subscriptions and alerts will not fire until the new token is pasted. There is no automatic rotation.

Can I send different dashboards to different Slack channels? Yes. Create separate subscriptions for each dashboard and choose the target channel. One dashboard can subscribe to multiple channels; one channel can receive multiple subscriptions.

Does Metabase send alerts if a query returns no results? Depends on alert type. A "Results exist" alert fires only if rows are returned. For "no results" alerts (anomaly detection), use "Goal-based" with a threshold of 0.

Are Metabase Slack messages encrypted? Messages transit over Slack's HTTPS API. At rest, Slack stores them according to Slack's privacy policy. Metabase stores no local copy. If you have data governance concerns (PCI, HIPAA), do not send those dashboards to public Slack channels.

Can I schedule alerts to skip weekends? Not natively in Metabase. Alert frequency is time-based (hourly, daily, weekly), not day-based. To stop weekend alerts, use Zapier or a custom webhook that reads Metabase's API and blocks calls on weekends.

The Bottom Line

Metabase Slack integration connects your dashboards to your team's communication hub in 15 minutes. Create the Slack app, paste the bot token, subscribe your dashboards, and set alerts. Most issues stem from missing OAuth scopes or bots not invited to private channels. Once running, subscriptions and alerts keep teams informed without context-switching. For a deeper dive on hosting Metabase reliably, check out Opsily's guide to managed Metabase hosting at /hosting/metabase -- it includes native Slack integration with zero per-user fees, so your costs don't scale with headcount.

Host Metabase with Slack built-in
Opsily's managed Metabase hosting includes native Slack integration, automated backups, and zero per-user fees. Scale without extra costs.
Get Started Free

Ready to self-host your own apps?

One server. Multiple apps. No per-app fees.

Get started →