Daily executive KPI breach alerts from Qlik to Slack and Jira
Every weekday at 8am, check your Qlik dashboards for KPIs that crossed your thresholds, post a Slack heads up, and open a Jira ticket for the ones that need investigation.
Build me an agent workflow that runs every weekday morning at 8am in my local time zone and alerts my leadership team when any executive KPI in Qlik Cloud has breached its threshold. It should also open a Jira ticket for the breaches that need analyst follow-up. If nothing breached, it should stay silent rather than post an all-clear.
Trigger: cron, Monday through Friday at 08:00 in the configured time zone (default America/New_York).
Configuration the prompt should expose at the top so I can edit it without touching the workflow:
1. KPI list. An array of KPIs to monitor. Each entry has: a human-readable name (e.g. 'Pipeline coverage'), the Qlik Cloud app ID (UUID), the sheet ID, the visualization/object ID for the chart that holds the metric, the field/column inside that chart that carries the current value, a comparison operator (>=, <=, >, <, ==), a threshold value, an optional unit (%, $, count, days), and an optional 'investigation_rule' block that says when this KPI also warrants a Jira ticket (for example {compare_to: 'prior_week_value', operator: 'pct_drop', threshold: 20} meaning 'open a ticket if this week's value is more than 20% below last week's value on the same chart').
2. Slack target. A channel name like #revenue-ops or #exec where the breach summary should be posted via the Slack Bot integration.
3. Jira target. A Jira project key (e.g. OPS or REVTRIAGE), an issue type (default 'Task'), an optional default assignee account id, and an optional default priority. This is where any breach that matches an investigation_rule should be filed.
Default starter values (placeholders the user is expected to replace): KPIs = [Pipeline coverage, Weekly bookings, Net churn rate, Support backlog age]; Slack channel = #revenue-ops; Jira project key = REVTRIAGE; time zone = America/New_York.
On each run, the agent should:
Step 1. For every KPI in the list, use Qlik Cloud 'Get Visualization Data' with the configured app ID, sheet ID, and visualization ID to read the current value of the metric. If the chart also contains a prior-period column (e.g. last week, last month), capture that too so investigation rules can compare period over period. If a fetch fails for one KPI, log it and continue with the rest, do not crash the run.
Step 2. Compare each KPI's current value against its operator and threshold. A KPI is 'breached' when the comparison is true (e.g. coverage <= 3.0x, churn >= 4%, support backlog >= 100 tickets aged >7d, weekly bookings <= $500k). Build a list of breached KPIs with: name, current value, threshold, unit, the prior period value if available, and a short plain-English 'likely driver' sentence derived from what the chart shows (e.g. 'coverage fell because Enterprise pipeline created last week is down 38% vs. the prior week').
Step 3. If the breached list is empty, stop the run. Do NOT post anything to Slack and do NOT open any Jira tickets. A silent run is the correct behavior.
Step 4. If there is at least one breach, use Slack Bot 'Send a Message' to post a single message in the configured channel. Format: a short top line like ':rotating_light: Morning KPI check, N breaches today', then one bullet per breached KPI with the name in bold, the current value, the threshold in parentheses, and the one-line likely-driver read. Use Slack mrkdwn (single asterisks for bold, not double). Keep the whole message under ~1500 characters so it stays scannable.
Step 5. For every breach whose KPI defines an investigation_rule AND that rule evaluates true (e.g. coverage dropped >20% week over week), use Jira 'Create Issue' on the configured project. Summary: 'KPI breach: <KPI name> — <current value> (threshold <threshold>)'. Description (Atlassian Document Format): a short paragraph restating the current value, threshold, prior-period value, and the same likely-driver sentence, plus a link to the Qlik app/sheet so the analyst can open the chart directly. Use the configured issue type, default assignee, and priority. After creating each issue, append its Jira issue key into the Slack message so the team sees that a ticket already exists (either by updating the message at the end, or by posting the ticket links as a threaded reply to the Slack post).
Guardrails: never open more than one Jira ticket per KPI per day, even if the workflow is re-run. Treat missing/null KPI values as 'unknown', not as a breach. If Qlik returns no data for a configured chart, include that KPI in the Slack message under a 'Data unavailable' section so the team knows the dashboard, not the metric, is the problem.
Integrations to use: Qlik Cloud (Get Visualization Data), Slack Bot (Send a Message), Jira (Create Issue).
Additional information
What does this prompt do?
- Reads the executive KPIs you care about (pipeline coverage, weekly bookings, churn, support backlog, whatever you point it at) straight from your Qlik Cloud charts each morning.
- Compares every KPI to the thresholds you set in the prompt and flags only the ones that breached, so leadership never gets a noisy empty digest.
- Posts a short, plain English heads up in your revenue-ops or exec Slack channel with the current value, the threshold, and a one line read on what is likely driving the breach.
- Opens a Jira ticket on your triage project for the breaches that meet your investigation rule, so an analyst always owns the follow up.
What do I need to use this?
- A Qlik Cloud login that can read the dashboard apps and charts you want to monitor.
- A Slack workspace where you can install our bot and point it at a channel like #revenue-ops or #exec.
- A Jira project where breach tickets should land, and a login that can create issues in it.
- The Qlik app and chart references for each KPI, plus the threshold values you want to alert on.
How can I customize it?
- Swap the list of KPIs, charts, and threshold values to match your own executive dashboard.
- Change the run time, days of the week, or time zone so the alert lands when your leadership team actually checks Slack.
- Adjust the investigation rule (for example, ticket only when pipeline coverage drops more than 20 percent week over week) so Jira only sees the breaches worth working.
- Point Slack at a different channel, and Jira at a different project, board, or issue type as your team structure changes.
Frequently asked questions
What happens on a day when nothing is broken?
Can I monitor KPIs that live in more than one Qlik app?
Will every breach become a Jira ticket?
Can I change the Slack channel or Jira project later?
What if my dashboard data has not refreshed yet at 8am?
Stop refreshing dashboards at 7:55am.
Connect Qlik, Slack, and Jira once, and Geni delivers a clean breach-only briefing every weekday morning, with tickets already opened for the items worth investigating.