Sign in

Blog · Board and management reporting · Customer service

Customer service dashboard template: fields and checks

Use a copyable customer service dashboard template with ticket inputs, account ownership, metric formulas, and checks. The worked worksheet shows how backlog, completed SLA attainment, resolution hours, and repeat contacts reconcile.

The short answerA customer service dashboard template should separate reporting controls, account records, ticket inputs, calculation columns, and the account review. The reusable worksheet layout below includes formulas for backlog, resolution hours, completed-ticket SLA attainment, and repeat contacts. Its checks reconcile opening tickets plus arrivals minus closures to closing backlog and flag duplicate or unmatched records.

A customer service dashboard template needs defined input fields, explicit reporting boundaries, and checks beside the metrics. Copy the worksheet layout and formulas below into a workbook, then replace the example records with your own ticket and account exports.

Set up four worksheets

Use the following sheet names so the formulas remain reusable. This is a copyable worksheet specification; each formula belongs in the field or cell named beside it.

Worksheet Contents Refresh rule
Controls Period start and exclusive cutoff Change deliberately for each review
Accounts Unique account IDs and service owners Replace from the current account list
Tickets Ticket inputs and helper columns Replace input records; retain formulas
Review Account metrics and total checks Recalculate after validation

Convert the account range to an Excel table named tAccounts and the ticket range to a table named tTickets. Structured references use table and column names and adjust when table data changes. The formulas below refer to those exact names.

The customer service dashboard workflow explains how to run the review. For the measure selection behind it, use KPIs for B2B customer service teams.

Fill controls and source tables

Enter real date-time values in the controls. This example uses UTC, calendar hours, and no paused clocks. The end is exclusive: a closure exactly at the cutoff belongs to the next period.

Controls cell Label Example value
B2 PeriodStart July 1, 2026, 12:00 AM
B3 Cutoff July 8, 2026, 12:00 AM

Create tAccounts with these columns. Team names stand in for the responsible service owners.

AccountID AccountName ServiceOwner
A01 Acorn Industrial East service team
B01 Beacon Distribution West service team

Create these input columns in tTickets. All example timestamps are midnight UTC in 2026. Leave unresolved dates empty. TargetHours is the ticket's applicable resolution commitment, and RepeatFlag is either 0 or 1 under a documented same-issue linking policy.

TicketID AccountID OpenedAt ResolvedAt TargetHours RepeatFlag
S201 A01 June 29 July 2 72 0
S202 B01 July 2 July 3 48 0
S203 A01 July 4 Blank 48 1
S204 B01 July 7 Blank 48 0

Keep tickets open at the start even when they were created in an earlier period. A creation-date-only export cannot reconstruct the backlog. Do not append successive snapshots as if they were separate tickets.

Add the calculation columns

Add each named column to tTickets and enter its formula in the first data row. Flags return 1 when true and 0 when false. Duration fields stay blank outside their relevant population.

Helper column Formula
OpenAtStart =--AND([@OpenedAt]<Controls!$B$2,OR([@ResolvedAt]="",[@ResolvedAt]>=Controls!$B$2))
NewInPeriod =--AND([@OpenedAt]>=Controls!$B$2,[@OpenedAt]<Controls!$B$3)
ClosedInPeriod =--AND(ISNUMBER([@ResolvedAt]),[@ResolvedAt]>=Controls!$B$2,[@ResolvedAt]<Controls!$B$3)
OpenAtEnd =--AND([@OpenedAt]<Controls!$B$3,OR([@ResolvedAt]="",[@ResolvedAt]>=Controls!$B$3))
ResolutionHours =IF([@ClosedInPeriod]=1,24*([@ResolvedAt]-[@OpenedAt]),"")
SLAMet =IF([@ClosedInPeriod]=1,--([@ResolutionHours]<=[@TargetHours]),"")
AgeDays =IF([@OpenAtEnd]=1,Controls!$B$3-[@OpenedAt],"")
OverdueOpen =IF([@OpenAtEnd]=1,--(24*[@AgeDays]>[@TargetHours]),0)
IDCount =COUNTIFS(tTickets[TicketID],[@TicketID])
AccountMatches =COUNTIFS(tAccounts[AccountID],[@AccountID])

The final two columns must each equal 1 on every record. Microsoft's COUNTIFS documentation describes counting records that satisfy the criteria. Here, repeated ticket IDs and missing or duplicated account matches become visible exceptions.

Before accepting these calculations, require nonblank TicketID and AccountID values. Check that OpenedAt is a timestamp, ResolvedAt is blank or a timestamp no earlier than OpenedAt, TargetHours is positive and populated, and RepeatFlag is 0 or 1. Reject invalid rows for correction; keep their count visible instead of silently excluding them.

