Let admins rename decision buttons and decisions, and choose button colors and icons
Description
Problem
The decision buttons (Approve, Consent, Reject, Abstain) and the decisions (Approved, Rejected, Abstained) have fixed names and colors and no icons. Organizations cannot adapt them to their process, e.g. "Request changes" instead of "Reject", a green Approve button, or the check and cross icons people know from Confluence approvals.
The same decision is also named differently across the app: Activity says "Accepted" where the panel says "Approved", and a consent reads "Approved" in Slack but "consented to" in Rovo.
Change
Settings
New section "Decision buttons" in Settings > Actions, in Jira and Confluence, for global admins. One row per action (Approve, Consent, Reject, Abstain):
-
Button name, e.g. "Request changes". Default: Approve, Consent, Reject, Abstain.
-
Decision name, e.g. "Changes requested". Default: Approved, Consented, Rejected, Abstained.
-
Color: Gray, Blue, Green, Red, Yellow or Purple. Default: Approve and Consent Blue, Reject Red, Abstain Gray, as the buttons look today.
-
Icon, one of 16, picked while the "Show icons on decision buttons" toggle is on (on by default; the pickers are hidden while it is off). Default icons: check mark for Approve and Consent, cross for Reject, the app's raised hand for Abstain.
Rules:
-
An empty name restores the default; spaces at the ends are dropped, repeated spaces joined and the name stored in Unicode NFC. A name has 1 to 30 characters, starts with a letter and holds letters, digits, spaces,
' ’ . , / &and hyphens inside words ("Sign-off"). Other characters are refused, so a name cannot format text in comments, emails or chat messages. Invisible letters and marks (fillers such as U+3164, variation selectors, the combining grapheme joiner) and more than 3 nonspacing or enclosing marks in a row are refused too. Names read from storage that break these rules show the default name. -
A name may not equal a button or decision name, current or default, of another action (case,
’/'and Unicode composition ignored), except that Approve and Consent may share names. An action may use one text for its button and its decision. A decision name may not be a built-in status or filter label (In progress, Incomplete, Skipped, Reassigned, Started, Voted, Expired, Archived, Outdated, Completed, Vote completed, Voting ended, Superseded, No longer required, Deleted, None, Unknown, Waiting, Decided, Awaiting field value, Up-to-date, Any, Other, Awaiting decisions, Upcoming decisions), and no name may be "Vote", "Cancel", "Confirm", "Skip" or "Stop" (the last two are Rovo's own replies). -
The form and the server refuse such names with a message naming the field, e.g.
Reject decision name "Approved" is already taken; choose another name. Save stays disabled while a field is refused, and the collapsed section header says how many names are refused. Saving another settings page does not check the stored names again. -
A live preview shows the buttons of an approval step and of a consent step. "Restore defaults" resets the names, colors and icons and turns icons off; Save applies it.
-
The section says where colors and icons apply and what keeps the standard names. Saving keeps the global settings history.
Where names apply
Button names, wherever an approver decides:
-
The approval panel: Jira work item, Confluence page, the JSM customer portal, the approvals list details panel.
-
The approvals list and the Confluence home feed: row actions (tooltips, or the row's "Actions" menu on touch screens), bulk actions (
Request changes (3), also in the panel) and the bulk decision dialog. -
Email action buttons, the page they open, and the approval page for email approvers.
-
Slack and Teams buttons, the Reject confirmation and the comment dialog (Slack: while "Enable actions without login" is on); Rovo: the decisions it offers and its confirmation card. Rovo takes a button name or the standard action as input, not a decision name; when a name fits both an approval step and a consent step of the same approval (Approve and Consent share it, or one is named like the other's standard action), Rovo asks which step is meant.
-
Messages about a decision, e.g.
A comment is required for "Request changes" on step "Legal".
Decision names, wherever a decision is shown:
-
A person's decision, also in groups and by delegates: the panel, Activity, status comments (Jira and Confluence), Confluence notification comments, watcher emails (Jira), Slack and Teams decision updates, the page an email button opens (
Your decision "Changes requested" on X has been recorded.), the approval page for email approvers, the chart approver list, Rovo answers. A vote moderator's decision shows in the panel, Slack's decision line and the approval page for email approvers; elsewhere the vote step shows its outcome. -
Outcomes: an approval that ends approved shows Approve's decision name (also when all its steps are consent steps) and one that ends rejected Reject's; a step decided by people that has no single decision (e.g. a group step) shows Approve's (Consent's on a consent step) or Reject's. This covers status lozenges, the approvals list, status and step filters and chart status legends. The step filter "<Approve's decision name> by" finds every step that ended approved, consents and abstentions included.
-
Tallies, e.g.
Approved: 1/2 · Changes requested: 0/2in parallel groups (Consent's name when every step people decide in the group is a consent step; a failed required sub-step readsFailed - "Changes requested" on a required sub-step),Need 1 more vote for "Approved" or 1 more vote for "Changes requested" to complete this step.in group steps, andApproved: 1 of 2 required, Changes requested: 0 of 1 requiredin creator reminders ({{ stepDetails }}); abstentions addAbstained: 1, counted on both sidesthere and in Slack thread-reply tallies. -
Messages, e.g.
Approval 42 is already completed as "Changes requested" and accepts no decisions.
Steps no one decides (Webhook, Automation and AI Prompt steps, steps with the Notification action) show standard texts, not the decision names: "Approved" or "Rejected" in Activity; the step's action, "Rejected" or "Failed" in status comments; their previous texts (such as "AI Prompt failed") on the approval page for email approvers. The other statuses keep their texts. Parallel-group tallies count such steps under the decision names.
Pages show the names they loaded with, except the app window where the admin saved, which switches at once; other pages show the new names after a reload. A Slack message waiting for a decision keeps its buttons and Reject confirmation; once the step is decided it shows the current names, and a comment dialog opened from it uses the current name.
Colors and icons
|
Where |
Color |
Icon |
|---|---|---|
|
Approval panel (also in the customer portal), bulk decision dialog |
yes, light and dark theme |
yes |
|
Row and bulk actions of the approvals list, Confluence home feed |
no (icon buttons) |
chosen icon while icons are on, today's otherwise |
|
Emails, the action page and the approval page for email approvers |
yes, light theme |
yes, as 16 px images* |
|
Status comments, Slack decision lines |
no |
no, a fixed mark per decision |
|
Slack buttons |
Blue and Green: green button, Red: red button, others: plain |
no |
|
Teams buttons |
Blue and Green: highlighted, Red: red button, others: plain |
no |
-
Added to every HTML email, sent through Jira's notification emails or by the app, and loaded from the app's server; mail clients that block images show the names only.
A bulk selection that mixes approval and consent steps shows both names, e.g. Approve / Consent, in Approve's color and icon.
The section states: "Colors and icons apply in Jira, the customer portal and emails. Slack and Microsoft Teams show the names; they offer only highlighted and red buttons, and no icons." (Confluence: "in Confluence and emails"), and "The Approval Status field, JQL, the Web API, webhooks and exports keep the standard names." (Confluence: "The Web API, webhooks and exports keep the standard names.").
Decisions
-
Names are labels, never grammar: texts show a name alone or quoted ("Changes requested" by Anna) and never conjugate it. Sentences that conjugate decisions ("was approved by", "abstain from") are reworded, e.g. the watcher email subject
Approval Path 'X': Approved by Anna.(wasApproval Path 'X' was approved by Anna.). -
One name per decision wherever the app shows decisions to people; integrations keep their values.
-
Admin configuration keeps the built-in names, so admins always know which action they configure: the definition editor, comment requirements, page re-approval statuses (also in the option shown when starting an approval), notification, Rovo and API key settings, workflow rules, chart metrics such as "Approval rate". The "Decision buttons" section shows both names side by side.
-
Colors come from six Atlassian design-token colors: in the app they follow the light and dark themes with hover and pressed states; emails and server pages use the light values. No free colors: they break dark mode and text contrast.
-
Icons come from 15 Atlassian icons that suit decisions plus the app's abstain hand. No uploads: uploaded SVGs need sanitizing, uploads need hosting reachable from emails, and a one-color upload cannot follow the button color and theme. No full icon library: most icons do not fit decisions, the picker would need search, and every icon would need a matching email image.
-
Settings are per site and product: Jira and Confluence have their own.
Fixes included
-
Activity shows "Accepted" for approvals, consents, abstentions and passed automatic steps; it now shows the decision name, and automatic steps "Approved" or "Rejected".
-
The panel's step tooltip shows "(Accepted)"; it now shows the decision name.
-
Status comments and the approval page for email approvers label approved and abstained steps with the step kind ("Approval:", "Consent:"; "Approval (Abstained):" on the approval page), and abstentions get the approve icon; they now show the decision name and an abstain mark.
-
A consent reads "Approved" in Slack, Teams, watcher emails and group and vote steps, and Rovo says "consented to" when recording it but "approved" when reading it; it now reads Consent's decision name everywhere.
-
Slack's comment dialog on a consent step is titled "Approve"; it now uses Consent's button name.
-
The bulk dialog's Abstain button is yellow while the panel's is gray; both follow Abstain's color.
-
Emails and the pages opened from them use older colors (darker blue, orange-red, filled gray Abstain, a blue Confirm for every action); they now use the app's colors and each action's own color.
-
On the page opened from an email, "You have already approved on this step." now reads "You already decided on this step: Approved.".
-
The chart approver list counts abstentions as "Approved"; it now shows Abstain's decision name, and Consent's on consent steps.
-
Slack headlines read "Completed" for an abstained user step and "Rejected" for a group step approved despite a rejection; they now show the step's outcome name.
-
The Actions settings show "Allow steps to require comments on all actions" as a checkbox while the page's other on/off settings are toggles; it is now the toggle "Allow steps to require comments", which turns all three actions on or off, and the Approval, Rejection and Abstain choices show while it is on.
Out of scope
-
Values read by integrations stay the same: the "Approval Status" custom field, JQL, Web API v1 and v2 (also their error messages), webhooks, CSV exports (approvals and Activity; the Activity export keeps "Accepted"), template variables (
{{ action }},approval.statuscodes) and the AI step prompt context. -
Text written in custom message templates; their
{{{ actionButtons }}}buttons follow the settings. -
The "Vote" button and vote options (already set per step), step kinds ("Approval", "Consent").
-
Free colors, uploaded icons, names per definition or step, names per language, icons in Slack and Teams.
Acceptance criteria
-
With "Request changes" / "Changes requested" for Reject, the approver sees a "Request changes" button in the panel (Jira, Confluence, customer portal), the approvals list (row action, bulk action and dialog), the email, the page it opens, Slack, Teams and the Rovo card. After the decision, the step, the approval status, Activity, the status comment, the Slack and Teams update and the notifications show "Changes requested".
-
Custom Consent names apply on consent steps independently of the Approve names.
-
The same decision has the same name everywhere listed above; nothing shows "Accepted".
-
Without custom settings, buttons and names look as today apart from fixes 1 to 10 and the reworded sentences, messages and tallies. An empty field restores the default name; a name with other characters or a taken name is refused, and the field takes at most 30 characters (the server refuses longer names).
-
Green Approve: green in the panel (light and dark theme), the bulk dialog, emails and the pages opened from them; a green Slack button and a highlighted Teams button. Yellow Reject: plain in Slack and Teams.
-
Icons are on by default: the chosen icons show in the panel, the bulk dialog, emails, the pages opened from them and the list's row and bulk actions; Slack and Teams show none. Turned off: the buttons show the names only and the row and bulk actions keep today's icons.
-
Webhook, Automation and AI Prompt steps keep their texts after a rename.
-
Status comments added before a rename keep the old names.
-
The "Approval Status" field, JQL, Web API, webhooks and exports return the same values as before.
-
Rovo: "request changes on " records a Reject decision, and its card and answers use the site's names.
-
Only global admins can change the settings; JSM customers see the names, colors and icons in the portal.
Manual tester notes
-
Emails: Gmail web, Outlook desktop and web, Apple Mail; sent through Jira's notification emails and through the app's own delivery (SMTP). With images blocked, buttons show names only and the layout holds. On a phone, each button stays in one piece: a two-word name with an icon stays on one line, and a name wider than the screen wraps inside its button. The gray Abstain keeps its border in Outlook desktop. A long one-word decision name (e.g. FREIGABEVERWEIGERT) wraps inside the status badge on the approval page for email approvers.
-
Slack and Teams: each color's style, the Reject confirmation and comment dialogs with a 30-character name (Slack's comment dialog title is shortened to its 24-character limit at a word boundary; the confirmation shows the full name), decision update headers, thread replies, consent steps.
-
Jira and Confluence in the dark theme with every color; the Jira mobile app panel.
-
Customer portal as a JSM customer: renamed buttons, colors and icons.
-
Status comments with names containing
' . , / & -: on approval, on rejection, after deleting an approval (also bulk delete); Confluence notification comments. An abstention shows a raised hand (✋), not(|)as text and not the Skipped mark. -
The action page from an email link and the approval page for email approvers, with approvals from two sites using different names: buttons, comment required, the "already decided" message, each color and icon.
-
Rovo conversation on a site with renamed Reject and Consent: offered decisions, card text, answers; a rename between preparing and confirming a decision (a card showing a name no longer in use is refused, nothing recorded).
-
Two backend nodes: after a save, messages sent from the other node use the new names within a minute; Slack and Teams messages queued before the save keep the names they were queued with.