Dashboard

What goes in an SLA & response-time dashboard in Metabase?

An SLA & response-time dashboard tracks whether you're keeping the promises you make to customers — first-response and resolution targets, breaches, and how open work is aging against the clock. Build it from support data synced into a database — see Zendesk, Front, or Freshdesk for the connection.

For: Support leaders, ops, account teams. Refresh: hourly. Source: modeled tickets with response/resolution timestamps and SLA targets (or modeled targets by priority).

Which cards belong on an SLA dashboard?

Headline KPIs

  • First-response SLA attainment %
  • Resolution SLA attainment %
  • Breaches this period
  • Median first-response time

Trend & risk

  • SLA attainment by week
  • Response-time percentiles (median and p90) over time
  • Breaches by priority and by team
  • Open tickets approaching or past SLA (table)

What data does an SLA dashboard need?

  • A tickets table with created, first_response_at, and resolved_at.
  • SLA targets — from SLA policy fields, or modeled per priority/plan if the tool doesn't store them.
  • For business-hours SLAs, a business-hours calendar to subtract nights and weekends.
  • Priority and team fields to break down breaches.

How do you build an SLA dashboard?

  1. Sync your help desk into a database (Zendesk, Front, or Freshdesk).
  2. Define SLA targets by priority; if measuring in business hours, subtract non-working time before comparing.
  3. Compute met/breached per ticket, then attainment by period.
  4. Add an at-risk table of open tickets nearing their target.

Example card SQL

First-response SLA attainment by weekPostgreSQL
-- First-response SLA attainment by week.
-- SLA target here is 4 business... simplified to calendar hours for the example.
SELECT
  date_trunc('week', t.created_at)                        AS week,
  COUNT(*)                                                AS tickets,
  COUNT(*) FILTER (
    WHERE EXTRACT(EPOCH FROM (t.first_response_at - t.created_at)) / 3600.0 <= 4
  )                                                       AS met_sla,
  ROUND(100.0 * COUNT(*) FILTER (
    WHERE EXTRACT(EPOCH FROM (t.first_response_at - t.created_at)) / 3600.0 <= 4
  ) / NULLIF(COUNT(*), 0), 1)                             AS sla_attainment_pct
FROM tickets t
WHERE t.first_response_at IS NOT NULL
GROUP BY date_trunc('week', t.created_at)
ORDER BY week;

Integrations

Analytics

Dashboards

Metrics

FAQ

What if my help desk doesn't store SLA targets?
Model them yourself: a small mapping of priority (or plan) to a first-response and resolution target, joined to each ticket. That lets you compute attainment even when the tool has no formal SLA policy, and it keeps the definition in your control.
Should SLAs be measured in business hours?
If that's what you promised customers, yes — subtract nights, weekends, and holidays using a business-hours calendar before comparing to the target. Otherwise a ticket opened Friday evening looks like a breach on Monday. See first-response time for the calendar-vs-business-hours trade-off.
How do I stop breaches before they happen?
Add an at-risk card: open tickets whose time-to-target is running low, sorted by how close they are to breaching. That turns the dashboard from a scorecard into an operational queue the team can work down in real time.