Weekday morning KPI pulse from Metabase to Slack
Every weekday at 9am, get a written Slack summary of your Metabase numbers that leads with what changed, not a wall of charts.
Build me a weekday-morning KPI pulse that posts an AI-written digest of our Metabase numbers to a Slack channel. The differentiator vs. Metabase's native dashboard subscriptions is the written narrative and the prioritization of what matters today, so bias the message toward 'what changed' rather than dumping every number.
Trigger: cron, every weekday (Monday through Friday) at 9:00am in my timezone. Make the schedule, the Metabase question list, the threshold rules, and the destination Slack channel configurable so I can edit them without rewriting the workflow.
Inputs I want to configure at the top of the prompt:
1) A list of Metabase saved-question (card) IDs that represent our core KPIs, or alternatively a Metabase collection name/ID whose questions should all be included. If a collection is given, resolve it to the list of cards inside it at run time.
2) A short threshold spec in plain English, e.g. 'flag if daily signups drop below 50, flag if 7-day churn rises above 3%, flag any KPI that moves more than 15% day-over-day'. The agent should interpret these rules against the latest rows.
3) The Slack channel to post to (channel ID or name), and the tone/length of the message (default: concise, scannable, 6-10 lines).
Steps the agent should take each run:
Step 1. For each configured Metabase card, use the Metabase 'Run Card Query' operation to execute the saved question and pull back the latest result rows and column metadata. If a collection was configured instead of individual IDs, first list the cards in that collection and then run each one. If any single card errors (permission, broken SQL, etc.), capture the error message, skip that card, and continue.
Step 2. For each card, identify the headline number(s) and, where the result includes a time series or prior period, compute day-over-day and week-over-week movement. If the card only returns a single scalar, just report it. Detect anomalies (large swings, sign flips, threshold breaches per the configured spec) and tag them as 'movers' to surface first.
Step 3. Compose a short Slack message in Slack mrkdwn. Structure: a one-line header with today's date and a one-sentence executive read ('Signups soft, revenue holding, support backlog up sharply'), then 3-6 bullets that lead with the movers and threshold breaches, each bullet phrased as 'KPI name: value (delta vs yesterday, delta vs last week), one-sentence color'. After the movers, a compact 'Everything else' section with the remaining KPIs as a tight list. End with a 'Drill in' line that links each KPI to its Metabase card URL using <baseUrl/question/{cardId}|Card name> mrkdwn links. If any cards failed to run, add a final 'Heads up' line listing those names so I know to fix them.
Step 4. Use the Slack 'Send a Message' operation to post the composed message to the configured channel. Post as the authenticated user (this uses the slack user-token integration, not slack-bot). Plain text + mrkdwn is fine; no need for Block Kit unless it makes the digest meaningfully clearer.
Important behavior: do not paste raw tables into Slack. The whole point is the written prioritization. Keep the message short enough that someone reads it on their phone in 30 seconds. If nothing notable changed, say so explicitly ('Quiet morning, all KPIs within normal range') rather than padding the message.
Integrations to use: Metabase (Run Card Query) and Slack (Send a Message). Workflow type: agent.
Additional information
What does this prompt do?
- Runs your core Metabase saved questions on a schedule and pulls the latest result rows.
- Writes a short Slack message that leads with the headline numbers and calls out day-over-day and week-over-week movers.
- Flags anomalies and threshold breaches you describe in plain English, so the team sees what matters first.
- Links every metric back to its Metabase card so anyone can click through and dig in.
What do I need to use this?
- A Metabase account with API access and a few saved questions (or a collection) that represent your team's core KPIs.
- A Slack workspace and permission to post into the channel you want the digest to land in.
- A short list of the numbers you care about and any thresholds you want flagged (for example, signups under 50 or churn over 3%).
How can I customize it?
- Change the schedule. Weekday 9am is the default, but you can move it to Monday-only, twice a day, or any timezone.
- Swap the Metabase questions or point it at a whole collection so new KPIs get picked up automatically.
- Set the thresholds and tone. Tell the agent what counts as a red flag and how formal the message should sound.
- Pick the destination. Post to a leadership channel, a team channel, or a private DM.
Frequently asked questions
How is this different from Metabase's built-in Slack subscriptions?
Do I need to be on a paid Metabase plan?
Can it cover more than a handful of KPIs?
Will the Slack message look like it came from a bot?
What if a question fails to run one morning?
Stop opening five dashboards before your first coffee.
Connect Metabase and Slack once, and Geni delivers a written KPI recap every weekday at 9am.