Build the reusable account review

On Review, put A01 in A2 and B01 in A3. Use the following column layout and row-2 formulas, then fill down. SUMIFS adds values meeting the specified criteria, allowing the same helper flags to supply each account's counts.

B2  Opening
=SUMIFS(tTickets[OpenAtStart],tTickets[AccountID],$A2)

C2  New
=SUMIFS(tTickets[NewInPeriod],tTickets[AccountID],$A2)

D2  Closed
=SUMIFS(tTickets[ClosedInPeriod],tTickets[AccountID],$A2)

E2  Closing
=SUMIFS(tTickets[OpenAtEnd],tTickets[AccountID],$A2)

F2  MeanResolutionHours
=IF(D2=0,"",SUMIFS(tTickets[ResolutionHours],tTickets[AccountID],$A2)/D2)

G2  CompletedSLARate
=IF(D2=0,"",SUMIFS(tTickets[SLAMet],tTickets[AccountID],$A2)/D2)

H2  RepeatShareOfNew
=IF(C2=0,"",SUMIFS(tTickets[RepeatFlag],tTickets[AccountID],$A2,tTickets[NewInPeriod],1)/C2)

I2  OverdueOpen
=SUMIFS(tTickets[OverdueOpen],tTickets[AccountID],$A2)

J2  MovementResidual
=B2+C2-D2-E2

Covirage is not affiliated with Microsoft.

For the total row, sum counts in columns B:E and I. Set J4 to =B4+C4-D4-E4. Use the formulas below for F4:H4, preserving the correct denominators:

F4 =IF(D4=0,"",SUM(tTickets[ResolutionHours])/D4)
G4 =IF(D4=0,"",SUM(tTickets[SLAMet])/D4)
H4 =IF(C4=0,"",SUMIFS(tTickets[RepeatFlag],tTickets[NewInPeriod],1)/C4)
Account Opening New Closed Closing Mean hours Completed SLA Repeat share Overdue open
A01 1 1 1 1 72.0 100.0% 100.0% 1
B01 0 2 1 1 24.0 100.0% 0.0% 0
Total 1 3 2 2 48.0 100.0% 33.3% 1

The completed durations are 72 and 24 hours, so the mean is 96 / 2 = 48.0. Both completed tickets met their targets: 2 / 2 = 100.0%. One of three newly opened tickets was a repeat: 1 / 3 = 33.3%. Round displayed hours and percentages to one decimal place after calculation.

Keep the checks beside the result

Every MovementResidual must equal zero. The total bridge is 1 + 3 - 2 - 2 = 0. The two closing tickets are four days and one day old; only the four-day ticket exceeds its 48-hour target. This explains why completed SLA attainment can be perfect while an open commitment is overdue.

Also compare total review counts with the corresponding helper-column sums. That catches an omitted account row even when each displayed account reconciles. Preserve the source filename and export cutoff with the workbook so the next reviewer can repeat the check.

Where it goes wrong

  • Deleting formula columns during refresh. Replace input values while retaining the named helper columns and formulas.
  • Changing target definitions. A calendar-hour template needs different calculations for contractual business hours or pauses.
  • Reopenings without movements. The supplied bridge assumes no reopenings or cancellations. Add separate event counts when those occur.
  • Averaging account percentages. Use summed numerators over summed denominators for the total.
  • Reading repeats as customer health. Use a customer experience dashboard for broader experience measures; a repeat flag alone does not establish satisfaction or retention.

Analyze your own service worksheet in Covirage

Bring the workbook's ticket and account records to Covirage. Covirage maps the columns, its tools compute and check the figures, and the external AI model explains the account differences with every figure traced to its rows. Create a free Covirage account and bring a sample of your own data.

See Covirage for customer service teams for the account questions this review supports.

Questions people ask

Which fields are required in a service dashboard template?

Start with unique ticket ID, account ID, opened and resolved timestamps, the applicable service target, and a documented repeat-contact flag. Add an account list with ownership and reporting controls. Severity and category are useful extensions when they explain different work or commitments.

Can this template calculate business-hour SLAs?

The formulas shown use elapsed calendar hours without pauses. Business-hour commitments require the applicable work calendar and pause history. Keep the supplied attainment measure separate until those contractual clocks can be reconstructed, rather than assuming that calendar-hour subtraction measures the same obligation.

What should happen when an account has no closed tickets?

Leave completed resolution time and completed SLA attainment blank for that account. The denominator is empty, so zero would imply a measured result. Continue showing its open backlog, ages, and overdue commitments, which can still require immediate action.