customer-effort-scoring

Designing a customer experience measurement strategy using CSAT, NPS, and CES metrics in Salesforce Feedback Management: metric selection, survey timing, Feedback Management license requirements, Flow-triggered survey delivery, and CX KPI integration into Service Analytics dashboards. Use when choosing which CX metric to deploy, defining survey timing rules, or connecting survey response data to operational KPIs. NOT for building or configuring the technical survey objects, flows, or email templates (use admin/salesforce-surveys for that). NOT for custom programmatic survey delivery via API.

Best use case

customer-effort-scoring is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Designing a customer experience measurement strategy using CSAT, NPS, and CES metrics in Salesforce Feedback Management: metric selection, survey timing, Feedback Management license requirements, Flow-triggered survey delivery, and CX KPI integration into Service Analytics dashboards. Use when choosing which CX metric to deploy, defining survey timing rules, or connecting survey response data to operational KPIs. NOT for building or configuring the technical survey objects, flows, or email templates (use admin/salesforce-surveys for that). NOT for custom programmatic survey delivery via API.

Teams using customer-effort-scoring should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/customer-effort-scoring/SKILL.md --create-dirs "https://raw.githubusercontent.com/PranavNagrecha/AwesomeSalesforceSkills/main/skills/architect/customer-effort-scoring/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/customer-effort-scoring/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How customer-effort-scoring Compares

Feature / Agentcustomer-effort-scoringStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Designing a customer experience measurement strategy using CSAT, NPS, and CES metrics in Salesforce Feedback Management: metric selection, survey timing, Feedback Management license requirements, Flow-triggered survey delivery, and CX KPI integration into Service Analytics dashboards. Use when choosing which CX metric to deploy, defining survey timing rules, or connecting survey response data to operational KPIs. NOT for building or configuring the technical survey objects, flows, or email templates (use admin/salesforce-surveys for that). NOT for custom programmatic survey delivery via API.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Customer Effort Scoring

This skill activates when an architect or admin needs to design a CX measurement strategy using Salesforce Feedback Management — selecting the right metric (CSAT, NPS, or CES), defining survey timing and delivery rules, choosing the appropriate license tier, and connecting response data to service KPIs. It focuses on measurement strategy decisions; for the technical build of survey objects and flows, use the `admin/salesforce-surveys` skill.

---

## Before Starting

Gather this context before working on anything in this domain:

- **Confirm Feedback Management license tier.** Salesforce Surveys is available in most editions, but advanced features (branded surveys, response analytics, merge fields, automated invitations via Flow) require a Feedback Management license — Starter, Growth, or Enterprise. The tier also sets a monthly survey response cap. Without the correct license, Flow-triggered invitations and response reporting will be blocked or severely limited.
- **Understand the measurement intent before choosing a metric.** The most common wrong assumption is that all three metrics (CSAT, NPS, CES) are interchangeable and any one will do. Each measures a fundamentally different thing: CSAT measures satisfaction at a moment in time, NPS measures relationship loyalty and likelihood to recommend, and CES measures transactional friction. Deploying the wrong metric produces data that cannot answer the business question you care about.
- **Survey fatigue is a real constraint.** Sending all three surveys after every interaction will destroy response rates within weeks. Most orgs should pick one primary metric per interaction type and rotate or combine sparingly.

---

## Core Concepts

### CSAT — Customer Satisfaction Score

CSAT uses a 1–5 rating scale (sometimes 1–10, but 1–5 is the Salesforce Surveys native scale for the Rating question type). It measures satisfaction with a specific, discrete interaction — a resolved case, a completed service appointment, or a recently handled chat. CSAT is a lagging indicator of interaction quality and is best suited to high-volume transactional support where you need a volume-adjusted benchmark.

CSAT is calculated as: (number of satisfied responses — typically 4s and 5s — divided by total responses) × 100. The threshold for "satisfied" is org-configurable but 4-5 on a 5-point scale is the industry standard.

Because CSAT measures a moment in time, it has low predictive power for long-term loyalty or churn. An org can maintain high CSAT while still losing customers who find the overall relationship low-value.

### NPS — Net Promoter Score

NPS uses a 0–10 scale with a single question: "How likely are you to recommend us to a friend or colleague?" Salesforce Surveys natively supports the NPS question type, which automatically buckets responses into the three fixed ranges: **Detractor** (0–6), **Passive** (7–8), and **Promoter** (9–10). These bucket boundaries are hardcoded in the platform and cannot be customized — any attempt to remap them requires custom reporting outside the native NPS question type.

