fsc-referral-management
Use this skill when configuring or troubleshooting FSC Referral Management: setting up referral types via ReferralRecordTypeMapping custom metadata, routing referrals through Lead Assignment Rules keyed on the Expressed Interest picklist, tracking Referrer Score, or enabling partner referral visibility in Experience Cloud. Trigger keywords: referral routing, FSC referral types, ReferralRecordTypeMapping, Expressed Interest picklist, partner referral Contact, Referrer Score Experience Cloud. NOT for standard Salesforce Lead management outside FSC, Einstein Referral Scoring (retiring feature), or Marketing Cloud referral campaigns.
Best use case
fsc-referral-management is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Use this skill when configuring or troubleshooting FSC Referral Management: setting up referral types via ReferralRecordTypeMapping custom metadata, routing referrals through Lead Assignment Rules keyed on the Expressed Interest picklist, tracking Referrer Score, or enabling partner referral visibility in Experience Cloud. Trigger keywords: referral routing, FSC referral types, ReferralRecordTypeMapping, Expressed Interest picklist, partner referral Contact, Referrer Score Experience Cloud. NOT for standard Salesforce Lead management outside FSC, Einstein Referral Scoring (retiring feature), or Marketing Cloud referral campaigns.
Teams using fsc-referral-management 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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/fsc-referral-management/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How fsc-referral-management Compares
| Feature / Agent | fsc-referral-management | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Use this skill when configuring or troubleshooting FSC Referral Management: setting up referral types via ReferralRecordTypeMapping custom metadata, routing referrals through Lead Assignment Rules keyed on the Expressed Interest picklist, tracking Referrer Score, or enabling partner referral visibility in Experience Cloud. Trigger keywords: referral routing, FSC referral types, ReferralRecordTypeMapping, Expressed Interest picklist, partner referral Contact, Referrer Score Experience Cloud. NOT for standard Salesforce Lead management outside FSC, Einstein Referral Scoring (retiring feature), or Marketing Cloud referral campaigns.
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
# FSC Referral Management Use this skill when configuring FSC Referral Management: defining referral types via `ReferralRecordTypeMapping__mdt` custom metadata, routing referrals through Lead Assignment Rules keyed on the `Expressed Interest` picklist, understanding Referrer Score behavior, and enabling partner referral visibility in Experience Cloud. It activates whenever a practitioner needs to wire together the Lead-based referral data model, the custom metadata registry, the picklist-driven routing logic, and downstream queues or partner portals. --- ## Before Starting Gather this context before working on anything in this domain: - Confirm the org has Financial Services Cloud provisioned and Referral Management is enabled in FSC Settings (Setup > Financial Services Cloud Settings > Referral Management toggle). - Identify all referral types the business requires. Each must map to both a Lead record type and a `ReferralRecordTypeMapping__mdt` entry — both are required for routing to function. - Confirm whether external partners submit referrals via an Experience Cloud site. If so, Referrer Score visibility requires explicit layout or component configuration that is off by default. - The most common wrong assumption: adding a new queue is sufficient for routing. It is not. The queue must be referenced in an active `ReferralRecordTypeMapping__mdt` entry or routing silently ignores it with no error. - Do not treat Einstein Referral Scoring as an active feature to configure. It was announced for retirement; Intelligent Need-Based Referrals is the supported scoring capability. --- ## Core Concepts ### The Extended Lead Object FSC Referral Management does not introduce a separate object. It extends the standard Lead object with 11 custom fields that carry referral-specific data: - `ExpressedInterest__c` — picklist; the primary routing key for Lead Assignment Rules - `ReferredBy__c` — lookup to User (internal referrer) or Contact (external partner referrer) - `ReferrerScore__c` — integer 0–100 reflecting the referrer's historical conversion rate - `ReferralType__c` — controlled by the record type selected at creation - `ReferralDate__c`, `ReferralStatus__c`, `ReferralChannel__c`, and four additional contextual fields Because referrals are Leads, all standard Lead capabilities apply without modification: duplicate rules, validation rules, workflow, Flow, reports, and list views all work as expected. However, referral-specific field visibility and page layouts must be managed per record type, and the referral features are only active when Referral Management is enabled in FSC Settings. ### ReferralRecordTypeMapping Custom Metadata `ReferralRecordTypeMapping__mdt` is the authoritative registry that tells FSC which Lead record types are valid referral types. Every referral category the business uses must have an active entry. Each metadata record binds together the Lead record type developer name, a display label, and a target queue or owner. The platform reads this metadata at referral creation time to: 1. Confirm the record type is a valid referral type 2. Apply default routing prior to evaluating Assignment Rules 3. Expose the referral type in the FSC referral UI **Critical behavior:** if a Lead record type is used in a referral but has no active `ReferralRecordTypeMapping__mdt` entry, the platform creates the Lead record silently and performs no assignment — no error, no notification. The referral appears successfully created while routing has completely failed. This is the most common silent production failure in FSC referral configurations. ### Lead Assignment Rule Routing via Expressed Interest Once a referral type is registered in the metadata, fine-grained routing is controlled by standard Lead Assignment Rules. The `Expressed Interest` picklist is the primary routing key: each Assignment Rule entry filters on one or more picklist values (e.g. "Retirement Planning", "Home Loan", "Auto Loan") and directs the Lead to the appropriate queue or user. Design implications: - Routing changes do not require a metadata deployment — only Assignment Rule record updates - All standard Lead Assignment Rule criteria are available (field values, formula criteria) - A referral with an `Expressed Interest` value that matches no active rule entry lands in the default Lead owner or remains unassigned - The Assignment Rule must be active and set as the default rule; having a rule that is not the active default has no effect ### Referrer Score Referrer Score (`ReferrerScore__c`) is a platform-calculated integer 0–100 representing a referrer's historical conversion rate — how often their submitted referrals result in closed deals. It is read-only from an admin perspective; the platform updates it based on closed referral history. Key behaviors by referrer type: - **Internal referrers (employees/advisors):** `ReferredBy__c` is a User lookup; score is visible in standard Lead views without additional configuration - **External partner referrers:** `ReferredBy__c` points to a Contact record (not User). This is by design — FSC credits the partner's Contact, not a User. `ReferrerScore__c` is not included in default Experience Cloud page layouts and must be explicitly added to the community page layout or a custom LWC Referrer Score is part of FSC's Intelligent Need-Based Referrals feature, which is the active and supported capability. Do not conflate this with Einstein Referral Scoring, which was a separately-licensed, separately-configured feature that has been announced for retirement. --- ## Common Patterns ### Pattern: Registering a New Referral Type End-to-End **When to use:** A new business line (e.g. Small Business Lending) needs to accept referrals through FSC Referral Management for the first time. **How it works:** 1. Create or confirm a Lead record type named (e.g.) `SmallBusinessLending` with appropriate page layout. 2. Add the required picklist values to `Lead.ExpressedInterest__c` that will drive routing for this business line (e.g. "SBA Loan", "Business Line of Credit"). 3. Create a `ReferralRecordTypeMapping__mdt` record: set the Lead record type developer name, label, and the target queue. 4. Create Lead Assignment Rule entries filtering on the new `Expressed Interest` values, routing to the Small Business Lending queue. 5. Deploy the custom metadata and picklist values together. Assignment Rule updates can follow in production. 6. Test by creating a referral with each new `Expressed Interest` value and confirming queue assignment via the Lead Assignment Log on the record. **Why not the alternative:** Skipping the `ReferralRecordTypeMapping__mdt` entry (step 3) causes routing to silently fail. The referral is created and no error surfaces, but no queue assignment occurs. There is no indicator on the record that routing was skipped. ### Pattern: Enabling Partner Referrer Score Visibility in Experience Cloud **When to use:** External partners or financial advisors submit referrals through an Experience Cloud site and need to see their own Referrer Score. **How it works:** 1. Confirm that partner referral records use a Contact-based `ReferredBy__c` lookup. This is platform-default for partner referrals; do not change it. 2. In Experience Builder, navigate to the Lead or Referral detail page used by partner users. 3. Add `ReferrerScore__c` to the visible fields on the page layout or the custom component. If using an aura/LWC component, add the field to the component's field list explicitly. 4. Set field-level security: grant Read access to `ReferrerScore__c` for the Experience Cloud community profile (not just the internal admin profile). 5. Test by logging in as a partner community user and verifying the score is visible on their submitted referral records. **Why not the alternative:** Granting FLS access alone is not sufficient if the field is absent from the page layout or component — the field will not render. Both FLS and layout placement are required. --- ## Decision Guidance | Situation | Recommended Approach | Reason | |---|---|---| | New referral type needed for a new business line | Create Lead record type + ReferralRecordTypeMapping__mdt entry + Assignment Rule entries | All three are required; missing either the metadata entry or the assignment rule causes silent failure or unassigned referrals | | Partner referral Referrer Score not visible in community | Add ReferrerScore__c to Experience Builder page layout and set FLS Read for community profile | Score is on a Contact-linked record; FLS and layout placement are both required | | Routing logic needs to change without a deployment | Update Lead Assignment Rule criteria only — no metadata deployment needed | Assignment Rules are non-metadata config; ReferralRecordTypeMapping entries still require deployment | | Einstein Referral Scoring is requested | Redirect to Intelligent Need-Based Referrals; document that Einstein Referral Scoring is retiring | Einstein Referral Scoring is a retiring/retired feature; do not configure or reference as current capability | | Referral created but assigned to no queue | Check ReferralRecordTypeMapping__mdt for an active entry matching the record type; then check Assignment Rules for matching Expressed Interest values | Silent routing failure is almost always caused by a missing metadata record or an unmatched picklist value | | Referral routing behaves inconsistently by picklist value | Audit Expressed Interest picklist values against Assignment Rule criteria for exact string match | Assignment Rules use exact picklist value match; any label mismatch causes the rule to not fire | --- ## Recommended Workflow Step-by-step instructions for an AI agent or practitioner working on this task: 1. **Confirm feature enablement** — Verify FSC is provisioned and Referral Management is enabled in Setup > Financial Services Cloud Settings. Confirm the expected Lead record types for each referral category exist in the org with appropriate page layouts. 2. **Audit ReferralRecordTypeMapping__mdt** — Inspect all `ReferralRecordTypeMapping__mdt` records. Confirm every referral type the business requires has an active entry with the correct Lead record type developer name and a valid target queue or user. Flag any Lead record type used for referrals that is missing an entry. 3. **Audit Expressed Interest picklist values** — Confirm all routing-relevant picklist values exist on `Lead.Expressed Interest`. Any value used as an Assignment Rule filter criterion must exist in the picklist metadata or the rule will never match. 4. **Audit Lead Assignment Rules** — For each active referral type, confirm at least one Assignment Rule entry filters on `Expressed Interest` and routes to the correct queue or owner. Identify gaps and unmatched values. 5. **Verify Referrer Score access** — If partner referrals are in scope, confirm `ReferrerScore__c` is on the Experience Builder page layout for the community referral detail page and that FLS grants Read access to the community profile. 6. **Test routing end-to-end** — Create a test referral for each referral type and `Expressed Interest` combination. Confirm Lead record type, queue assignment, and Referrer Score visibility are all correct. Use the Lead Assignment Log on each record to diagnose any misroutes. 7. **Deploy and document** — Deploy `ReferralRecordTypeMapping__mdt` changes and picklist metadata via change set or source-based deployment. Document the referral type registry, routing matrix, and any Experience Cloud layout changes in the project runbook. --- ## Review Checklist Run through these before marking work in this area complete: - [ ] Every active referral type has a corresponding active ReferralRecordTypeMapping__mdt entry - [ ] Every Expressed Interest picklist value used in Assignment Rule routing exists in Lead field metadata - [ ] Lead Assignment Rules cover all active referral types with no routing gaps or unmatched values - [ ] ReferrerScore__c is visible on Experience Cloud pages if partner referrals are in scope (layout + FLS) - [ ] Einstein Referral Scoring is NOT referenced in any new configuration, documentation, or automation - [ ] Test referrals for each referral type result in correct queue assignment (verified via Lead Assignment Log) - [ ] Field-level security for all 11 referral custom fields is correctly set for all relevant internal and community profiles --- ## Salesforce-Specific Gotchas Non-obvious platform behaviors that cause real production problems: 1. **Missing ReferralRecordTypeMapping silently drops routing** — A Lead record type used for referrals with no active `ReferralRecordTypeMapping__mdt` entry causes the platform to create the referral but skip all queue assignment with no error or warning surfaced anywhere on the record or in logs. 2. **Einstein Referral Scoring is retiring** — Einstein Referral Scoring for FSC was a separately-licensed feature announced for retirement. It must not be configured as a new capability or documented as a current feature. Intelligent Need-Based Referrals is the supported path. 3. **Partner referrals credit Contact, not User** — When a partner submits a referral through Experience Cloud, `ReferredBy__c` points to the partner's Contact record, not a User. Referrer Score is attributed to that Contact. Assuming all referrers are Users breaks lookups and score attribution for external partner scenarios. --- ## Output Artifacts | Artifact | Description | |---|---| | ReferralRecordTypeMapping__mdt records | Deployed custom metadata entries registering each referral type and its target queue | | Lead Assignment Rule configuration | Routing rules keyed on Expressed Interest picklist values directing referrals to the correct queues or users | | Experience Builder page layout update | Updated community referral detail page surfacing ReferrerScore__c for partner users | | Referral routing test log | End-to-end test records confirming correct assignment per referral type and Expressed Interest value | --- ## Related Skills - admin/financial-account-setup — When closed referrals result in new FSC financial accounts, this skill governs account setup - admin/experience-cloud-setup — For configuring the Experience Cloud site used by partner referrers submitting and tracking referrals
Related Skills
session-management-and-timeout
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.
oauth-token-management
Use when work depends on how Salesforce OAuth access and refresh tokens are issued, refreshed, rotated, revoked, or introspected for a Connected App or API client—including unexpected logouts, invalid_grant after refresh, or designing token incident response. NOT for choosing which OAuth grant or Connected App flow to implement (use integration/oauth-flows-and-connected-apps), Named Credential packaging (use integration/named-credentials-setup), or broad Connected App IP and PKCE policy hardening without a token-lifecycle angle (use security/connected-app-security-policies).
certificate-and-key-management
Use this skill when creating, uploading, or rotating certificates in Salesforce, configuring mutual TLS (mTLS) client authentication, managing the Java KeyStore for CA-signed certificates, diagnosing certificate expiry in JWT OAuth flows, or understanding which certificate types Salesforce supports and how to migrate them between orgs. NOT for Named Credential configuration (use named-credentials-setup skill), NOT for Shield Platform Encryption key management. Trigger keywords: Certificate and Key Management, self-signed certificate, CA-signed certificate, mutual TLS, mTLS, keystore, JKS, PKCS12, certificate rotation, certificate expiry, JWT certificate.
flexcard-state-management
Use when designing FlexCard actions, conditional visibility, and state that must survive navigation, refresh, or parent/child card transitions. Triggers: 'flexcard state', 'flexcard conditional visibility', 'flexcard actions', 'flexcard refresh', 'child flexcard state'. NOT for raw LWC state or for OmniScript step state.
lwc-state-management
Share state across LWCs using pub/sub, Lightning Message Service, @wire, and reactive stores. NOT for in-component reactivity.
lwc-focus-management
Use when building LWCs that need to manage focus explicitly — modal dialogs, wizard flows, dynamic inserts, list updates, error summaries, and focus after async work. Covers focus restoration, focus traps, programmatic focus across shadow DOM, and patterns for announcing changes to assistive tech. Does NOT cover general LWC a11y audit (see lwc-accessibility).
revenue-lifecycle-management
Use this skill when implementing or troubleshooting Salesforce Revenue Lifecycle Management (RLM) — the native Revenue Cloud product covering order-to-cash lifecycle, Dynamic Revenue Orchestrator (DRO) fulfillment plan design, asset amendments, billing schedule creation via Connect API, and invoice management. Triggers on: Dynamic Revenue Orchestrator, RLM order decomposition, DRO fulfillment swimlanes, native Revenue Cloud billing schedule, asset lifecycle management Salesforce. NOT for CPQ quoting or pricing rules (use cpq-* skills), not for the legacy Salesforce Billing managed package with blng__* objects (different product entirely), not for standard Order objects without Revenue Cloud features.
loyalty-management-setup
Use this skill when setting up or extending Salesforce Loyalty Management — including program and currency creation, tier group design, qualifying vs. non-qualifying point currency separation, DPE batch job activation, partner loyalty configuration, and member portal setup on Experience Cloud. Triggers on: Loyalty Management setup, loyalty tier setup Salesforce, qualifying points vs redemption points, DPE batch job for loyalty, partner loyalty program Salesforce, loyalty member portal. NOT for Marketing Cloud engagement program design (separate product), not for B2B loyalty via Sales Cloud (standard opportunity, not loyalty program), not for general Experience Cloud site setup (use experience-cloud-setup skill).
scratch-org-management
Use this skill when designing, configuring, or troubleshooting scratch orgs: definition file structure, edition selection, allocation limits, Org Shape, CI automation via ScratchOrgInfo, and lifecycle management from the Dev Hub. NOT for SFDX CLI basics (use sf-cli-and-sfdx-essentials), sandbox management, or production org administration.
release-management
Use when planning, coordinating, or governing Salesforce releases: version numbering, rollback strategy, release notes, go/no-go criteria, release calendar, and sandbox preview alignment. NOT for deployment mechanics (use devops/post-deployment-validation or devops/change-set-deployment).
pipeline-secrets-management
Store and inject Salesforce auth URLs, JWT keys, and API credentials into CI without leaking them. NOT for runtime secrets in Apex.
isv-license-management-and-trialforce
Use when an ISV partner is wiring license enforcement, trial provisioning, or feature-flag distribution into a managed package — covers License Management App (LMA) install and registration, Lead/License object lifecycle, Trialforce Management Org (TMO) and Trialforce Source Org (TSO) split, Trialforce templates, SignupRequest API, AppExchange Checkout integration, and Feature Parameters (LmoToSubscriber / SubscriberToLmo) as the cross-org configuration channel. Triggers: 'register package with LMA', 'set up Trialforce', 'add feature parameter to managed package', 'license expired in subscriber org', 'AppExchange Checkout licensing'. NOT for general managed-package version creation, ancestor pinning, or PostInstall handler design (use managed-package-development); NOT for second-generation packaging mechanics (use second-generation-managed-packages); NOT for non-ISV experience-cloud login licensing (use experience-cloud-licensing-model).