Skip to main content
An SLA is a promise with a clock on it. The value is not the reporting, it is that everyone stops guessing: the requester knows when to expect a reply, and your team knows which ticket is the urgent one. Start with one SLA. Teams that launch with six spend the first month arguing about precedence instead of hitting targets.
Prerequisites: a channel receiving real tickets, and enough history to know your actual response times. Setting targets before you have data is how you get a permanent red dashboard.

First, decide what you are promising

Ravenna measures three things, and they are not the same promise: Start with first response only. It is the one requesters actually feel, it is entirely within your control, and it is the easiest to hit. Add resolution once first response is consistently green.
Moving a ticket to Done finalizes resolution but does not stop the close timer. If you add a close target, make sure your team actually closes tickets, or you will breach a target nobody is working on.

1. Create the SLA

1

Open SLA settings

Go to Settings > SLAs and click + SLA. Give it a name, description, and icon, then Save.
2

Add one target

Open the SLA and add a Time to First Response target. Pick a number you already hit most of the time, not the one you aspire to.
3

Add an alert

Alerts are measured backward from the deadline. On a 4 hour target, a 1 hour alert fires at the 3 hour mark, leaving an hour to act.An alert time greater than or equal to the target time schedules no alert at all, because there is no early window left.
4

Save and let it run

Matching tickets get a badge immediately. Watch it for a week before touching the numbers.
Learn more about creating SLAs

2. Attach a business schedule

Without a schedule, SLAs use wall-clock time. A 4 hour response target on a Friday 6pm ticket breaches overnight while nobody was ever going to be working. Create a schedule under Settings > Business Schedules with a timezone and weekly working hours, then select it in the SLA’s Settings tab. Timers only advance inside those windows, and a ticket’s badge shows Resumes at rather than counting down outside them. One schedule can be shared across SLAs. Most teams need one, maybe two if they have a follow-the-sun rotation.
If you deliberately want 24/7 measurement, for example a Sev 1 SLA, leave the schedule blank on that SLA only. Business hours and always-on can coexist as separate SLAs.
Learn more about business schedules

3. Stop the clock when you are blocked

If half your tickets are waiting on the requester, your SLA is measuring their response time, not yours. Create a status like Waiting on requester and select it as a pause status on the SLA. Time in that status is excluded from every calculation, and the timer resumes where it left off. Two things to know:
  • Statuses in the Done and Closed groups cannot be pause statuses. Reaching a terminal status already stops the clock permanently.
  • Snooze does not pause SLA timers. This surprises people. Use a pause status.
Learn more about pause statuses

4. Add a second SLA, carefully

Only one SLA applies per ticket. Ravenna evaluates the list top to bottom and applies the first match, so ordering is the whole configuration. Order from most specific to most general:
  1. Urgent or critical, filtered by priority
  2. Team or channel specific
  3. A catch-all with Apply to all tickets on, at the bottom
Two more things that catch people out:
  • The SLA is locked at ticket creation. Changing priority, channel, or form afterwards does not re-evaluate which SLA applies. If escalation needs a tighter clock, that is a workflow that changes assignment and notifies, not an SLA that retroactively tightens.
  • Filters use AND logic. To scope an SLA to a team rather than a person, use the Assignee filter with is member of and pick a user group.
Learn more about priority evaluation

5. Make breaches visible before they happen

Notifications go to the assignee, followers, channel auto-assignees when nothing is assigned, and workspace admins. That is a good default and a bad monitoring strategy on its own, because notifications get muted. Build one view instead. Filter on Breaching Within with a threshold of a few hours, and pin it. It shows only tickets with a pending target that will breach inside the window, so it is a work list rather than a postmortem. Already-breached tickets are excluded, which is the point. Add a second view on SLA Outcome is Breached for the weekly review.

6. Escalate with a workflow, not the SLA

SLAs are passive. They measure, badge, and notify. They do not reassign, re-prioritize, or trigger anything. If you want an at-risk ticket escalated automatically, build a workflow that reacts to ticket changes and checks SLA outcome in a condition, then reassigns or posts to a channel. The Due Date action is useful for keeping a ticket’s own deadline aligned with the SLA target.

7. Report on it

Custom analytics cards on the Tickets data source expose two families of duration fields, and picking the wrong one produces numbers you cannot explain:
  • SLA Time to First Response, SLA Time to Resolution, SLA Time to Close read the SLA target record. They honor business schedules and pause statuses, and only cover tickets an SLA applies to. Use these for compliance reporting.
  • Time to First Response, Time to Resolution, Time to Close measure wall-clock from the ticket’s own timestamps, across every ticket. Use these to benchmark the team, including channels with no SLA.

Where teams get this wrong

An SLA nobody hits is ignored within two weeks. Set the target you already meet, then tighten it.
Overnight and weekend breaches on a business-hours team make the whole dashboard meaningless.
You end up reporting on how fast your requesters answer email.
One, for the highest-volume channel, then expand.
Escalation is a workflow. The SLA only tells you it is time.

Next

Reporting and briefs

Dashboards, CSAT, and a weekly brief in Slack.

IT help desk

Where a single SLA fits into a full desk.
Last modified on September 17, 2026