How we picked
Business hours look like a settings page and behave like the foundation of your entire SLA program. Every response-time number you report, every contractual commitment you make, and every escalation timer you set is measured against this calendar. Configure it loosely and your metrics become fiction — usually flattering fiction, which is worse, because nobody investigates good numbers.
We scored on granularity: can you define multiple schedules and map them to specific teams, brands, plans, or contract tiers? A single global calendar forces every customer segment onto the same clock, which fails as soon as you sell one 24x7 contract. Then holiday handling, which is the most commonly skipped configuration and the source of the most predictable breaches. And timezone correctness — whether the SLA clock resolves against the assigned agent's timezone, the customer's, or a fixed business timezone, and whether that behavior is documented rather than discovered.
We also looked at after-hours behavior as a separate capability. Turning chat off is trivial. What separates the good tools is what fills the gap: an accurate auto-response stating the next response window, a severity-tagged intake form, and a path for genuine emergencies to reach on-call without opening the floodgates for everything else.
Finally, daylight saving handling. It sounds trivial until a schedule defined in fixed offsets silently shifts an hour twice a year and your morning coverage gap becomes a support incident. Tools that store schedules against named timezones rather than UTC offsets handle this correctly; check which yours does.
What to prioritize
- Multiple schedules mapped to SLA policies. One calendar per support tier or contract type, each bound to its own SLA policy. If schedules are global, every 24x7 commitment you sell will require a manual workaround that someone forgets during their first vacation.
- A real holiday calendar per region. Not a checkbox for weekends — a per-region list of dates that pauses SLA clocks. Load a full year at once. This single configuration prevents more breaches than any other setting in the tool.
- Named-timezone schedules, not fixed offsets. Schedules stored as "Europe/Berlin" survive daylight saving; schedules stored as "UTC+1" do not. This is a five-minute check in a trial that saves an ugly surprise in March.
- Explicit SLA pause semantics. Know exactly when the clock stops: outside hours, on holidays, and while pending customer reply. Ambiguity here is why teams end up with two conflicting sets of response-time numbers and an argument about which one is real.
- After-hours auto-response with a stated next-response window. "We're closed" is unhelpful. "We're closed, we reopen at 9am CET, you'll hear from us within four business hours" prevents the follow-up messages that inflate your queue overnight.
- A severity path that bypasses hours. Genuine P1s cannot wait for opening time. You need one route — a form field, a keyword, a dedicated address — that escalates to on-call regardless of the calendar, plus reporting on how often it gets misused, because it always does.