How can I build an SLA in Desk?

Last Updated -

In many support workflows, it's important to have an SLA for your customers. For those unfamiliar, an SLA is a Service Level Agreement. Essentially a timeframe when you've guaranteed your customer that you'll respond to their inquiry.

This is usually done by escalating a Case when it ages past a certain period.

For this example, we're going to build our SLA as 8 hours. Yours may differ and that's okay, but for our example we're going to escalate our cases at the 2 hour mark, 4 hour mark, 6 hour mark, and finally at 7 hours as a last resort.

To do this, we're going to use Time Rules. Time Rules run every 15 minutes on their own and look for cases that meet your criteria.

You can find those under Admin → Cases  →  Rules →  Time Rules

Click the "+ Add Rule" button at the top of the screen and create a new Rule called "2 Hour Escalation".

At its absolutely basic form, you'll want a Rule that looks like the following:



In this Rule, we're telling the Rules Engine to do the following:
  1. Find cases that are 2 hours old
  2. Find cases that are assigned to the General Group
  3. Find cases that don't have the "2 Hours old" label on them. We do this so that the Rule will only run one time per case.
  4. The status of the case is New
NOTE: This rule is set to "Run Rule - Anytime". You can change this from 'Anytime' to 'During Business Hours' so that your SLAs ignore weekends or other days of the week that your business may be closed. To learn how to set your Business Hours in Desk, please click here.

For cases that it finds matching that criteria, we're appending the "2 Hours old" label to it.

This lets our Agents see the cases right in their Filter(s) that have aged to 2 hours.

For our second Rule, we build something very similar:



Here we're telling the Rules Engine:
  1. Find cases that are 4 hours old
  2. Find cases that have the 2 Hours old label, so we know they've been escalated 1 time already.
  3. Find cases that don't have the 4 Hours old label, so the Rule only runs once.
  4. The case Status is New.
When we find cases that meet that criteria, we append the case label of "4 Hours old". This is done so that our Agents can see those cases easily in their Filter(s).

Our Third Rule is similar, but set for 6 hours:



The process here is the same, but we're targeting cases that haven't been worked on for 6 hours.

Our last Rule is the most important one. This is the one that'll trigger right before we've missed our SLA and could potentially upset our customer, so in addition to appending a label, we'll perform some other actions, as well.

Here's what we'll do for our last Rule:



Here we're doing the same check we've been all along for:
  1. The case's Age; this time 7 hours.
  2. The case's labels
  3. The Case Status is New.
But in addition to appending a label of End of SLA, we're also re-assigning the Case to our Supervisor Group, and Sending an Email Notification to the Supervisors.

In addition to these default actions, you can take this much much further by utilizing one (or many!) of the Apps in Desk under Admin → Apps. There you can do additional things like:
  • Post a message to a HipChat chat room, @ mention someone in HipChat
  • Post a message to a Slack chat room, @ mention someone in Slack
  • Post a message to Campfire
  • Post a message to Flowdock
  • Trigger a PagerDuty page to your on-call person
  • Create a Trello card
  • and many more options.
These Apps allow you to have a more immediate notification to someone (or many people) that can take action when you've got a case approaching the end of its SLA.

You can also set up a Filter specifically for cases containing your End of SLA label, even enable routing on that Filter as well.

Remember, this is just an example of how to build an SLA. Your real-world SLA will likely be different, but this should be enough to get you started in the right direction.