NPS is calculated as: (% Promoters) − (% Detractors). Scores range from −100 to +100. NPS measures relationship health and loyalty, not transactional satisfaction. It is best used as a periodic relationship pulse (quarterly or post-onboarding) rather than after every interaction — high-frequency NPS surveys depress response rates and inflate negative responses because customers see the survey as friction itself.

### CES — Customer Effort Score

CES measures how easy it was for a customer to resolve their issue. It typically uses a 1–7 scale with a question such as "The company made it easy for me to handle my issue" (strongly agree to strongly disagree). Salesforce Surveys supports CES via the standard Rating question type configured with a 7-point scale and appropriate label text — there is no dedicated CES question type in the platform.

CES is the strongest predictor of customer disloyalty (churn and reduced repurchase intent) among the three metrics, according to the original CEB/Gartner research that introduced the concept. A customer who found their issue hard to resolve is significantly more likely to churn, even if they rate their satisfaction as moderate. CES is most valuable for high-effort interactions: complex technical issues, billing disputes, escalation cases, or any interaction requiring the customer to contact support more than once.

**Critical timing constraint:** CES must be triggered within **60 minutes of case closure** to capture the customer's effort perception accurately. Sending CES more than a few hours after resolution allows the emotional salience of the effort to fade, and response rates drop sharply after 2 hours. The Salesforce native approach is a Record-Triggered Flow on Case, After Save, when Status changes to Closed, with a Scheduled Path set to run 15 minutes after closure.

### Feedback Management License and Response Caps

Salesforce Feedback Management is a paid add-on available in three tiers. Each tier sets a monthly survey response cap and unlocks progressively more advanced features. As of Spring '25:

| Tier | Monthly Response Cap | Key Features Unlocked |
|---|---|---|
| Starter | 1,000 responses/month | Basic survey builder, email invitations, Flow triggers |
| Growth | 10,000 responses/month | Branded surveys, merge fields, lifecycle maps, advanced reporting |
| Enterprise | 50,000 responses/month | All Growth features plus bulk send, CRM Analytics integration |

Exceeding the monthly cap blocks new survey invitations from being sent until the cap resets at the start of the next calendar month. Plan license tier based on expected case closure volume × target survey send rate.

---

## Common Patterns

### Pattern: Post-Case CES Trigger with 15-Minute Delay

**When to use:** The org's primary support model is case-based (email, web, or phone-to-case) and the business question is "are we making it easy enough for customers to get help?"

**How it works:**

1. Create a Salesforce Survey with a 7-point Rating question: "Overall, how easy was it to resolve your issue today?" (1 = Very Difficult, 7 = Very Easy). Add one optional open-text follow-up question for qualitative context.
2. Create a Record-Triggered Flow on the Case object, After Save, triggered when `Status` changes to `Closed`.
3. Add a Scheduled Path: 15 minutes after the trigger condition is met (not immediately — an immediate trigger sends the survey before the customer has had a moment to process the closure).
4. In the Scheduled Path, create a `SurveyInvitation` record linked to the survey and the Contact associated with the case. Set `ParticipantId` to `Case.ContactId` and `SurveyId` to the CES survey's record ID.
5. The platform sends an email invitation to the contact's email address using the configured survey email template.
6. Map the response to the originating Case via `SurveyResponse.CaseId` (custom lookup or flow-set field) for case-level CES reporting.

**Why not the alternative:** Sending the survey immediately on case closure catches the customer mid-wrap-up and before they have had a chance to verify the resolution actually worked. The 15-minute delay reduces premature responses and improves data quality. A 24-hour delay is too long — customers no longer remember the interaction effort vividly.

### Pattern: NPS as Periodic Relationship Pulse

**When to use:** The business needs a high-level loyalty benchmark to track relationship health over time, independent of individual transactions.

**How it works:**

1. Configure a Scheduled Survey send cadence — quarterly for B2B accounts, or 60–90 days after onboarding for new customers.
2. Use a Flow with Scheduled-Triggered activation (not Record-Triggered) targeting Contacts with `Account.Type = 'Customer'` who have not received an NPS survey in the past 90 days (filter by a custom date field on Contact: `Last_NPS_Survey_Sent__c`).
3. After each successful invitation send, update `Last_NPS_Survey_Sent__c` on the Contact record to prevent duplicate sends.
4. Report NPS in CRM Analytics or a custom report type that joins `SurveyResponse` to `Contact.Account` so scores can be segmented by account tier, region, or product line.
5. Track NPS trend over time — a rolling 3-quarter average is more meaningful than a single point-in-time score.

