Yetto A portrait of Billy Marx Vanzetti, Yetto's nonbinary, anti-capitalist mascot

Scheduled actions

Garen Torikian's Profile Picture

Garen Torikian

Co-Founder, CTO

Release Notes

Service level agreements (or SLAs, as they're usually called) are ubiquitous among support teams. And seeing what requests are more pressing — which conversations are about to breach the time limit -— is only one part of managing them. You might want to notify Slack when a conversation has been waiting too long, or assign a particular person to aging conversations, or add a new label to conversations that need more attention.

Starting today, you can do all that and more with scheduled actions.

Switches with a timer

Switches are at the heart of Yetto. Switches are triggers written in JSON that respond to events and perform actions, things like automatically applying labels to emails from important users, or creating HTTP requests whenever a reply gets sent.

Scheduled actions are a new upgrade to our switch system. They let you set a delay between the event and the action it triggers, which is useful if your company has strict SLAs: you can now combine scheduled actions and conditionals to apply a label after 30 minutes if a message hasn’t gotten a reply:

 {
  "version": "2023-03-06",
  "events": {
    "message.created": {
      "scheduled": [
        {
          "after": "30 minutes",
          "conditions": {
            "if": "{​% data.yetto.message.is_awaiting_response %​}"
          },
          "actions": [
            {
              "name": "Set bug label",
              "uses": "apply_labels",
              "add": [
                "sla.respond_now"
              ]
            }
          ]
        }
      ]
    }
  }
}

Scheduled actions are like regular actions with an after key. after is the delay before your action runs. Conditionals here are executed at runtime, so in the example above, if the message is no longer awaiting a response after 30 minutes, the label is not applied. (Conditionals aren't required, but they can prevent scheduled actions from firing unnecessarily.)

Notice that the scheduled key takes an array. That means you can stack several actions one after the other:

{
  "version": "2023-03-06",
  "events": {
    "message.created": {
      "scheduled": [
        {
          "after": "1 day",
          "actions": [
            {
              "name": "Set needs-response label",
              "uses": "apply_labels",
              "add": [
                "needs-response"
              ]
            }
          ]
        },
        {
          "after": "3 days",
          "conditions": {
            "if": "{​% data.yetto.message.is_awaiting_response %​}"
          },
          "actions": [
            {
              "name": "Set really-urgent label",
              "uses": "apply_labels",
              "remove": [
                "needs-response”"
              ],
              "add": [
                "really-urgent"
              ]
            }
          ]
        }
      ]
    }
  }
}

Here, the conversation will have the needs-response label applied after one day, no matter what. If the message is awaiting a response after three days, the needs-response label is removed, and really-urgent is applied.

Perhaps your workflow is different, and you’d like Yetto to send you a Slack notification; maybe you want a summary of every ticket you’ve gotten from from BigCorp or you have a first responder who should be assigned tickets. Every switch action is scheduleable, including our upcoming autoreply action 🤫, so you can do whatever works best for your team’s needs.

Check out our documentation to learn more about scheduling switches. And if you want to see what all the fuss is about, sign up for Yetto’s open beta!

Sign up for Yetto's newsletter to hear hot takes, feature announcements, & more!

We'll never share or misuse your email address. Ever.✌️