Docs
SLA

Business-hours SLA

Pause SLA timers outside your workspace's opening hours, weekends, and holidays.

Business-hours SLA

By default, Ticket0 measures SLA deadlines in wall-clock time: a ticket created on Friday at 17:00 with a 4-hour target breaches at 21:00 the same day. Business-hours SLA changes this so timers only count time your team is actually open.

How it works

When business hours are enabled for a workspace, every SLA deadline is computed by walking forward through your configured opening hours:

  • Time outside the configured weekday window does not count.
  • Closed weekdays (e.g., Saturday and Sunday) are skipped entirely.
  • Holidays are treated as full-day closures.

Worked example

Your workspace uses Europe/Copenhagen, Monday–Friday 09:00–17:00, no holidays. A ticket arrives on Friday at 17:00 with a 4-hour first-reply target:

  • Friday 17:00 is exactly closing time, so the timer has not started.
  • Saturday and Sunday are closed.
  • Monday 09:00 opens with the full 4 hours still remaining.
  • The deadline is Monday 13:00 local time.

A ticket created on Saturday at any time starts Monday 09:00 and inherits the same deadline for a 4-hour target.

Configure business hours

  1. Go to Settings → SLA in the product app.
  2. Enable Pause SLA timers outside opening hours.
  3. Choose the workspace timezone.
  4. Set open hours for each weekday. Toggle a day off to treat it as closed.
  5. Add any holidays as full-day closures.
  6. Save. The app automatically re-enqueues SLA breach and at-risk jobs for every open, pending, and snoozed ticket that has not yet breached.

DST behavior

The calendar walk uses Luxon under the hood, so DST transitions are handled automatically. Around a transition, a deadline's local wall-clock time may shift by one hour relative to what you would get from pure UTC arithmetic. For a typical Monday–Friday 09–17 schedule the transition itself falls on a weekend outside opening hours, so only the UTC offset of the final deadline changes.

Cutover impact

  • Enabling or disabling business hours, changing the timezone, or editing opening hours/holidays triggers a recompute of all pending SLA jobs.
  • The recompute uses stable job IDs, so old at-risk and breach jobs are removed and replaced rather than left behind.
  • Tickets that have already been stamped as breached are not recomputed — they keep their existing breach timestamp and notification.

Pitfalls and limits

  • Zero open hours: If all weekdays are disabled, the feature becomes inert and SLA deadlines fall back to wall-clock time.
  • Whole-hour granularity: The settings UI currently uses whole-hour open/close pickers. The underlying algorithm supports any HH:mm interval, so finer granularity can be added later without a data migration.
  • Workspace-wide: Business hours apply to the entire workspace, not per-priority or per-team.
  • Resolution deadline: The resolution countdown shown on the ticket detail panel respects business hours, but only first-reply breach jobs (response breach/at-risk) are scheduled. There is no resolution breach job today.

On this page