**Why not the alternative:** Triggering NPS on every case closure treats NPS as a transactional metric, which it is not designed to be. This drives survey fatigue, depresses response rates, and produces volatile scores that cannot distinguish relationship health from single bad interactions.

---

## Decision Guidance

| Situation | Recommended Metric | Reason |
|---|---|---|
| Measuring quality of a specific case or interaction | CSAT (1–5) | Captures satisfaction at a discrete moment; native question type available |
| Measuring overall customer loyalty and churn risk | NPS (0–10) | Designed for relationship-level measurement; strong churn predictor at the portfolio level |
| Measuring friction in the support process | CES (1–7) | Strongest predictor of individual customer disloyalty; directly actionable for process improvement |
| B2C high-volume transactional support | CSAT | Simple, fast to complete, benchmarkable at scale |
| B2B account-based service org | NPS (quarterly) + CES (per interaction) | NPS for exec-level health reporting; CES for operational improvement |
| Post-escalation or repeat-contact cases | CES | Effort is the dimension that most needs measurement when cases required re-work |
| Agentforce containment measurement | CSAT + Containment Rate | CES alone does not reflect bot-to-human handoff experience; pair with containment metric |
| Response volume under 1,000/month | Feedback Management Starter | Lower tier sufficient; avoid over-licensing |
| Response volume 1,000–10,000/month | Feedback Management Growth | Needed for merge fields and advanced reporting |

---

## Recommended Workflow

Step-by-step instructions for designing a CX measurement strategy:

1. **Define the business question.** Before selecting any metric, articulate the specific business question: Is the priority reducing churn? Improving first-contact resolution? Benchmarking service quality against industry peers? The metric must match the question — do not default to NPS just because it is well known.
2. **Select the primary metric and timing rule.** Use the Decision Guidance table to select the appropriate metric. For CES, confirm the 60-minute post-closure trigger window is achievable with the existing Flow configuration and license tier. For NPS, confirm a 90-day re-send suppression mechanism exists on the Contact record.
3. **Assess the Feedback Management license tier.** Calculate expected monthly survey volume: (monthly case closure count) × (target survey send rate, e.g., 80%). Compare against license tier caps. Upgrade the tier if volume exceeds the cap by more than 20% to avoid mid-month survey blackouts.
4. **Design the survey and trigger Flow.** Work with the `admin/salesforce-surveys` skill to configure the survey object, question type, and record-triggered Flow. For CES, validate that the Scheduled Path is set to 15 minutes (not 0) and that the ContactId lookup handles cases with no associated contact gracefully (null check required).
5. **Map responses to KPIs.** Define the reporting model: which report types join `SurveyResponse` to Case, Contact, and Account. Identify whether CRM Analytics or Service Analytics dashboards will surface the scores. Ensure the response-to-case linkage field is set in the Flow before creating the invitation record.
6. **Set governance rules.** Document the re-send suppression policy (how often a single contact can receive each survey type), the opted-out contact handling (check `HasOptedOutOfEmail` before creating `SurveyInvitation`), and the escalation path for low-score responses (e.g., CES of 1–2 triggers a follow-up case creation).
7. **Baseline and validate.** After 30 days of production data, review response rates (target: 15–25% for email-based CES/CSAT), score distributions, and completion rates. Adjust survey length (ideally 1–3 questions), timing, or email template if response rates fall below 10%.

---

## Review Checklist

Run through these before marking work in this area complete:

- [ ] Business question is documented and maps to the selected metric (CSAT, NPS, or CES)
- [ ] Feedback Management license tier confirmed and monthly response cap exceeds projected volume
- [ ] Survey trigger timing validated: CES triggers within 60 minutes of case closure; NPS has 90-day re-send suppression
- [ ] `HasOptedOutOfEmail` check is in the Flow before `SurveyInvitation` creation
- [ ] Null-contact guard exists for cases without a linked Contact (avoids Flow errors on cases created without a contact)
- [ ] Response-to-case linkage field is set so scores can be reported at the case level
- [ ] Reporting model defined: report type, dashboard, and owner for each metric
- [ ] Low-score response escalation path documented (e.g., CES 1–2 triggers follow-up action)
- [ ] Re-send suppression policy documented per survey type

---

## Salesforce-Specific Gotchas

Non-obvious platform behaviors that cause real production problems:

