Cost per Resolution (CPR)¶
Definition¶
Cost per Resolution (CPR) refers to the total cost incurred to resolve a customer issue or complaint. It includes the expenses related to customer support, staff time, and resources used in handling and resolving a single case.
Description¶
Cost Per Resolution (CPR) measures the average cost of resolving a customer issue, giving insight into the efficiency of your support operations and the ROI of your customer experience strategy.
The relevance and interpretation of this metric shift depending on the model or product:
- In SaaS, it reflects support process quality and escalation management
- In eCommerce, it highlights return handling and fulfillment friction
- In high-touch CS models, it supports resource allocation and service scaling
A lower CPR suggests effective resolution workflows and strong tooling. A high or rising CPR may flag manual processes, escalations, or missed automation opportunities. Segment by ticket type, channel, or region to pinpoint cost drivers and optimize support performance.
Cost Per Resolution informs:
- Strategic decisions, like investing in automation, agent training, or self-service tools
- Tactical actions, such as triaging ticket types to match resolution costs
- Operational improvements, including FAQ enhancements or CS staffing models
- Cross-functional alignment, by connecting support, CX, and finance teams around customer-centric efficiency
Key Drivers¶
These are the main factors that directly impact the metric. Understanding these lets you know what levers you can pull to improve the outcome
- Support Tier Structure and Escalation Frequency: If too many issues escalate to senior staff, resolution cost climbs. Strong triage = leaner ops.
- Self-Service Coverage and Adoption: The more issues solved through docs, chatbots, or automation, the lower your average resolution cost.
- Time-to-Resolution and First Contact Success Rate: Long cases cost more. Resolving at first touch keeps resource use low.
Improvement Tactics & Quick Wins¶
Actionable ideas to optimize this KPI, from fast, low-effort wins to strategic initiatives that drive measurable impact.
- If cost per resolution is rising, tag and reduce repeat tickets with better macros or root cause fixes.
- Add dynamic self-help suggestions in your ticket submission forms, reducing unnecessary requests.
- Run a test offering “instant answers” via chatbot for top 5 ticket themes, and measure deflection rate.
- Refine support tier logic to keep simple cases with frontline teams, avoiding over-escalation.
- Partner with CX ops to quantify cost-per-agent-hour and optimize based on ticket type or severity.
-
Required Datapoints to calculate the metric
- Total Cost of Customer Support: Includes costs like staff salaries, tools/software, communication costs, and overheads related to customer support.
- Total Number of Issues Resolved: The number of customer complaints or cases that were successfully resolved in a given period.
-
Example to show how the metric is derived
A SaaS company calculates its Cost Per Resolution for Q2:
- Total Support Costs: $50,000
- Total Resolutions: 1,000 tickets
- Cost Per Resolution = $50,000 / 1,000 = $50 per resolution
Formula¶
Formula
Data Model Definition¶
How this KPI is structured in Cube.js, including its key measures, dimensions, and calculation logic for consistent reporting.
cube(`CustomerSupportCost`, {
sql: `SELECT * FROM customer_support_costs`,
measures: {
totalCost: {
sql: `total_cost`,
type: `sum`,
title: `Total Cost of Customer Support`,
description: `Includes costs like staff salaries, tools/software, communication costs, and overheads related to customer support.`
}
},
dimensions: {
id: {
sql: `id`,
type: `number`,
primaryKey: true
},
createdAt: {
sql: `created_at`,
type: `time`,
title: `Created At`
}
}
})
cube(`ResolvedIssues`, {
sql: `SELECT * FROM resolved_issues`,
measures: {
totalResolved: {
sql: `issue_id`,
type: `count`,
title: `Total Number of Issues Resolved`,
description: `The number of customer complaints or cases that were successfully resolved in a given period.`
}
},
dimensions: {
id: {
sql: `id`,
type: `number`,
primaryKey: true
},
resolvedAt: {
sql: `resolved_at`,
type: `time`,
title: `Resolved At`
}
}
})
cube(`CostPerResolution`, {
sql: `SELECT * FROM cost_per_resolution`,
joins: {
CustomerSupportCost: {
relationship: `belongsTo`,
sql: `${CUBE}.customer_support_cost_id = ${CustomerSupportCost.id}`
},
ResolvedIssues: {
relationship: `belongsTo`,
sql: `${CUBE}.resolved_issue_id = ${ResolvedIssues.id}`
}
},
measures: {
costPerResolution: {
sql: `${CustomerSupportCost.totalCost} / NULLIF(${ResolvedIssues.totalResolved}, 0)`,
type: `number`,
title: `Cost per Resolution`,
description: `The total cost incurred to resolve a customer issue or complaint, calculated as the total cost of customer support divided by the total number of issues resolved.`
}
},
dimensions: {
id: {
sql: `id`,
type: `number`,
primaryKey: true
},
calculationDate: {
sql: `calculation_date`,
type: `time`,
title: `Calculation Date`
}
}
})
Note: This is a reference implementation and should be used as a starting point. You’ll need to adapt it to match your own data model and schema
Positive & Negative Influences¶
-
Negative influences
Factors that drive the metric in an undesirable direction, often signaling risk or decline.
- Escalation Frequency: Higher escalation frequency to senior staff increases the Cost per Resolution due to the involvement of more expensive resources.
- Time-to-Resolution: Longer time-to-resolution results in higher Cost per Resolution as more staff time and resources are consumed.
- Support Tier Structure: Inefficient support tier structure that leads to unnecessary escalations increases the Cost per Resolution.
- Resource Utilization: Inefficient use of resources, such as overstaffing or underutilization, can increase the Cost per Resolution.
- Complexity of Issues: More complex issues that require specialized knowledge or resources can increase the Cost per Resolution.
-
Positive influences
Factors that push the metric in a favorable direction, supporting growth or improvement.
- Self-Service Coverage: Increased self-service coverage reduces the Cost per Resolution by minimizing the need for direct staff intervention.
- First Contact Success Rate: Higher first contact success rate lowers the Cost per Resolution by resolving issues quickly and efficiently.
- Automation of Processes: Automating repetitive tasks and processes reduces the Cost per Resolution by decreasing manual effort.
- Training and Skill Development: Improved training and skill development for support staff can lead to quicker resolutions and lower costs.
- Efficient Triage System: An efficient triage system ensures that issues are directed to the appropriate level of support, reducing unnecessary escalations and costs.
Involved Roles & Activities¶
-
Involved Roles
These roles are typically responsible for implementing or monitoring this KPI:
-
Activities
Common initiatives or actions associated with this KPI:
Funnel Stage & Type¶
-
AAARRR Funnel Stage
This KPI is associated with the following stages in the AAARRR (Pirate Metrics) funnel:
-
Type
This KPI is classified as a Lagging Indicator. It reflects the results of past actions or behaviors and is used to validate performance or assess the impact of previous strategies.
Supporting Leading & Lagging Metrics¶
-
Leading
These leading indicators influence this KPI and act as early signals that forecast future changes in this KPI.
- Ticket Volume: Ticket Volume acts as an early indicator of future support workload and resource allocation. A spike in tickets typically precedes increases in overall cost per resolution, as it drives up staff demand and operational overhead.
- Time to Close: Time to Close predicts how efficiently issues are resolved. Longer times to close often result in higher staff costs per case, thus increasing cost per resolution.
- Escalation Rate: High Escalation Rates signal more complex or unresolved first-line cases, which require more expensive resources and specialized staff, directly raising the cost per resolution.
- Error Rate: A higher Error Rate leads to increased rework, follow-up, or escalations, all of which drive up the resources (and hence costs) needed to resolve each case.
- First Contact Resolution: Lower First Contact Resolution rates signal that issues are not being resolved efficiently, requiring multiple interactions. This increases staff time and resources per case, raising cost per resolution.
-
Lagging
These lagging indicators confirm, quantify, or amplify this KPI and help explain the broader business impact on this KPI after the fact.
- Cost Per Ticket: Cost Per Ticket directly quantifies the average expense per support ticket and is a key component in calculating cost per resolution. Trends in this metric help explain or validate changes in cost per resolution.
- Average Resolution Time: Longer Average Resolution Times typically increase labor costs per case, thereby raising the cost per resolution and highlighting operational bottlenecks.
- Customer Support Tickets: The categorization of Customer Support Tickets can identify high-cost issue types or channels, helping to explain which cases are driving up overall cost per resolution.
- Cost to Serve: Cost to Serve includes all operational expenses tied to delivering support, providing a broader context for cost per resolution and revealing overhead or inefficiencies.
- Complaints Received: High numbers of Complaints Received often correlate with complex or repeated support interactions, which increase the time and resources required per resolution, thus impacting the cost per resolution.