Metric · Support

What is escalation rate, and how do you measure it in Metabase?

Escalation rate is the share of tickets that tier-1 support hands off — to tier-2, to management, or to engineering. It's the metric that shows where frontline knowledge runs out, which makes it less a performance grade than a map of training, documentation, and product gaps. Measure it in Metabase from help desk data synced into a database (Zendesk, Freshdesk, Intercom, or Gorgias).

TL;DRescalated tickets ÷ total tickets per month, with tier-1 → tier-2 handoffs as the headline series and management and engineering escalations tracked separately. The by-topic breakdown is where the action is: outlier topics are docs or product gaps with an address.

What escalation rate measures

It measures how often a ticket exceeds the frontline's reach — but "the frontline's reach" ends in three different places, and the distinction matters:

  • Tier-1 → tier-2 — a skills or permissions boundary. The bread-and-butter escalation, and the one to use as the headline rate.
  • Management escalation — an upset or high-stakes customer. A relationship signal, closer to CSAT than to routing.
  • Engineering escalation — a suspected bug or missing capability. A product signal that no amount of support training will move.

A high tier-1 → tier-2 rate means either a training and documentation gap or a genuinely hard product area — and the by-topic breakdown tells you which. Escalation rate pairs naturally with first-contact resolution: one counts the tickets the frontline finishes, the other counts the ones it passes on, and gaming either one distorts the other.

What data does it need?

  • A per-ticket escalation marker — an escalated_at timestamp derived from group/team changes, an escalation tag, or a tier field change in the audit history.
  • An escalation type (tier-2, management, engineering) so the three series stay separate. Tags or destination group usually encode this.
  • topic or category on every ticket, because the by-topic view is the whole point.
  • created_at and solved_at, to compare resolution time for escalated vs non-escalated tickets.

SQL patterns

Monthly escalation rate by topicPostgreSQL

Ranks topics by escalation rate to surface training, docs, and product gaps.

-- Monthly tier-1 -> tier-2 escalation rate by topic. Topics that
-- escalate far above the baseline are training, docs, or product gaps.
SELECT
  date_trunc('month', t.created_at)                       AS month,
  t.topic,
  COUNT(*)                                                AS tickets,
  COUNT(*) FILTER (WHERE t.escalated_at IS NOT NULL)      AS escalated,
  ROUND(100.0 * COUNT(*) FILTER (WHERE t.escalated_at IS NOT NULL)
        / NULLIF(COUNT(*), 0), 1)                         AS escalation_rate_pct
FROM tickets t
GROUP BY date_trunc('month', t.created_at), t.topic
HAVING COUNT(*) >= 20  -- skip topics too small to trust
ORDER BY month, escalation_rate_pct DESC;
Escalated vs non-escalated resolution timePostgreSQL

Median and p90 resolution hours for each group — the customer-facing cost of a handoff.

-- What escalation costs in customer time: resolution percentiles for
-- escalated vs non-escalated tickets, last 90 days.
SELECT
  (t.escalated_at IS NOT NULL)                            AS was_escalated,
  COUNT(*)                                                AS resolved_tickets,
  PERCENTILE_CONT(0.5) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (t.solved_at - t.created_at)) / 3600.0
  )                                                       AS median_hours,
  PERCENTILE_CONT(0.9) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (t.solved_at - t.created_at)) / 3600.0
  )                                                       AS p90_hours
FROM tickets t
WHERE t.solved_at >= current_date - INTERVAL '90 days'
GROUP BY (t.escalated_at IS NOT NULL);

Pitfalls

Blending the three escalation types into one rate.→ Tier-2 handoffs, management escalations, and engineering bugs have different causes and owners. One blended number goes up and nobody knows whose problem it is. Keep three series.
Using escalation rate as an agent scorecard.→ Punish escalations and agents stop escalating — tickets that needed tier-2 get answered wrong at tier-1 instead. Read it as a system signal (training, docs, product), not an individual one.
Ranking topics without a volume floor.→ A topic with three tickets and one escalation posts 33% and tops the chart. Require a minimum ticket count per topic-month before ranking, as in the SQL above.
Losing the escalation event in the sync.→ If the pipeline only mirrors the current assignee, a ticket escalated and then resolved by tier-2 looks like it started there. Derive escalations from audit/event history, not from the final state.

Where this metric applies

Metrics

Analytics & dashboards

FAQ

What counts as an escalation?
Decide before you measure, because three different events share the name: tier-1 to tier-2 handoffs (a skill or permission boundary), management escalations (an angry or high-stakes customer), and engineering escalations (a suspected bug or missing capability). They have different causes and different fixes, so mixing them into one rate produces a number nobody can act on. Most teams make tier-1 to tier-2 the headline escalation rate and track the other two as separate, much smaller series.
What is a good escalation rate?
It depends on how much your tier-1 team is designed to absorb — a deliberately thin frontline escalates more by design. The useful signals are the trend and the spread across topics: a rate drifting up with stable ticket mix means tier-1 is losing ground on training or tooling, and a topic escalating at three times the baseline is a documentation or product gap with an address. Judge it next to CSAT and resolution time, not against someone else's benchmark.
Is a low escalation rate always good?
No — it can mean tier-1 agents are grinding through tickets they should hand off, which shows up as long handle times, wrong answers, and reopens rather than as escalations. First-contact resolution and escalation rate belong together: healthy support resolves most tickets at first touch and escalates the genuinely hard ones quickly. Punishing escalations teaches agents to hide them.
How do you find deflection opportunities in escalation data?
Segment escalations by topic and look at the top of the table. Topics with high volume and high escalation rates are where tier-1 knowledge runs out — exactly where a better help center article, an internal runbook, or a product fix pays off twice, by cutting both escalations and ticket creation. Cross-check against knowledge-base coverage to see which of those topics lack an article at all, then watch deflection rate to confirm the new content works.
How do you track escalation rate in Metabase?
Sync your help desk into a SQL database with Airbyte, Fivetran, or a similar pipeline — Zendesk, Freshdesk, Intercom, and Gorgias all sync the group changes or tags that mark escalations. Derive an escalated_at timestamp per ticket, chart the monthly rate by topic, and pin it with the escalated-vs-not resolution comparison on the agent performance dashboard.