1. **NPS bucket boundaries are hardcoded and cannot be customized.** The native NPS question type in Salesforce Surveys automatically bins responses into Detractor (0–6), Passive (7–8), and Promoter (9–10). There is no configuration to change these ranges. If a business wants non-standard NPS buckets (e.g., Detractor 0–5), the only option is to use a plain Rating question and calculate bucketing in a custom formula field or report — the NPS question type cannot be used.
2. **Survey invitations sent to contacts with `HasOptedOutOfEmail = true` fail silently.** The Flow does not throw an error or fault when creating a `SurveyInvitation` for an opted-out contact. The invitation record is created, but no email is sent, and the response is never collected. This makes response rates appear artificially low. Add a Flow decision element to check `Case.Contact.HasOptedOutOfEmail` before the Create Records step.
3. **CES sent more than 2 hours after case closure produces unreliable data.** Survey science shows that effort memory decays rapidly after a support interaction ends. A CES survey sent the next day captures the customer's general sentiment, not their recollection of effort for that specific interaction. Always use a Scheduled Path with a delay of 15–60 minutes, not a 24-hour delay or a manual send cadence.
4. **Monthly response caps reset on the calendar month, not a rolling 30-day window.** If your org closes 900 cases in the last week of March and sends all 900 survey invitations, and 950 responses arrive in April (month reset), you will not hit the Starter cap. But if you send 950 invitations in the same calendar month and all 950 respond, the 951st response is blocked. Design send rate throttling around the calendar month, not rolling averages.
5. **`SurveyResponse` cannot be linked to a Case via a standard lookup — a custom field is required.** The platform does not provide a standard `CaseId` field on `SurveyResponse`. To report CES at the case level, either set a custom lookup field on `SurveyInvitation` (the invitation record can carry the case reference), or use the Flow to populate a custom relationship field. Without this linkage, response data is only reportable at the contact level.

---

## Output Artifacts

| Artifact | Description |
|---|---|
| CX metric selection record | Documents chosen metric(s), business rationale, trigger timing rules, and suppression policy |
| Feedback Management license recommendation | Tier recommendation with projected volume calculation and cap headroom |
| KPI integration map | Joins survey response fields to Case, Contact, and Account for dashboard reporting |
| Survey timing and trigger specification | Flow trigger type, Scheduled Path delay, null-contact guard, and opted-out contact handling |
| Low-score escalation path | Defines thresholds (e.g., CES ≤ 2) and the downstream action (case creation, callback task) |

---

## Official Sources Used

- Salesforce Feedback Management Overview — https://help.salesforce.com/s/articleView?id=sf.feedback_management_overview.htm
- Set Up Customer Feedback Survey — https://help.salesforce.com/s/articleView?id=sf.feedback_management_setup.htm
- Service Insights CSAT Dashboard — https://help.salesforce.com/s/articleView?id=sf.service_insights_csat_dashboard.htm
- Salesforce Surveys Developer Guide — https://developer.salesforce.com/docs/atlas.en-us.surveys.meta/surveys/surveys_intro.htm
- Salesforce Well-Architected Overview — https://architect.salesforce.com/docs/architect/well-architected/guide/overview.html

---

## Related Skills

- admin/salesforce-surveys — Use for the technical build: survey object configuration, Flow invitations, guest user profile, and email template setup
- architect/sla-design-and-escalation-matrix — Use when designing the escalation path triggered by low CES or CSAT scores
- architect/service-cloud-architecture — Use for overall Service Cloud architecture decisions of which CX measurement is one component
- agentforce/agent-testing-and-evaluation — Use when CES or CSAT is being used to measure Agentforce bot containment quality alongside containment rate

Related Skills

customer-data-request-workflow

8
from PranavNagrecha/AwesomeSalesforceSkills

Implement GDPR/CCPA data subject rights (access, deletion, rectification) using Salesforce Privacy Center and/or custom workflow. NOT for general backup or org-level data retention policy.

mcae-lead-scoring-and-grading

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring MCAE (Account Engagement / Pardot) lead scoring models, grading profiles, score decay rules, or automation rules that fire on score/grade thresholds. Covers: scoring point values per activity, score decay for inactivity, Profiles for fit grading, combined MQL definitions (Score + Grade), and automation rules vs completion actions. NOT for Einstein Lead Scoring (Sales Cloud), not for Marketing Cloud Engagement journey scoring, not for Salesforce native lead scoring without Account Engagement.

lead-scoring-requirements

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when designing or documenting a lead scoring model in Salesforce Sales Cloud or Account Engagement: qualifying criteria, MQL/SQL threshold definitions, scoring dimensions (demographic, firmographic, behavioral), and sales handoff SLA. NOT for Einstein Lead Scoring (AI-based predictive scoring) or Account Engagement (Pardot) automation rule configuration.

