Guide · Jira
Jira approvals in Slack, Microsoft Teams and e-mail, without losing who decided
Approval Flow for Jira 3.0.0 is the production version (30 October 2026). Last updated 20 October 2026. On the Atlassian Marketplace.
By Bartosz Stankiewicz, founder, Stanki Guild.
Teams want approval requests where they already talk: a Slack channel, a Teams channel, an inbox. The risk is the opposite move, deciding there. A button in a chat message or a link in an e-mail cannot prove who clicked it: messages are forwarded, channels are shared, inboxes are delegated. For an approval that an auditor may later ask about, the decision has to be made by the person themselves, signed in.
The pattern in this guide keeps both: Jira Automation sends the message with Atlassian's own Slack, Microsoft Teams or e-mail action, and the message only links back to Jira, where the approver decides in the work item or in a personal approvals list. The action names come from our app, Approval Flow. It never calls Slack or Teams itself and has no approve-by-link.
What Approval Flow gives a rule
#Two Automation actions return values that later steps of the rule can use:
- Get approval status: approvedCount, requiredCount, rejected, complete, status, label (for example "1/3 approved"), pendingCount, overdueCount, nextDue and currentStage.
- List pending approvers: count, names, accountIds, emails, groups and approvalsUrl, a link to the approver's My approvals page with this work item first. E-mail addresses appear only where Jira shows them to the rule actor.
Without any action, a rule can also use Jira's own smart values, such as issue.url, issue.key and issue.summary (written in double curly braces in the rule builder), and the JQL fields approvalStatus, approvalPendingFor and approvalDue.
The exact smart value names for action outputs are shown in the rule builder when you add a later step; use the names it offers. Both actions need an active paid licence, which is free on sites with up to 10 users.
Recipe A: post to a Slack channel when a work item needs sign-off
#- Project settings, Automation, Create rule.
- Trigger: Work item transitioned to the status your approval validator guards, or Work item created if Approval Flow adds the policy automatically.
- Optional action: Apply approval policy with the exact policy name and the work item key from the smart value
issue.key(skip it when auto-apply already does this). - Action: List pending approvers, work item key from the smart value
issue.key. - Condition: Advanced compare, first value the
countoutput of the previous step, "greater than", 0. - Action: Send Slack message (Atlassian's Slack integration, with a webhook a Slack admin sets up). Message, for example: "Sign-off needed on" followed by a link to the work item (smart values
issue.url,issue.keyandissue.summary), "Waiting on:" with thenamesoutput, "Groups:" with thegroupsoutput, and "Decide in Jira:" with theapprovalsUrloutput. - Name the rule, turn it on and test it with one work item.
Recipe B: a daily Microsoft Teams digest of overdue sign-offs
#- Trigger: Scheduled, every weekday at 09:00, with "Run a JQL search and execute actions for each work item":
approvalStatus = "pending" AND approvalDue < now(). - Action: List pending approvers, work item key from the smart value
issue.key. - Optional action: Get approval status, to add its
labeloutput (for example "1/3 approved") to the text. - Action: Send Microsoft Teams message, with the incoming webhook URL from the Teams channel. Message, for example: "Overdue sign-off on" with the work item key, link and summary, "waiting on" with the
namesoutput, and "Open in Jira:" with theapprovalsUrloutput.
Recipe C: e-mail the approvers themselves
#- Trigger: Work item transitioned to the guarded status, or Scheduled with the JQL
approvalPendingFor is not EMPTY. - Action: List pending approvers.
- Condition: Advanced compare, the
emailsoutput "is not empty". - Action: Send email. To: the
emailsoutput. Subject: "Approval needed:" with the work item key and summary. Body: "Please review and approve or reject in Jira:" with theapprovalsUrloutput (or the work item link), and "The decision is recorded only when you make it signed in to Jira." - People who hide their e-mail address in their Atlassian profile are left out of
emails. For them, keep Approval Flow's own reminders on (a paid setting): Jira sends those to the account itself, whatever its profile visibility.
Check once in your own rule that Send email accepts the comma-separated list in To; if it does not, branch over the accounts instead.
On a phone
#The link in each message opens My approvals. Atlassian's Jira mobile apps do not show Forge apps yet (Atlassian's issues FRGE-538 and FRGE-1492), so on a phone open the link in the browser: Approve and Reject are full-width buttons there, and Approve is one tap when no comment is required. The work item's panel in the phone browser opens the same way, with your sign-offs first.
What this does not do
#- No approval from inside Slack or Teams. The message only links to Jira. That is deliberate: the sign-off receipt records the signed-in person, which a chat button cannot prove.
- Rules use your Automation allowance. Every trigger, condition and action that runs counts toward your plan's monthly Automation usage; a daily digest over a JQL search uses less than a rule per transition.
- Only what the rule actor may see. The rule reads work items and people as its actor, so names and e-mail addresses appear only where Jira shows them to that account.
How our app helps
#Approval Flow is our app: required sign-offs on Jira work items with named approvers, quorum, separation of duties and a workflow validator, with a hash-chained audit trail of every decision. Its eight Automation actions include the two used above. Pricing: free for up to 10 users with every feature, then from USD 0.90 per user per month for the first 100 users. See the documentation.
Common questions
#Can an approver approve by replying in Slack or by clicking a link in an e-mail?
No. The message links to Jira, and the decision is made there, signed in, so the record shows who decided. This is the reason the recipes post links and not buttons.
Does Approval Flow send data to Slack or Microsoft Teams?
No. The app makes no calls outside Atlassian. Your own Jira Automation rule sends the message, with Atlassian's integration and the webhook your admin set up.
Can the message say who still has to sign?
Yes. List pending approvers returns the names of the named approvers who have not signed, and the groups whose members can sign; put them in the message text.
Related
#- Approval Flow for Jira documentation
- Jira approval templates
- Approval Flow compared with other Jira apps
- Jira sign off: how to require a sign-off before a work item moves on
- Multiple approvers in Jira without Jira Service Management: 3 ways compared
- Which Jira and Confluence plans include approvals
- Jira approval workflow example: a purchase approval with three spend tiers
- Jira approval step skips the workflow validator: what you can do
- Jira: require a comment when someone approves or declines
- Jira approval: 50% plus one when the approver group keeps changing
- Jira approvals when the approver is out of office
- Jira approval reminders that repeat until the approver acts
- Release approval in Jira: what exists before a version is released
- Jira release approval process: how to record who approved a release and when
- Is a Slack approval valid audit evidence? What to record in Jira instead
- ISO 27001 change management evidence in Jira: what to keep for Annex A 8.32
- NIS2 and change control in Jira: what to record
- Approval Flow with ScriptRunner for Jira Cloud: read approval status in scripts
- How we test approval rules in Jira: a million random cases a night
- Our nightly tests went red on the first run. The app was right.