Prerequisites: the Day one track. Approvals attach to tickets, so you need forms and a channel first.
For a worked department example, see purchase approvals for threshold routing, access provisioning for risk tiers, and the deal desk for approvals optimized for speed
The model in one paragraph
Adding approvers to a ticket creates a round. Each round has a policy that decides when it is satisfied. Rounds run in stages: everything in a stage activates together, and the next stage starts only once the current one is fully decided. An approval template is a saved set of rounds you apply to a ticket, usually automatically.1
Pick the right policy per round
A decline in any round declines the ticket immediately, whichever policy is set.Default to Any can approve. Reaching for All must approve is how a two-hour approval becomes a four-day one, because it is gated on whoever is on holiday.
Learn more about approval policies
2
Run independent reviews in parallel
Sequential rounds only make sense when a later approver needs the earlier decision. A manager sign-off and a security review are independent, so they should run at the same time.In the round editor, drag one round onto another to merge them into a single stage. An inline indicator shows which rounds are parallel, and the unlink icon splits them apart. Rounds that are already active or decided are locked in place.Each round in a stage still enforces its own policy. The stage clears when every round in it is approved.
Learn more about running rounds in parallel
3
Save it as a template
Once a flow works, turn it into a template so it applies the same way every time. A software access template might look like this:
Stage 2 starts only after stage 1 clears, and its two rounds run together.
Learn more about approval templates
4
Use dynamic approvers instead of names
Hard-coded approver lists rot. Role-based approvers resolve when the template is applied:
- Ticket requester, for acknowledgment steps
- Requester’s manager, resolved by cascading through an app-scoped integration, then your organization HRIS, then your identity provider, using the first source that knows the answer
- Requester’s skip-level manager, strictly two levels up, for escalated sign-off
Learn more about dynamic approvers
5
Let cheap requests skip the expensive rounds
One template can cover a whole family of requests using skip conditions on individual rounds. A condition describes when the round is not needed, which is the opposite of how most people write it the first time. To require Finance sign-off only above 5,000, give the Finance round the condition
amount <= $5,000. Small purchases match it and skip the round, large ones do not match and collect the approval.Two things to know:- Conditions are evaluated once, when the template is applied. Editing the ticket afterwards does not retroactively skip or unskip a round.
- If every round is skipped for a given ticket, the approval status is set to Approved automatically.
Learn more about skip conditions
6
Keep the requester out
By default, the requester is removed from every approval round on their own ticket, including when they would be pulled in through an approver group. Group expansion happens first, then the requester is stripped, and this applies from the sidebar, the rounds UI, workflows, and forms alike.The workspace setting Allow requester as approver turns that off. Leave it off unless you have a specific reason, such as an acknowledgment round where the requester confirming is the point.
Learn more about workspace approval settings
7
Approve where people already are
Approvers get a Slack DM with the ticket and Approve and Decline buttons, and updates post back to the ticket thread so the team sees movement. On Microsoft Teams the same request arrives as an Adaptive Card in chat.If your workspace requires biometric verification, the Slack buttons redirect to the web app to verify identity before recording the decision.Nobody has to open Ravenna to approve something, and that fact alone is usually what makes an approval process survive.
Learn more about where to approve and decline
8
Handle the approver who never replies
In a workflow, the Wait for Approval action pauses until the rounds resolve or the timeout expires, then branches two ways: On Approved and On Declined. The default wait is three days, and it accepts values like
1h, 2d, 1w, or Forever.There is no timeout branch, and this is the part people get wrong. On Declined fires on an explicit decline only, so when the timeout expires with nobody having decided, neither branch matches and the run ends there. Build the silent-approver path out of a reminder policy plus a Reminder Expired workflow, which is where you remind, reassign to a backup approver, or close the request as expired. Without that, a silent approver is indistinguishable from a lost request.Learn more about Wait for Approval
Where teams get this wrong
All must approve everywhere
All must approve everywhere
It is the slowest option and rarely the required one.
Sequential rounds that did not need to be
Sequential rounds that did not need to be
If the second approver does not need the first decision, run them in parallel.
Named approvers in templates
Named approvers in templates
People change roles. Use dynamic approvers.
No timeout branch
No timeout branch
Build the escalation path when you build the flow, not after the first complaint.
Approvals on everything
Approvals on everything
Every gate that adds no real judgment teaches people that gates are noise.
Next
Access provisioning setup
Connect approval templates to access policies.
SLAs and business hours
Measure how long approvals actually take.