xss-and-injection-prevention

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when writing or reviewing Visualforce pages, Apex controllers, or LWC components that output user-supplied data, build dynamic queries, or construct HTTP responses. Triggers: 'XSS in Visualforce', 'SOQL injection vulnerability', 'how to encode output in Apex', 'JSENCODE Visualforce', 'open redirect prevention'. NOT for Apex CRUD/FLS enforcement (use soql-security or apex-crud-and-fls), NOT for Shield encryption (use shield-encryption-key-management), NOT for AppExchange security review process (use secure-coding-review-checklist).

visualforce-security-and-modernization

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when hardening or modernizing legacy Visualforce pages — covers the platform CSRF token model and when disabling it is a security regression, view state encryption guarantees and the 170 KB ceiling, FLS/CRUD enforcement gaps on `<apex:outputField>` and on getters that return sObjects, `<apex:includeScript>` interaction with the org Content Security Policy, hosting LWC inside a VF page via `lightning:container` / `lightning-out`, and the retire-vs-harden-vs-leave-alone decision for an inventory of legacy pages. Triggers: 'should I rewrite this Visualforce page in LWC', 'CSRF protection disabled on Visualforce page is that safe', 'community user sees a field they should not on a Visualforce page', 'view state encryption is that enough for sensitive data', 'how do I host an LWC inside a Visualforce page', 'apex:dynamicComponent and apex:actionFunction safe to keep'. NOT for greenfield Visualforce architecture (use apex/visualforce-fundamentals — controller types, view state pattern selection, PDF rendering); NOT for Visualforce email template authoring (use apex/visualforce-email-templates if/when that skill is authored); NOT for general Apex security review across triggers and async (use apex/soql-security and security/secure-coding-review-checklist).

transaction-security-policies

8
from PranavNagrecha/AwesomeSalesforceSkills

Transaction Security policy creation and configuration: condition builder, enhanced policies, enforcement actions (block, MFA, notification, end session), real-time monitoring mode, and policy troubleshooting. NOT for Event Monitoring log analysis or Shield Event Monitoring setup (use event-monitoring). NOT for Apex testing or debug-log analysis.

sso-saml-troubleshooting

8
from PranavNagrecha/AwesomeSalesforceSkills

Diagnosing broken SAML SSO into Salesforce — IdP-initiated vs SP-initiated flows, signing-certificate validity / expiry, NameID format mismatches, RelayState handling, audience / entityId / issuer mismatches, clock skew, the SAML Assertion Validator in Setup, the Login History debug log, and the My Domain prerequisite for SSO. Covers the standard diagnostic loop: read the SAML response, identify which check failed, fix at the IdP or SP. NOT for OAuth / OpenID Connect SSO (see security/oauth-openid-troubleshooting), NOT for setting up SSO from scratch (see security/sso-saml-setup).

shield-kms-byok-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Configure Shield Platform Encryption with customer-supplied (BYOK) or customer-held (Cache-Only Key Service) tenant secrets, rotate them, and recover. NOT for Classic Encryption or field masking.

shield-event-log-retention-strategy

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing Salesforce Shield Event Monitoring retention, SIEM routing, and storage-tier strategy — which event types to keep, for how long, where, and how to answer audit queries across hot/warm/cold tiers. Triggers: 'shield event log retention', 'route event monitoring to splunk', 'how long to keep login history', 'siem salesforce integration', 'event monitoring storage tier'. NOT for enabling Shield (see salesforce-shield-deployment).

session-management-and-timeout

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring session timeout values, concurrent session limits, session IP locking, or logout behavior in Salesforce. Covers org-wide session settings, profile-level overrides, Connected App session policies, and Metadata API SecuritySettings deployment. NOT for OAuth token refresh flows, login IP ranges, or MFA/identity-provider configuration.

session-high-assurance-policies

8
from PranavNagrecha/AwesomeSalesforceSkills

Enforce step-up authentication for sensitive pages/objects using High Assurance session level and login flow policies. NOT for initial MFA enrollment UX.

service-account-credential-rotation

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing credential rotation for integration users, connected apps, named credentials, and OAuth client secrets in Salesforce. Covers rotation cadence, zero-downtime handover, secret storage, and detection of stale credentials. Triggers: 'rotate integration user password', 'connected app secret rotation', 'named credential rotation', 'stale service account', 'zero downtime secret rotation'. NOT for end-user password policies.