Freshdesk SLA & Business Hours

SkillProductivity

Freshdesk SLA policies and business-hours calendars: policy and calendar fields, per-priority respond_within / resolve_within targets, how the business-hours vs 24x7 clock computes a ticket's fr_due_by and due_by, and breach / at-risk detection through the Freshdesk REST API v2.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Freshdesk SLA & Business Hours skill

What this skill tells your AI

The instructions your AI receives, as published by wyre-ai/msp-claude-plugins in msp-claude-plugins/freshdesk/freshdesk/skills/sla-business-hours/SKILL.md and read by ahel’s review.

Overview

SLA policies define the response and resolution targets a Freshdesk account commits to, and business-hours calendars define when the SLA clock runs. Together they compute each ticket's fr_due_by (first-response deadline) and due_by (resolution deadline). This skill covers listing policies and calendars and reasoning about deadlines and breaches through tools named freshdesk_sla_list and freshdesk_business_hours_list.

Anti-triggers

A Freshdesk SLA policy is helpdesk configuration that computes ticket deadlines. It is not the commercial SLA in a signed agreement, and not an on-call response target.

  • The SLA a contract commits you to — coverage hours, response credits, and the agreement the customer signed are halopsa-contracts or autotask-contracts. Freshdesk's policy is how the helpdesk approximates that commitment; the two can legitimately disagree.
  • MTTA/MTTR for on-call responders — those measure how fast a page was answered, not helpdesk SLA attainment; use pagerduty-analytics.
  • Escalation rotas and who is on-call after hours — coverage windows here only pause a clock; they do not page anyone. Use pagerduty-oncall.
  • Acting on a breached ticket — re-prioritising, reassigning, or replying is freshdesk-ticketing; this skill explains the deadline, it does not change it.

SLA Policies

List SLA Policies

GET /api/v2/sla_policies

Each policy describes targets per priority and the conditions under which it applies.

Key SLA Policy Fields

FieldTypeDescription
idIntegerUnique identifier
nameStringPolicy name
is_defaultBooleanApplies when no other policy matches
activeBooleanWhether the policy is in force
applicable_toObjectConditions (company, group, source) that select the policy
sla_targetObjectTargets keyed by priority
escalationObjectWho is notified, and when, as deadlines approach or pass

SLA Targets by Priority

Targets are defined per priority level (recall the encodings: 1 Low, 2 Medium, 3 High, 4 Urgent). Each target typically specifies:

TargetDrivesDescription
respond_withinfr_due_byTime allowed for the first agent response
resolve_withindue_byTime allowed to resolve the ticket
business_hoursclock modeWhether the target counts only business hours or calendar (24x7) time
escalation_enabledescalationsWhether breach/approach escalations fire

Higher-priority tickets get tighter targets — an Urgent (4) ticket usually has a much shorter respond_within and resolve_within than a Low (1) ticket.

Business Hours

List Business Hours

GET /api/v2/business_hours

Each calendar defines the working week, daily hours, time zone, and holidays.

Key Business-Hours Fields

FieldTypeDescription
idIntegerUnique identifier
nameStringCalendar name
is_defaultBooleanDefault calendar for the account
time_zoneStringTime zone the hours are expressed in
business_hoursObjectWorking hours per weekday
holidaysArrayDates excluded from the SLA clock

How Targets + Business Hours Drive Deadlines

When a ticket is created or its priority changes, Freshdesk selects the matching SLA policy and computes deadlines:

  1. Select the policy — match the ticket against each policy's applicable_to conditions (company, group, source); fall back to the is_default policy.
  2. Pick the target — choose the sla_target entry for the ticket's priority.
  3. Choose the clock — if the target uses business hours, the SLA clock only advances during the calendar's working hours and skips holidays; if it is 24x7, the clock runs continuously.
  4. Compute fr_due_by — created-time plus respond_within, advanced through the chosen clock.
  5. Compute due_by — created-time plus resolve_within, advanced through the chosen clock.
  6. Pause on Pending — when a ticket moves to Pending (status 3) awaiting the customer, the resolution clock can pause depending on policy configuration, shifting due_by accordingly.
Urgent (priority 4) ticket created Fri 16:00, business-hours calendar Mon-Fri 09:00-17:00
  respond_within = 1h  -> fr_due_by = Fri 17:00  (1 business hour)
  resolve_within = 8h  -> due_by    = Mon 15:00  (1h Fri + 7h spilling into Mon)

Breach Detection

To detect breached and at-risk tickets:

  1. Pull the unresolved queue — search tickets with status:2 OR status:3.
  2. Read SLA timestamps — fetch each ticket with include=stats to get fr_due_by, due_by, and whether first response / resolution has occurred.
  3. Classify against now:
ConditionState
fr_due_by in the past and no first response sentFirst-response breached
due_by in the past and not resolvedResolution breached
due_by within the next escalation windowAt risk
Both deadlines comfortably aheadHealthy
  1. Prioritize — breached first (longest overdue first), then at-risk ordered by nearest deadline.
  2. Escalate — for breached/at-risk tickets, follow the policy's escalation settings: notify the responsible agent/group, bump priority, and record an internal note.

Error Handling

ErrorCauseResolution
404 Not foundUnknown policy/calendar (or none configured)List policies/calendars to confirm what exists
403 ForbiddenAPI key lacks admin scope for SLA configUse an admin-scoped key to read SLA/business-hours config
400 Bad requestMalformed include on the ticket fetchUse include=stats to retrieve SLA timestamps

Best Practices

  • Map priorities to targets explicitly — translate priority integers to the policy's targets when explaining deadlines.
  • Account for business hours — never assume 24x7; check whether each target counts business hours and skip holidays accordingly.
  • Watch Pending transitions — a paused clock shifts due_by; recompute rather than trusting a stale value.
  • Drive triage by deadline — order the queue by SLA pressure, not just raw priority.

Related Skills

Signals

GitHub stars
45
Forks
24
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
freshdesk-sla-business-hours
Source
github.com/wyre-ai/msp-claude-plugins