Service Desk
SLA management on business hours you can actually defend
An SLA report that nobody believes is worse than having no SLA report at all. A missing number gets replaced with a judgement call; a wrong number gets quoted in a contract review, printed in a client update and used in somebody's performance appraisal before anyone checks it.
SLA figures become fiction in two specific ways. The first is measuring calendar time when you promised business hours — the four-hour target on a ticket that arrived at 16:30 was never going to be met by 20:30, and reporting it as a breach blames the team for the clock. The second is computing history from a ticket's current status, so a ticket that sat paused for three days waiting on the customer ends up indistinguishable from one that sat untouched on an agent's queue.
This page documents how Stillpoint's support SLA tracking handles both: real business-hours arithmetic on timezone-aware schedules, and compliance computed from an append-only clock history rather than from whatever the ticket looks like today.
SLA management is part of the Service Desk, included in Pro ($299/yr, up to 5 sites) and Agency ($499/yr, up to 20 sites), with unlimited agents.
Three targets, two clocks
Stillpoint tracks three targets per policy: first response, next response and resolution. Each target runs on either business hours or calendar hours, and which clock was used is stated on every number the system shows you — on the ticket, in the report, in the export. Half of all SLA arguments are really arguments about which clock somebody meant, and that is a labelling problem with a labelling fix.
First response has a precise definition: it counts only public agent replies. An internal note is not a response to the customer. Neither is an automated acknowledgement, and neither is an auto-reply. That is the same definition Zendesk and Freshdesk use, which matters because it means your first response time is comparable to the benchmarks people quote at you rather than a flattering local variant.
Next response applies to every subsequent customer message, which is where teams actually lose customers — the first reply is usually fast because it is easy, and the third reply is slow because it is hard. Resolution measures time to a resolved state on whichever clock the policy specifies.
The specifics
- First response, next response and resolution, configured per policy
- Each target independently set to business hours or calendar hours
- The clock type is printed alongside every figure, so nobody has to guess
- First response counts public agent replies only — internal notes, automated messages and auto-replies do not qualify
- Definitions match Zendesk and Freshdesk, so figures are externally comparable
Business hours that are actually your hours
A single "working hours" setting is not enough for any organisation with more than one team. Stillpoint supports as many schedules as you need, each with its own timezone and its own working windows per weekday — so a Cape Town team on 08:00–16:30 and a London team on 09:00–17:30 are two schedules, not a compromise, and a Saturday morning shift is just a window on Saturday.
Holiday calendars attach to a schedule, and support both fixed dates and dates that repeat every year. A holiday contributes zero working minutes; it does not shift the working window, it removes it.
One implementation detail worth stating because it is where most SLA engines quietly break: the arithmetic walks local calendar days and evaluates each day's windows in the schedule's own timezone, rather than adding fixed hour offsets to a timestamp. That is why a daylight-saving weekend does not silently move every open deadline by an hour, and why a deadline computed in March still explains correctly when you read it in November.
The specifics
- Unlimited schedules, each with its own timezone
- Per-weekday working windows, including split shifts and weekend hours
- Holiday calendars with one-off and annually recurring dates
- Arithmetic walks local calendar days in the schedule's timezone, not fixed UTC offsets
- Daylight-saving transitions therefore do not shift existing deadlines
- Each mailbox and policy can point at a different schedule
Worked example: why this is due Wednesday at 10:00
This single example is the whole feature. A four-hour first response target, on business hours of Monday to Friday 08:00–17:00, with a ticket arriving at 15:00 on Monday and a public holiday on Tuesday.
Ticket arrives Monday 15:00. Target: 4 hours, business hours, Mon–Fri 08:00–17:00. Tuesday is a public holiday.
| Window | Counted | Remaining |
|---|---|---|
| Monday 15:00 → 17:00 | 2 hours | 2 hours |
| Tuesday — public holiday | 0 hours | 2 hours |
| Wednesday 08:00 → 10:00 | 2 hours | 0 hours |
Deadline: Wednesday 10:00. A calendar-hours clock would have said Monday 19:00 — two hours after the office shut, on a target nobody could have met.
The specifics
- Working minutes accumulate only inside defined windows on working days
- A holiday contributes zero minutes and is named in the explanation
- The remaining target carries across days rather than restarting
- The same arithmetic produces both the deadline and the explanation of it
Pausing, done correctly
When a ticket is waiting on the customer — you have asked for an order number, a screenshot, a decision — the clock stops. That much every helpdesk claims. The interesting part is what happens when it starts again.
Stillpoint stores the clock minutes already consumed at the moment of the pause, and on resume recomputes the deadline as "now, plus the remaining target" on the correct clock. That sounds like a detail and it is the difference between a defensible number and a fictional one. The classic bug is to add the wall-clock pause duration onto a business-hours deadline: a ticket paused from Friday 16:00 to Monday 09:00 gains 65 wall-clock hours, of which the business clock would only ever have spent one. Adding the wall duration silently hands back time the clock never spent, and the resulting target is unmeetable in one direction or absurdly generous in the other.
Per policy you also choose whether waiting on a third party — a supplier, a courier, an upstream vendor — pauses the resolution clock. Some contracts allow that and some deliberately do not, so it is a setting rather than an assumption.
The specifics
- Pausing records consumed clock minutes, not a wall-clock timestamp to subtract later
- Resuming recomputes the deadline as now plus remaining target, on the policy's clock
- Pause reasons are typed: waiting on customer, waiting on third party
- Whether third-party waiting pauses the resolution clock is a per-policy choice
- Every pause and resume is appended to the clock history with its reason and timestamp
"Why is this due at 10:00?" — the screen that earns trust
Every deadline in Stillpoint can be opened and explained. The explanation lists, in order: when the clock started and against which policy and schedule, each window that counted and how many minutes it contributed, each day that contributed nothing and why — closed, or a named holiday — every pause and resume with its reason, and how much clock time remains.
The important property is not the presentation, it is the plumbing: that screen calls the same arithmetic that set the deadline. It does not recompute an approximation for display. So the explanation can never disagree with the number, which is the failure mode that destroys confidence in an SLA report faster than a missed target ever does.
If a schedule or policy was changed after the clock started, the explanation says so rather than quietly showing figures derived from the new configuration. You get "this deadline was set under the previous schedule" instead of an unexplained mismatch with your own settings.
The specifics
- Segment-by-segment breakdown of any first response, next response or resolution deadline
- Names the specific holiday or closed day that produced each gap
- Lists every pause and resume with reason and timestamp
- Driven by the same calculation that set the deadline, so the two cannot diverge
- Flags deadlines whose schedule or policy changed after the clock started
- Exportable, so it can be attached to a client conversation
It refuses to guess
If a policy points at a schedule with no working hours defined, Stillpoint does not fall back to a 24/7 clock and produce a deadline anyway. It withholds the deadline and tells you the schedule needs working hours. The same applies if a policy references a schedule that has since been deleted.
The reasoning is worth stating plainly, because a missing value looks like a bug and a wrong value looks like a feature: a plausible-looking wrong deadline is far more damaging than a visibly absent one. The wrong one gets quoted in a contract review, printed in a board pack and used in somebody's performance appraisal. The absent one gets fixed in about ninety seconds.
The specifics
- A schedule with no working hours produces no deadline, plus a stated reason
- A policy pointing at a deleted schedule is flagged rather than silently defaulted
- No hidden 24/7 fallback anywhere in the SLA engine
- Configuration problems surface as configuration problems, not as strange numbers
Escalation ladders
Escalating at the breach is escalating too late. Stillpoint fires escalations at percentages of the target, each level with its own recipient and its own action — so a supervisor hears about a ticket while there is still time to do something about it.
A typical ladder: 70% nudges the assigned agent, 100% notifies the team lead, 120% notifies a manager and can automatically raise the ticket priority. Each level fires once, so a long-running ticket does not generate a notification every few minutes and train everyone to ignore them. Every escalation is written to the ticket timeline with its threshold and its reason, which means "nobody told me" is a checkable claim rather than an argument.
The specifics
- Thresholds expressed as a percentage of the target, not just at breach
- Each level has its own notification target: agent, team lead, manager
- Levels can raise priority automatically as well as notify
- Each level fires exactly once per target, so escalations stay meaningful
- Every escalation appended to the ticket timeline with threshold and reason
Reporting you can defend
The SLA clock history is append-only. Every start, pause, resume, met, breach and escalation is recorded with its reason and timestamp, and nothing in that history is ever rewritten. Compliance is computed from those records, never from a ticket's current fields — which is why a ticket that spent three days paused reports the same way next quarter as it does today.
Two exclusions matter for honesty. Targets that are still running are excluded from compliance rather than counted as successes, because their outcome is not yet known; counting them as met is the most common way an SLA dashboard flatters itself. And tickets that existed before SLA history was recorded are excluded and labelled as such, rather than being assumed compliant.
There is also a deliberate gap, and it is better to name it than to approximate quietly: median and average response times are reported on the calendar clock, because business-hours arithmetic cannot be expressed in portable SQL across the databases Stillpoint supports. The SLA compliance figures — met, breached, at risk, by policy, by team, by agent — are computed on the correct clock and answer the contractual question. The distribution statistics are calendar-time, and every one of them says so.
The specifics
- Append-only clock history: start, pause, resume, met, breach, escalation, each with a reason
- Compliance computed from recorded history, never from current status fields
- Still-running targets excluded from compliance rather than counted as met
- Pre-SLA tickets excluded and labelled, not assumed compliant
- Compliance broken down by policy, team, agent, mailbox and priority
- Median and average response times are calendar-clock and labelled as such
How routing interacts with SLA
An SLA promise that depends on somebody remembering it is not a promise. Policies are matched to tickets by an ordered rule set where the first match wins, and the rules can test the data the rest of the platform already holds: priority, customer lifetime spend, RFM segment, order value, company, mailbox or ticket category.
That commerce-aware matching is only possible because the store and the CRM are in the same database as the tickets. "Customers who have spent over $50,000 get a two-hour first response" becomes a rule the system applies to every ticket, including at 02:00 when the person who negotiated it is asleep. Routing rules can then send those tickets to the right team, and every routing and policy decision is written to the ticket timeline so an assignment is never mysterious.
The specifics
- Ordered rule set, first match wins, evaluated on every ticket
- Conditions include priority, lifetime spend, RFM segment, order value, company, mailbox, category
- Commerce conditions work because WooCommerce data is in the same database
- The matched policy and the reason are recorded on the ticket
- Routing rules can pair an SLA tier with the team that has to meet it
SLA management questions
Yes. Policies are matched by an ordered rule set where the first match wins, and rules can test customer lifetime spend, RFM segment, order value, company, priority, mailbox or ticket category. "Customers who have spent over $50,000 get a two-hour first response" is a rule the system applies, not a promise an agent has to remember.
Yes. Each mailbox carries its own default SLA policy, so returns@ can promise next-business-day while vip@ promises two hours, and a multi-brand install can give each brand its own targets and its own working schedule.
On a business-hours target, yes — the clock only advances inside the working windows you defined for that schedule, in that schedule's timezone. On a calendar-hours target it runs continuously. Every reported number states which clock it used, so there is no ambiguity about what was measured.
Holiday calendars are attached to a schedule, including dates that repeat every year. A holiday contributes zero working minutes, and the deadline explanation names the holiday that caused the gap rather than showing an unexplained jump.
No. First response counts only public agent replies. Internal notes, automated messages and auto-replies do not stop the clock — the same definition Zendesk and Freshdesk use, so your figures are comparable to industry benchmarks rather than flattering.
A new resolution clock starts, and the history keeps both. The original target and its outcome remain recorded, so a reopened ticket does not retroactively erase or rewrite the first resolution — and the reopen rate is reportable separately.
Yes, that is what the deadline explanation screen exists for. It breaks any target down segment by segment: when the clock started, which working windows counted and for how many minutes, which days contributed nothing and why, every pause and resume with its reason, and how much clock time remained. It calls the same arithmetic that set the deadline, so the explanation cannot disagree with the number.
No, and this is the design decision that makes them defensible. Every start, pause, resume, met, breach and escalation is appended to an immutable clock history, and compliance is computed from that recorded history. A ticket that was paused for three days still reports honestly a month later.
Where to next
- Email to ticket — mailboxes, connection options, threading and duplicate protection.
- Service Desk overview — Customer 360 on every ticket, routing, portal, knowledge base and incidents.
- Stillpoint vs SupportCandy — how the two compare for WordPress support teams.
- Features — every module documented, from pipelines to work management.
- Pricing — Pro and Agency, both with unlimited agents.
SLA numbers your client can check
SLA management is part of the Service Desk, included in Pro ($299/yr) and Agency ($499/yr) with unlimited agents. The clock history stays on your own server.
Unlimited users · Flat price per site · 30-day money-back guarantee