SLA Tracking

Info

SLA tracking is a Pro plan feature and requires configuration in your scitor.yaml file.

Scitor can automatically track Service Level Agreement (SLA) compliance for every support ticket. Set response and resolution targets per priority level, define business hours, and get automatic warnings and breach notifications β€” all directly in GitHub.

How it works

  1. Ticket arrives β€” When a new email or form submission creates an issue/discussion, Scitor starts the SLA clock
  2. Deadlines are calculated β€” Based on the ticket’s priority and your configured business hours
  3. First response tracked β€” When you send a reply with /send, the first response time is recorded
  4. Resolution tracked β€” When the issue is closed, the resolution time is recorded
  5. Warnings & breaches β€” Scitor checks every 5 minutes and applies labels + comments when SLA targets are at risk or breached

Configuration

Add an sla section to your .github/scitor.yaml:

sla:
  first_response:
    urgent: 30m
    high: 4h
    medium: 8h
    low: 24h
  resolution:
    urgent: 4h
    high: 1d
    medium: 3d
    low: 7d
  business_hours:
    timezone: America/New_York
    start: "09:00"
    end: "17:00"
    days: [mon, tue, wed, thu, fri]
  escalation:
    on_breach:
      - label: "sla:breached"
    on_warning:
      - label: "sla:warning"

See the scitor.yaml reference for all options.

Duration format

SLA durations support human-readable formats:

Format Example Meaning
Minutes 30m 30 minutes
Hours 4h 4 hours
Days 3d 3 days

Business hours

When business_hours is configured, SLA timers only count time during business hours. Weekends and outside-hours time are automatically excluded from SLA calculations.

If business_hours is not configured, SLA timers run 24/7.

Priority levels

Each ticket is assigned a priority level that determines its SLA targets:

Priority Default first response Default resolution
urgent 1 hour 4 hours
high 4 hours 1 day
medium 8 hours 3 days
low 24 hours 7 days

New tickets default to medium priority. Priority can be adjusted by applying priority:urgent, priority:high, priority:medium, or priority:low labels.

SLA labels

Scitor automatically creates and manages these labels:

Label Color Meaning
sla:warning 🟠 Orange 80% of SLA time has elapsed β€” response needed soon
sla:breached πŸ”΄ Red SLA target has been exceeded
sla:paused βšͺ Gray SLA timer is paused (e.g., waiting on customer)
priority:urgent πŸ”΄ Red Urgent priority
priority:high 🟠 Orange High priority
priority:medium 🟑 Yellow Medium priority (default)
priority:low 🟒 Green Low priority

Pause & resume

SLA timers can be paused when you’re waiting for a customer response:

  • Automatic pause: Adding the waiting-on-customer label pauses the SLA timer
  • Automatic resume: Removing the waiting-on-customer label resumes it
  • Manual control: Use /sla pause and /sla resume commands

Paused time is excluded from SLA calculations.

Commands

/sla

Show the current SLA status for a ticket:

/sla

Displays:

  • Current priority level
  • Time remaining for first response and resolution
  • Whether the ticket is paused, warned, or breached

/sla reset

Reset the SLA timer with fresh deadlines:

/sla reset

Useful when a ticket’s scope changes significantly or after an incorrect initial triage.

/sla pause

Manually pause the SLA timer:

/sla pause

/sla resume

Resume a paused SLA timer:

/sla resume

Tip

All SLA commands also work with @scitor mention syntax, e.g., @scitor sla, @scitor sla reset.

SLA in reports

The /generate-report command includes SLA compliance metrics when SLA tracking is enabled:

  • First response SLA compliance β€” Percentage of tickets where first response was within target
  • Resolution SLA compliance β€” Percentage of tickets resolved within target
  • Average first response time β€” Mean time to first reply

Workflow tips

Filter by SLA status

Use GitHub’s label filters to find tickets needing attention:

is:issue is:open label:sla:warning
is:issue is:open label:sla:breached
is:issue is:open label:priority:urgent

Combine with GitHub Projects

Create a project board view filtered by SLA labels to create an at-a-glance dashboard of tickets approaching or exceeding their SLA targets.

Automate escalation with GitHub Actions

name: Escalate SLA breaches
on:
  issues:
    types: [labeled]

jobs:
  escalate:
    if: github.event.label.name == 'sla:breached'
    runs-on: ubuntu-latest
    steps:
      - name: Assign to manager
        uses: actions/github-script@v7
        with:
          script: |
            await github.rest.issues.addAssignees({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              assignees: ['team-lead']
            })

Scitor β€” Turn GitHub into your support platform