Stanki Guild

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

#
  1. Project settings, Automation, Create rule.
  2. Trigger: Work item transitioned to the status your approval validator guards, or Work item created if Approval Flow adds the policy automatically.
  3. 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).
  4. Action: List pending approvers, work item key from the smart value issue.key.
  5. Condition: Advanced compare, first value the count output of the previous step, "greater than", 0.
  6. 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.key and issue.summary), "Waiting on:" with the names output, "Groups:" with the groups output, and "Decide in Jira:" with the approvalsUrl output.
  7. Name the rule, turn it on and test it with one work item.

Recipe B: a daily Microsoft Teams digest of overdue sign-offs

#
  1. Trigger: Scheduled, every weekday at 09:00, with "Run a JQL search and execute actions for each work item": approvalStatus = "pending" AND approvalDue < now().
  2. Action: List pending approvers, work item key from the smart value issue.key.
  3. Optional action: Get approval status, to add its label output (for example "1/3 approved") to the text.
  4. 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 names output, and "Open in Jira:" with the approvalsUrl output.

Recipe C: e-mail the approvers themselves

#
  1. Trigger: Work item transitioned to the guarded status, or Scheduled with the JQL approvalPendingFor is not EMPTY.
  2. Action: List pending approvers.
  3. Condition: Advanced compare, the emails output "is not empty".
  4. Action: Send email. To: the emails output. Subject: "Approval needed:" with the work item key and summary. Body: "Please review and approve or reject in Jira:" with the approvalsUrl output (or the work item link), and "The decision is recorded only when you make it signed in to Jira."
  5. 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

#

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.

#