Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Salesforce nonprofit implementation across BOTH the NPSP managed package (Household Accounts, Relationships, Affiliations, hard/soft credit, TDTM, Customizable Rollups, Recurring Donations, Batch Gift Entry, LYBUNT/SYBUNT) and Industries Nonprofit Cloud (Gift Entry, Program/Outcome Management, Grantmaking, OmniStudio, Action/Care Plans, Data Processing Engine). Use when configuring or troubleshooting either model, or deciding which applies. This is the nonprofit data model/program layer; for the
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 290% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 372% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 336% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 659% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 407% | 0% |
> This file is an operational playbook, not an exam outline. It states the rules an AI agent applies at decision time on an NPSP / Nonprofit Cloud org: the actual rule, the real limits, the "when X → do Y" criteria, the red flags to catch in review, and how to verify against the live org (describe objects, run SOQL, list objects, run reports — via MCP, sf CLI, or the Salesforce setup UI). All describe/SOQL reads are safe; any write/metadata change belongs in a sandbox, never Production.
This file covers two related but distinct Salesforce certifications for nonprofit practitioners. Salesforce historically branded the nonprofit credential as "Nonprofit Cloud Consultant," but in July 2025 the credential line was split and renamed. Both are active as of mid-2026:
Both exams once shared a single Trailhead credential page and are still discussed interchangeably in the community, which causes confusion. Read the official exam guide carefully to confirm which version you are registering for.
> Current product naming (Dec 2025): Salesforce rebranded Nonprofit Cloud as "Agentforce Nonprofit" in October 2025 [volatile — verify live]. The Power of Us program now grants eligible nonprofits 10 Agentforce Nonprofit licenses (not free NPSP licenses, which were removed from the Power of Us offering in December 2025). In community discussions and documentation you may still see "Nonprofit Cloud (NPC)" used — treat "Agentforce Nonprofit" and "Nonprofit Cloud" as referring to the same Industries-based platform. [volatile — verify live]
Picking the right model at decision time: an org running the NPSP managed package maps to NP-Con-101; an org running Industries-based Nonprofit Cloud / Agentforce Nonprofit maps to NP-Con-102. NPSP is in stable maintenance mode — feature development ended in March 2023 when Salesforce launched Nonprofit Cloud; NPSP remains fully supported with no announced end-of-life date [volatile — verify live]. Default all operational decisions to the NPSP (101) model unless someone has confirmed Nonprofit Cloud / Industries is enabled — verify by listing the org's objects (your Salesforce MCP, sf sobject list, or Setup → Object Manager): NPSP objects carry npe01__ / npo02__ / npsp__ / npe4__ / npe5__ namespaces [volatile — verify live], while NPC objects are namespace-free Industries standard objects like Gift, Program, and ProgramEnrollment.
> Deeper context: Study resources (official Salesforce + community, hands-on environments), the Relevance map, and full deep-dive operational detail live in: > - references/study-resources.md — study paths, links, certification sequence recommendation, exam-topic ↔ operational-rule relevance table > - references/npsp-deep-dive.md — PART A detail: CRLP, ERD, TDTM, Addresses, Governor Limits, FLS, Custom Fields, Lookup uniqueness, QA cache, managed-pkg automation, Data Import, Duplicate management, Analytics > - references/nonprofit-cloud-industries.md — PART B detail: full NPC term-translation table, PSL gating, Program Management & Outcome objects, OmniStudio tool selection > > For org-specific applications, keep a per-org appendix in your own project, referenced from a CLAUDE.md.
> Load this skill when… configuring or troubleshooting an NPSP org (Household Accounts, TDTM, rollups, recurring donations, gift entry, hard/soft credit); implementing Salesforce Industries Nonprofit Cloud (Program Management, Outcome Management, Grantmaking, OmniStudio); or deciding which nonprofit model applies to an org. > Not this skill: underlying platform rules (Apex governor limits, FLS, deployment discipline) not specific to nonprofit objects → see salesforce-administrator and the platform-developer skills; Experience Cloud portals for nonprofit constituent engagement → see salesforce-experience-cloud-consultant.
> Verify steps assume nothing about your tooling — use your project's Salesforce MCP connection, the Salesforce CLI (sf), or the Salesforce setup UI, in that order of preference. The SOQL and describe calls below are written to work through any of them.
Credential logistics and study path: see references/study-resources.md.
npe01__, npo02__, npsp__ namespaces may shift across managed package upgrades [volatile — verify live]), TDTM handler names and activation fields, CRLP rollup field names, NPC Permission Set License names and required permsets [volatile — verify live], and whether the July 2025 credential split is reflected in a given org's contract — confirm all against the live org's installed package version and current Salesforce Help.[volatile — verify live] or [opinion — house style]. If you act on an untagged fact and the live system disagrees, file feedback — do not silently trust this file over the live org.Rule: every individual lives in a Household Account. In the Household Account model (NPSP's current best practice), each Contact has an AccountId pointing to a Household Account (npe01__SYSTEM_AccountType__c = "Household Account"). One household can hold multiple Contacts (e.g. spouses). NPSP's ACCT_IndividualAccounts_TDTM handler auto-creates the Household Account on Contact insert if you don't supply one.
AccountId and then immediately re-parent it — you'll create an orphan Household Account. Let NPSP create it, or set npe01__Private__c / the Account up front.| You're linking… | Use | NPSP object | |---|---|---| | Contact ↔ Contact | Relationship | npe4__Relationship__c | | Contact ↔ Organization Account | Affiliation | npe5__Affiliation__c |
REL_Relationships_TDTM. Do not hand-create both directions — you'll get duplicate reverse records.SELECT npe01__SYSTEM_AccountType__c, COUNT(Id) FROM Account GROUP BY npe01__SYSTEM_AccountType__c via your Salesforce MCP/connection, or sf data query --query "SELECT npe01__SYSTEM_AccountType__c, COUNT(Id) FROM Account GROUP BY npe01__SYSTEM_AccountType__c" (Salesforce CLI), or the Developer Console Query Editor — to confirm the org's account model.Rule: hard credit = the donor of record; soft credit = recognition only. Hard credit flows from the Opportunity's Primary OpportunityContactRole (OCR) and rolls up into the donor's lifetime giving totals (npo02__TotalOppAmount__c etc.). Soft credit is recognition for someone who influenced the gift and rolls up separately into soft-credit fields — it must never double-count into hard-credit totals.
SELECT Role, IsPrimary, ContactId FROM OpportunityContactRole WHERE OpportunityId = '…' (MCP / sf data query / Developer Console).> For full PART A detail (CRLP, Enhanced Recurring Donations, TDTM, Addresses, Governor Limits, FLS, Custom Fields, Lookup uniqueness, QA cache, managed-package automation, Data Import tool selection, Duplicate management, Analytics/LYBUNT/SYBUNT), see references/npsp-deep-dive.md.
> Applies only if the org has Agentforce Nonprofit / Nonprofit Cloud / Industries enabled. For an NPSP org, treat this as forward-looking. Confirm by listing the org's objects (MCP / sf sobject list / Object Manager) — NPC uses namespace-free Industries objects.
Rule: Permission Set Licenses gate NPC features. In Nonprofit Cloud, access errors are usually a missing Permission Set License, not a sharing problem. Each module (Fundraising, Program Management, Outcome Management, Grantmaking) requires its specific PSL plus a Permission Set assigned to the user. Troubleshoot "can't see the feature" by checking the PSL assignment first.
> NP-Con-102 coverage note: The four exam domains and approximate weights are: Nonprofit Cloud Feature Configuration (~35%), Solution Design (~32%), Nonprofit Cloud Setup (~22%), and Nonprofit Implementation Strategy (~11%). Solution Design (32%) and Implementation Strategy (11%) together represent ~43% of the exam. Solution Design tests selecting the right Salesforce solution for customer requirements — declarative vs custom vs third-party; Implementation Strategy tests facilitating a successful engagement: discovery, user stories, change management, testing, and deployment strategy. See references/study-resources.md for the full blueprint map. [volatile — verify live against the current NP-Con-102 exam guide]
Key NPC term translations:
| NPSP (101) | Nonprofit Cloud (102) | |---|---| | Opportunity / Payment | Gift / Gift transaction | | Recurring Donation | Gift Commitment + Gift Commitment Schedule | | Campaign / appeal | Outreach Source Code | | Engagement Plan | Action Plan (Template) | | Household Account | Person Account / Household | | NPSP batch rollups | Data Processing Engine (DPE) | | Custom Flow intake | OmniScript |
> For full PART B detail (complete NPC term-translation table, PSL gating rules, Program Management & Outcome objects, full OmniStudio tool-selection matrix, Care Plans), see references/nonprofit-cloud-industries.md.
Rule: some modern orgs cannot create Connected Apps ("To enable connected app creation, contact Salesforce Customer Support"). The workaround is an External Client App for the JWT bearer flow.
PermissionSetAssignment, SetupEntityAccess) before trusting it.sf project … commands must run from the SFDX project root (the directory containing sfdx-project.json), not an arbitrary repo root, or they fail with "InvalidProjectWorkspaceError."Rule: a data-model change is all three or none — update the data-model docs, the SFDX field XML, and the application-layer types/schema. Plus, if the field writes to Contact, regenerate any generated schema constants and add <fieldPermissions> to the permset. Deploy with sf project deploy start; metadata changes don't land in the org until you do.
Read this first. Each rule is imperative and concrete.
<fieldPermissions> to a permset for every new SFDX field — field-meta.xml grants FLS to no one, not even SysAdmin.<fieldPermissions> — the permset deploy fails ("can't deploy to a required field").relationshipNames (role suffixes). SOQL traversal keys on field name, so renaming is safe.<description>) and redeploying when new QA fields don't render.PermissionSetAssignment API — browser tools lie.sf project commands from the SFDX project root and run a JWT smoke test after any metadata/cert change.Rule: Engagement Plans let you assign a templated sequence of tasks to a Contact or other record. An Engagement Plan Template defines the task sequence (name, days offset, assignee type, reminder). You apply it to a Contact by creating an Engagement Plan record — NPSP then generates the individual task records per the template. This is the NPSP native equivalent of NPC's Action Plans.
SELECT Name, npsp__Description__c FROM npsp__Engagement_Plan_Template__c (MCP / sf data query / Developer Console).Rule: NPSP's Gift Entry (Batch Gift Entry, GE) is the correct path for processing a batch of offline gifts. GE uses data import batch records backed by npsp__DataImport__c and respects the NPSP data model (Household Accounts, soft credits, GAU allocations). Importing Opportunities directly with Data Loader bypasses household auto-creation and GAU allocation logic.
SELECT Name, npsp__Batch_Status__c FROM npsp__DataImportBatch__c LIMIT 10 (MCP / sf data query / Developer Console).npe03__Recurring_Donation__c describe includes RecurringType__c field (MCP / sf sobject describe --sobject npe03__Recurring_Donation__c / Object Manager).RecurringType__c (Open vs Fixed), npe03__Amount__c, npe03__Installment_Period__c, and npe03__Date_Established__c. Link to a Contact with a valid Household Account. → gate: save succeeds with no validation errors; npe03__Next_Payment_Date__c is populated automatically.SELECT Id, Amount, CloseDate, StageName FROM Opportunity WHERE npe03__Recurring_Donation__c = '<RD Id>'. → gate: at least one installment Opportunity exists with the expected amount and close date.npo02__TotalOppAmount__c on the donor's Contact record matches the sum of their Closed Won Opportunities. → gate: totals match; if not, run NPSP Settings → Bulk Data Processes → Recalculate Rollups.SELECT Name, npsp__Active__c, npsp__Object__c FROM npsp__Trigger_Handler__c WHERE npsp__Active__c = true AND npsp__Object__c IN ('Opportunity','Contact','Account'). → gate: list of active handlers noted; you will re-enable all of them after the load.npsp__Active__c = false on each handler row (via Data Loader or SOQL in Developer Console). → gate: query confirms npsp__Active__c = false for all targeted handlers.npsp__Active__c = true. → gate: query SELECT Name FROM npsp__Trigger_Handler__c WHERE npsp__Active__c = false returns 0 rows.npo02__TotalOppAmount__c matches the sum of their Closed Won Opportunities.SELECT Role, IsPrimary, ContactId FROM OpportunityContactRole WHERE OpportunityId = '<id>'. → gate: exactly one OCR has IsPrimary = true and Role = 'Donor' (or your org's configured hard-credit role).npo02__TotalOppAmount__c (hard credit) does NOT include soft-credit amounts — compare against npo02__Soft_Credit_Total__c. → gate: hard total = sum of primary OCR Opportunities only; soft total = recognition-only; no double-count.IsPrimary = true, sum Amount. → gate: report total matches the sum computed in step 3; excludes soft-credit rows.These scenarios test judgment in the highest-consequence operational situations. Each covers a specific gotcha where the competent move and the tempting-but-wrong move look nearly identical on the surface.
Scenario 1 — NPSP or Nonprofit Cloud?
> Situation: A new client has a Salesforce org. A user says "we're on Nonprofit Cloud" and asks you to configure a Gift Commitment Schedule for a recurring donor. Before touching anything, you list the org's objects (your Salesforce MCP, sf sobject list, or Setup → Object Manager). The results include npe03__Recurring_Donation__c but no GiftCommitment or GiftCommitmentSchedule object. > > Competent move: Treat this as an NPSP org. The npe03__ namespace is the NPSP Recurring Donations package. "Gift Commitment" is the Nonprofit Cloud (NPC/Industries) term. The correct action is to configure an NPSP Enhanced Recurring Donation (npe03__Recurring_Donation__c), not a GiftCommitment. Inform the client of the distinction so scope and documentation are accurate. > > Tempting-but-wrong: Accept the client's framing ("we're on Nonprofit Cloud") and attempt to find or create a GiftCommitment record, which either errors or creates an unmanaged custom object — neither correct. > > Verify: List the org's objects (your Salesforce MCP, sf sobject list, or Setup → Object Manager) — GiftCommitment should not appear; describe npe03__Recurring_Donation__c (MCP / sf sobject describe --sobject npe03__Recurring_Donation__c / Object Manager) and confirm fields including RecurringType__c exist, confirming ERD is active. Official source: NPC object reference in Salesforce Help.
Scenario 2 — Hard credit vs soft credit double-count
> Situation: A major-gifts officer asks you to run a report of "total amount raised" and gives you a report that sums both npo02__TotalOppAmount__c (lifetime hard credit) and npo02__Soft_Credit_Total__c (lifetime soft credit) for each Contact. > > Competent move: Refuse to accept the report as-is. Hard credit and soft credit are parallel recognition layers; summing them double-counts every gift where a household member or influencer also received soft credit. The correct "total raised" figure is the sum of hard credit only (Opportunity amounts via OCR primary roles). Soft credit fields are for donor-recognition reporting, not fundraising totals. > > Tempting-but-wrong: Run the report as requested because the officer is the business owner and "it's just a report." This produces inflated totals that distort fundraising KPIs, major-gift segmentation, and board reporting. > > Verify: Run SELECT Role, IsPrimary, ContactId FROM OpportunityContactRole WHERE OpportunityId = '…' (MCP / sf data query / Developer Console) to confirm which role carries hard credit (IsPrimary = true, Role = "Donor"). Cross-check npo02__TotalOppAmount__c matches the sum of that Contact's primary OCR Opportunities.
Scenario 3 — Bulk load with TDTM handlers active
> Situation: A consultant plans to import 80,000 Opportunities via Data Loader into an NPSP org, with all TDTM trigger handlers active, to save time on re-enabling them afterward. > > Competent move: Disable the relevant TDTM handlers before the load (deactivate rows in npsp__Trigger_Handler__c), run the load, re-enable all handlers, then run NPSP Settings → Bulk Data Processes → Recalculate Rollups. Skipping the disable step on 80k records risks blowing governor limits (SOQL/DML per transaction), causing partial failures, and leaving the import in an inconsistent state. > > Tempting-but-wrong: Leave handlers active to avoid the extra steps, reasoning that "the org handled 5,000 records fine." Volume changes the math — 80k records in a single Data Loader batch will hit synchronous SOQL and DML limits that 5k never triggered. > > Verify: After re-enabling, run SELECT npsp__Active__c, Name FROM npsp__Trigger_Handler__c WHERE npsp__Active__c = false (MCP / sf data query / Developer Console) — should return zero rows (all re-enabled). Then confirm rollup totals by spot-checking a few donor records against the raw Opportunity sum.
Scenario 4 — NPC feature not visible: PSL vs sharing
> Situation: A program officer on a Nonprofit Cloud org cannot see the Program Engagement tab. Their profile has full object permissions on standard objects. A junior admin concludes it must be an OWD sharing restriction and opens a sharing rule. > > Competent move: Check Permission Set License assignment first. In Nonprofit Cloud, module access is gated by PSL — the user must have the Nonprofit Cloud Program Management PSL assigned, then the corresponding Permission Set. A sharing rule does nothing if the user cannot even see the object in the UI due to a missing PSL. > > Tempting-but-wrong: Adding or widening sharing rules. This wastes time, adds unnecessary access risk, and will not fix the root cause. > > Verify: Setup → Users → User] → Permission Set License Assignments — confirm the Program Management PSL is listed. Then check Permission Set Assignments for the associated permset. Official path: NPC Admin Guide, "Assign Nonprofit Cloud Permission Sets."
Scenario 5 — Address edit on the Contact vs the Household
> Situation: A volunteer updates a donor's mailing address by editing the Mailing Street field directly on the Contact record in NPSP. Two hours later the address has reverted to the old value. > > Competent move: Edit the address on the npsp__Address__c record linked to the Household Account (or use the NPSP Manage Household UI), not the raw Contact field. NPSP's Address management TDTM handler (ADDR_Addresses_TDTM) syncs the canonical Household Address down to the Contact — overwriting any direct Contact-field edit. > > Tempting-but-wrong: Disabling Address management to prevent future overwrites. This breaks Seasonal Address, Primary Address switching, and household-level address inheritance for all Contacts in that household going forward. > > Verify: Run SELECT npsp__MailingStreet__c, npsp__Primary__c FROM npsp__Address__c WHERE npsp__Household_Account__c = '[HH Account Id]' (MCP / sf data query / Developer Console) to see the canonical address. The Contact's Mailing fields should match the Primary Address record; if they don't, run Verify Addresses from NPSP Settings.
Study resources (official Salesforce + community), the exam-topic → operational-rule relevance table, and the certification sequence recommendation are kept in references/study-resources.md so this skill stays focused on operational rules. Load that file when planning a study path or mapping these rules to a nonprofit org.
Using this skill and hit a wall? If you find a claim contradicted by the live system or official docs, a missing rule that cost you a wrong attempt, or a decision this skill gave no criteria for — append an entry in the moment to .skill-feedback/salesforce-nonprofit-cloud-consultant.md at the project root (create it if absent):
date | skill last-reviewed | claim or gap | what you observed instead | evidence (error text / doc URL / query output) | suggested fix
These are harvested back into the skill via the learning loop. When the live system and this file disagree, trust the live system.
[volatile]. (2) Fixed NPSP framing: replaced "sunsetting over the coming years" with accurate "feature development ended March 2023, fully supported, no announced EOL." (3) Added NP-Con-102 domain-weight coverage note to PART B (Solution Design 32%, Implementation Strategy 11%, etc.). (4) Fixed Grantmaking object names in references/nonprofit-cloud-industries.md (Grant/GrantApplication → FundingOpportunity/IndividualApplication). (5) Updated references/study-resources.md: relabeled legacy PDF link, updated certification sequence recommendation, fixed NPSP EOL framing.[volatile — verify live] marks, executable workflows, tool-agnostic verify steps, and the feedback protocol above. Exam logistics relocated to references/study-resources.md; last-reviewed set to 2026-06-09.Independent educational content to upskill AI agents. Not affiliated with or endorsed by Salesforce; all trademarks — including "Salesforce," "NPSP," "Nonprofit Cloud," and "Salesforce Certified" — belong to their respective owners. Guidance only — verify all configuration, limits, and feature availability against official Salesforce documentation and your live org before making changes. No certification outcome is implied or guaranteed.
Other measured skills in the registry, with their headline benchmark lift.