EnableYourData.com

KPI · Customer service

First contact resolution (FCR): formula and example.

First contact resolution (FCR) is the percentage of customer requests that are fully resolved in the first contact, without the customer having to get in touch again or the ticket being passed on. Customers value not having to chase, so FCR is closely linked to customer satisfaction. A higher FCR also reduces the number of contacts and therefore the workload.

First contact resolution (FCR) formula

Requests resolved in one contact ÷ total resolved requests × 100%

Worked example

Acme Groothandel resolved 1,150 tickets in March. Of these, 805 were resolved in a single contact and not reopened. FCR is 805 ÷ 1,150 × 100% = 70%.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A higher FCR means customers are helped in one go and come back less often. A low FCR points to a lack of knowledge or authority on the front line, or to requests only another department can solve. Compare by channel and by request category, because some requests can never be resolved in a single contact.

Pitfalls with first contact resolution (FCR)

  • Not linking tickets that come back within a few days about the same problem, which overstates FCR.
  • Including requests that can never be solved in one contact, such as returns, without splitting by category.
  • Judging agents on FCR, which leads to tickets being closed too early and reopened later.

SQL & DAX

Calculating first contact resolution (FCR) in SQL and DAX

Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.

SQL · PostgreSQL
SELECT date_trunc('month', resolved_at)::date AS month,
       COUNT(*) AS resolved,
       COUNT(*) FILTER (WHERE contacts_to_resolve = 1 AND NOT reopened) AS resolved_first_contact,
       ROUND(100.0 * COUNT(*) FILTER (WHERE contacts_to_resolve = 1 AND NOT reopened)
             / NULLIF(COUNT(*), 0), 1) AS fcr_pct
FROM tickets
WHERE resolved_at IS NOT NULL
  AND resolved_at >= current_date - interval '12 months'
GROUP BY 1
ORDER BY 1;
DAX · Power BI
Resolved Tickets = CALCULATE(COUNTROWS(Tickets), NOT ISBLANK(Tickets[ResolvedAt]))

FCR % =
DIVIDE(
    CALCULATE(COUNTROWS(Tickets), NOT ISBLANK(Tickets[ResolvedAt]), Tickets[ContactsToResolve] = 1, Tickets[Reopened] = FALSE()),
    [Resolved Tickets]
)

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for first contact resolution (FCR) per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.

Read more →

In your Power BI dashboard

Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.

Read more →

Custom dashboards (pilot)

Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.

Read more →

Monthly targets

With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.

Read more →

FAQ

Frequently asked questions

How do you calculate first contact resolution?

Divide the number of requests resolved in one contact by the total number of resolved requests and multiply by 100%. With 805 out of 1,150 resolved tickets, FCR is 70%. Do not count tickets that are later reopened as resolved in one contact.

What is the difference between FCR and reopen rate?

FCR measures the share of requests resolved in one contact, reopen rate the share of closed tickets that were opened again later. A high FCR combined with a high reopen rate suggests tickets are being marked as resolved too early.

How do you measure FCR for email and chat?

For email and chat, count a request as resolved in one contact if it needed one reply from the support team and the customer did not come back about the same issue within a fixed period. Set that period, for example seven days, and apply it consistently.

Use AI on your own data. Securely, and without the headache.

In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.