Most confusion about Agentforce Nonprofit, the product Salesforce used to call Nonprofit Cloud, comes from the data model rather than the features. It replaces the Household Account pattern that nonprofit consultants have used for a decade, and it introduces roughly a hundred objects that ship as part of the platform instead of a package. This is a working reference: the objects that matter, their API names, how they connect, and the choices you have to make before you build.
The one design decision behind everything
Salesforce moved industry function out of managed packages and into the core platform. For nonprofits that has three consequences worth understanding before you look at a single object.
- No namespace prefixes. You work with
GiftTransaction, notnpsp__Gift__c. These are standard objects, documented in the standard object reference, available to Flow, Apex, reports, and the API like any other. - Objects arrive with platform releases. You do not install or upgrade a package. New fields and objects show up in the seasonal release, which is why API version numbers matter when you read the docs.
- The model is shared across industries. Grantmaking objects such as
FundingAwardandBudget, and the outcome objects, are also used by Public Sector Solutions. That is why some field labels sound governmental. It also means the model is broader than any one nonprofit needs, and part of your design work is choosing what to ignore.
Practical reading tip. Every object in the Nonprofit Cloud Developer Guide states the API version it arrived in. If your org is on an older release than the doc you are reading, the object or field may not exist yet. Check the version selector before you plan a build around something.
People, households, and organizations
This is the biggest change from the Nonprofit Success Pack, so it is worth being precise.
A person is a Person Account
An individual is an Account with the Person Account record type, paired one to one with a Contact record behind the scenes. The user sees one record. Donors, program participants, volunteers, board members, and staff at a funder are all Person Accounts.
This matters because in NPSP an individual was a Contact that had to belong to a Household Account. Here the individual stands alone and does not need a household at all.
A household is a business Account plus a Party Relationship Group
A household is an Account that is not a Person Account, with a related PartyRelationshipGroup record that declares what kind of group it is. The PartyRelationshipGroup has a master-detail relationship to Account, and its Type field takes the values Group or Household, defaulting to Group.
It also carries the group-level attributes programs care about, including a Subtype with values such as Nuclear Household, Extension Household, and Three Person Household, plus group size, group income, and a HousingType field in more recent API versions.
The important behavioural difference: households are not created automatically. In NPSP every Contact got a household whether it was meaningful or not. Here you create groups deliberately, which is better modelling and more design work.
Membership is an Account Contact Relation
People join a household through AccountContactRelation, linking the group account to the person account's contact record. Roles on that relation are what you use for salutation logic and mailing decisions.
Two permission notes that catch teams out. Creating party relationship groups needs the Group Membership permission set. Merging groups needs the Merge and Split Groups system permission, which you enable in a clone of that permission set. There is also a Group Definitions business API for creating a group, its members, and its related accounts in one call, which is the right tool for intake forms.
An organization is a business Account
Companies, funders, partner nonprofits, and government bodies are ordinary business accounts. People who work there are Person Accounts related to the organization.
Contact Points: email, phone, address
Contact details live on separate related records rather than fields on the person.
| Object | Holds |
|---|---|
ContactPointEmail | Each email address, with primary and preference flags |
ContactPointPhone | Each phone number, by type |
ContactPointAddress | Each address, with usage type and active dates |
This is more work to build and much better for real nonprofit operations. A participant with a shelter address and a mailing address, a donor with a seasonal address, and a board member with a work and a home email are all natural here. In NPSP they needed the address management package or custom fields.
Consent and opt-out belong on these records. If you run email through Marketing Cloud, Account Engagement, or Mailchimp, decide which system owns consent before you build, because two systems both believing they own it is how organizations end up emailing people who asked them to stop.
Relationships between people and organizations
| Relationship | Object | Use it for |
|---|---|---|
| Person to organization | AccountContactRelation | Employment, board service, being a staff contact at a funder |
| Organization to organization | AccountAccountRelation | Parent and subsidiary, fiscal sponsor, partner nonprofit |
| Person to person | ContactContactRelation | Parent and child, spouse, caregiver, referral source |
| What the relationship means | PartyRoleRelationship | Describing the role on either side, for example parent and child |
Note that you write both directions of a person-to-person relationship yourself. NPSP created the reciprocal record automatically, so this is a common gap in migrations. If your relationships need to be navigable both ways, build automation for it during implementation.
Fundraising objects
The fundraising model is the largest area, and the one where getting the concepts right prevents double counted revenue. Core objects first:
| Object | Represents | API version |
|---|---|---|
GiftTransaction | A completed gift. Money that actually arrived | 59.0 |
GiftCommitment | A promise: a pledge, a recurring gift, a multi-year commitment | 59.0 |
GiftCommitmentSchedule | The schedule that fulfils a commitment | 59.0 |
GiftDesignation | A fund or purpose a gift can be assigned to | 59.0 |
GiftTransactionDesignation | Junction splitting one gift across designations | 59.0 |
GiftDefaultDesignation | Default designation for gifts from an opportunity, campaign, or commitment | 59.0 |
GiftSoftCredit | Credit to someone who influenced a gift they did not pay for | 59.0 |
GiftDefaultSoftCredit | Default soft credit applied to generated recurring transactions | 62.0 |
GiftTribute | In honour of and in memory of details | 59.0 |
GiftEntry | A gift being captured, before processing. Becomes the audit trail | 59.0 |
GiftBatch | A batch of gifts and its processing status | 59.0 |
GiftRefund | A refunded gift | 59.0 |
PaymentInstrument | The instrument used for the transaction | 60.0 |
OutreachSourceCode | Source code attached to an outreach campaign | 59.0 |
OutreachSummary | Results summary for an outreach campaign | 59.0 |
DonorGiftSummary | Gift summaries for accounts and contacts | 59.0 |
The concept that matters most: a commitment is a promise and a transaction is money received. A monthly donor has one GiftCommitment, a GiftCommitmentSchedule, and one GiftTransaction per successful payment. A five year pledge works the same way. If you report on commitments and transactions added together, you will overstate revenue, and the numbers will not survive an audit.
Major gifts and planned giving
Larger shops get more objects, and most organizations should ignore them at first.
DonorGiftConceptholds the early idea for a gift, including donor intent, before it becomes a commitment.DonorGiftConceptOpportunityjoins it to an Opportunity.GiftAgreementrecords the agreement to accept a gift, which matters when gifts come with conditions.PlannedGiftcovers annuities, bequests, and trusts, supported byPlannedGiftAnnuityRate,PlannedGiftPerformance,GiftActuarialEntry, andGiftValueForecast.GiftStewardshipandGiftStewardshipActivitytrack stewardship by someone who is not the donor.
Prospect research and wealth data
Wealth screening output has a home instead of a pile of custom fields: PartyPhilanthropicAssessment for formal valuations, PartyPhilanthropicIndicator for soft signals, PartyPhilanthropicMilestone for activity over a period, and PartyPhilanthropicRsrchPrfl as the research pivot point. PartyCategory classifies constituents for a time period, which is how you model segments that change.
This is also what the Prospect Research Agent reads. If you leave wealth data in custom fields, the agent cannot see it.
Program management objects
Program delivery is core platform function now, not a separate package.
| Object | Represents | API version |
|---|---|---|
Program | A program that enrols people and delivers benefits | 57.0 |
ProgramEnrollment | Someone enrolled in a program | 57.0 |
Benefit | A benefit the program provides | 57.0 |
BenefitAssignment | An individual assigned to a benefit | 57.0 |
BenefitSchedule | When a benefit is delivered | 57.0 |
BenefitScheduleAssignment | Junction between schedule and assignment | 57.0 |
BenefitDisbursement | An actual delivery of a benefit | 57.0 |
Read the chain as: a person enrols in a Program, that enrolment assigns them to one or more Benefit records, schedules say when delivery happens, and each real delivery is a BenefitDisbursement. Disbursements are what you count when a funder asks how many meals, sessions, or bus passes you actually provided.
Program Management also ships Data Processing Engine definitions, which is how enrolment and disbursement totals get calculated at scale rather than with per-record automation.
Outcome management objects
This is the part with no NPSP equivalent, and for many organizations it is the strongest reason to be on the current platform. All of these arrived in API version 59.0.
| Object | Represents |
|---|---|
ImpactStrategy | The high-level change you intend to create |
ImpactStrategyAssignment | Links a strategy to an outcome or related record |
Outcome | The expected change in participants driven by your activity |
IndicatorDefinition | What you measure and how it is calculated |
IndicatorAssignment | Applies an indicator definition to an outcome or activity |
IndicatorPerformancePeriod | The period, measurement frequency, baseline, and target |
IndicatorResult | An actual measured value |
TimePeriod | The period used for performance calculation |
The layering is deliberate. A definition says what "job placement retention at 90 days" means. An assignment attaches it to a specific outcome. A performance period sets the baseline and the target for a quarter. Results hold the numbers. That separation is exactly what lets two funders measure the same program differently without you duplicating fields, and IndicatorDefinition can point at a Flow to compute results.
More detail in program and outcome management.
Grantmaking objects
These serve organizations that give money away, and they are shared with Public Sector Solutions.
| Object | Represents | API version |
|---|---|---|
FundingOpportunity | The pool of money available for a purpose | 57.0 |
IndividualApplication | An application submitted by a person or organization | 50.0 |
IndividualApplicationTask | A task on an application | 61.0 |
FundingAward | An award granted to a recipient | 57.0 |
FundingAwardRequirement | A deliverable or milestone on an award or disbursement | 57.0 |
FundingDisbursement | A payment made or scheduled to a recipient | 57.0 |
Budget | Estimated revenue or expenses for a period | 53.0 |
BudgetCategory | A budget line item | Grantmaking |
FundingAwardParticipant | Users or groups with access to an award | 59.0 |
IndividualApplnParticipant | Users or groups with access to an application | 59.0 |
The participant objects are how you grant record access to reviewers and programme officers without inventing sharing machinery. Full walkthrough in grantmaking on Salesforce.
How totals get calculated
If you come from NPSP, this is the habit that needs to change. NPSP gave you Customizable Rollups driven by custom metadata. Agentforce Nonprofit relies on Data Processing Engine definitions plus standard summary objects such as DonorGiftSummary.
Data Processing Engine runs in bulk on a schedule. The trade-off is real: it scales to millions of records without hitting limits, and the numbers are not instant. Decide per figure whether staleness is acceptable.
- Fine to batch. Lifetime giving, largest gift, first and last gift date, donor segments, program totals.
- Needs to be live. Anything a user checks during a phone call, or an agent quotes to a donor. Build these with a formula field, a lightweight flow, or a query in the moment.
Where a genuine real-time cross-object total is required, the same pattern we describe in rolling up fields across a lookup relationship still applies.
Five design choices you have to make
- Which groups are real? Households are not automatic now. Decide whether you group by household, by family, by shared address, or not at all. Fundraising usually wants households; programs often want a different grouping such as a family unit or a shelter placement.
- Which record types? You can have record types on Person Accounts. Splitting donors, participants, and volunteers into different record types gives you distinct layouts and cleaner page design, and it also becomes part of your sharing model. Do not overdo it: one person is often all three.
- What is a designation, and who owns the list? Designations map to how finance reports restricted funds. Get the finance lead to own the list, or it grows to 200 entries and reporting becomes meaningless.
- Where does consent live? Contact Point records, and one system of record. Write the decision down.
- How separate are donor and program data? This is the architecture question with the highest cost of getting wrong, and it has to be answered before the objects exist. See the nonprofit sharing model.
Frequently asked questions
Does Agentforce Nonprofit still use Household Accounts?
No. An individual is a Person Account, and a household is a business Account with a related PartyRelationshipGroup record whose Type is set to Household. Membership is created through AccountContactRelation. Unlike NPSP, households are not created automatically, so you decide which groups are worth modelling.
What is the difference between GiftCommitment and GiftTransaction?
A GiftCommitment is a promise, such as a pledge or a recurring gift, with a GiftCommitmentSchedule describing how it will be fulfilled. A GiftTransaction is money that actually arrived. Reporting on both together double counts revenue, which is the most common modelling error in this data model.
Do the Nonprofit Cloud objects have namespace prefixes?
No. They are standard Salesforce objects with plain API names such as GiftTransaction, ProgramEnrollment, and FundingAward. That is the practical difference between core platform function and the old managed package approach, where objects carried prefixes like npsp__ or npe03__.
How do rollups work without NPSP Customizable Rollups?
Through Data Processing Engine definitions and standard summary objects such as DonorGiftSummary. These run in bulk on a schedule, so they scale well but are not instantaneous. For any figure a user reads during a live conversation, use a formula field or calculate it on demand instead.
Why do some objects look like they were built for government?
Because they were built to be shared. The grantmaking and outcome management objects are also used by Public Sector Solutions, so some labels and fields reflect that wider audience. Part of your design work is deciding which fields your organization actually uses and hiding the rest.
Do I need Data Cloud to use Agentforce Nonprofit?
No. Agentforce Nonprofit is the CRM and works on its own. Data Cloud, now branded Data 360, becomes relevant when you want to unify records from outside Salesforce or ground an AI agent in documents and external data. Get the CRM data model right first.