Not verified hands-on. This article was written from primary documentation rather than reproduced in an org, so it carries no tested-release badge. If you run it and something differs, say so in the comments and it gets tested and corrected.

Salesforce gives you case volume and case age for free, and nothing else that matters. First response time, resolution time against business hours, and reopened case counts all have to be built, because the platform does not store them. Most service dashboards measure what was easy to report rather than what the team needs to know, and that is why they get ignored.

What you get without building anything

Case reports cover volume by any field you have: origin, type, priority, owner, queue, account. Age is available on case reports and behaves sensibly, counting from creation to now for an open case and to closure for a closed one.

The standard report types worth knowing are cases alone, cases with emails, cases with case comments, and the lifecycle report type, which gives duration figures with a business hours option.

That covers backlog, throughput and distribution. It does not cover quality or responsiveness.

First response time, which you have to build

There is no standard field holding when an agent first replied. Two ways to get one.

Entitlement milestones. If you already run entitlements, a First Response milestone gives you a target date, a completion date and a violation flag on a Case Milestone record, and that record is properly reportable. This is the better answer when you have contractual targets, because attainment is what you are measuring anyway.

A field you populate yourself. A record-triggered flow on EmailMessage that fires on the first outbound message for a case and stamps a datetime on the case. Guard it so it only writes when the field is blank, or every reply overwrites it.

Then a formula converts the gap to minutes or hours for reporting. Elapsed time is straightforward. Business hours are not, because formula fields have no business hours function. If you need first response measured against your support hours, calculate it in Apex with the platform’s business hours methods and write the result to a field:

Long elapsedMs = BusinessHours.diff(bhId, c.CreatedDate, firstResponse);
c.First_Response_Business_Minutes__c = elapsedMs / 60000;

Resolution time

Closed date minus created date is a formula and takes five minutes. It is also the number most likely to be misread.

Report the median, not the mean. Case resolution times are heavily skewed: a hundred cases closed in two hours and three cases open for six weeks give you an average that describes nothing. The median tells you what a typical customer experienced.

Reopened cases, the metric nobody tracks

Reopen rate is the best single quality indicator in a support organisation, and Salesforce does not measure it.

Build it. A record-triggered flow on Case that fires when IsClosed changes from true to false, incrementing a reopen counter and stamping the last reopen date. From there, reopen rate by agent, by case type and by resolution reason all fall out of ordinary case reporting.

Backlog and ageing, which need buckets

Open case count is a single number that hides its own shape. Ten cases open at three days and ten open at ninety days are not the same situation.

The dashboard people actually use

Six components, not twenty. Open backlog by age band. Cases opened against cases closed, by day, for the last fortnight. Median resolution time by case type. First response attainment. Reopen rate. Oldest ten open cases as a drillable list.

That last one does more for backlog than everything else combined, because it converts a metric into a to-do list.

Frequently asked

Why does my case age look wrong? Age counts elapsed time, not working time. A case raised on Friday afternoon is two days old on Sunday. If you need business hours ageing, it is a calculated field.

Can I report on time in each status? Not from standard reports. It needs field history tracking on Status plus a custom object or calculated fields to hold the durations. Build it only if a real decision depends on it.

Should I report on cases or on milestones? Both, for different questions. Cases for volume and backlog. Milestones for whether you met what you promised.