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
- Ticket arrives β When a new email or form submission creates an issue/discussion, Scitor starts the SLA clock
- Deadlines are calculated β Based on the ticketβs priority and your configured business hours
- First response tracked β When you send a reply with
/send, the first response time is recorded - Resolution tracked β When the issue is closed, the resolution time is recorded
- 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-customerlabel pauses the SLA timer - Automatic resume: Removing the
waiting-on-customerlabel resumes it - Manual control: Use
/sla pauseand/sla resumecommands
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']
})