Salesforce

Giving Data Models (Beta)

Beta

Beta feature — admin setup required

Giving data model detection is not yet available to customer orgs — it does not appear as a toggle on the Beta Features page (/beta) today. The description below documents the intended behavior for Salesforce admins who understand NPSP, Nonprofit Cloud, Education Cloud, or Health Cloud; check with your Blackthorn representative for current availability. The underlying bridge fields are not yet shipped in the managed packages — they degrade gracefully when absent.

Forge can project giving (donation) data into several third-party or Salesforce-native data models used by nonprofits and educational institutions. Rather than forcing all donations through the bt_fundraising__ schema, Forge uses an adapter pattern: it detects which model is installed in your org and maps the bt_fundraising__Donation__c record to the appropriate objects and fields in that model.

How detection works

On connection (and periodically thereafter), Forge queries your org's installed sObjects to detect which packages are present. The detection result is cached per-tenant and re-evaluated when an admin reconnects the org or manually triggers a re-detect from the Admin page.

ModelDetection signalAdapter
NPSP (Nonprofit Success Pack)npe01__OppPayment__c installedNpspAdapter — maps giving to Opportunity + npsp__ fields
Nonprofit Cloud (NPC)GiftTransaction sObject availableNonprofitCloudAdapter — maps to GiftTransaction, GiftCommitment, GiftDesignation
Education Cloud / EDAhed__Program_Enrollment__c installedEducationAdapter — maps enrollment context to hed__ objects
Kindsight AscendNo fixed detection signal — Ascend has no published schemaKindsightAscendAdapter — every object and field API name is tenant-configured via Admin → Data Model → Object Mapping; the adapter throws a needs-configuration error until an admin sets the mapping
Health CloudCareProgramEnrollee installedHealthCloudAdapter — enrollments map to CareProgramEnrollee; giving/recurring delegate to the same NPC GiftTransaction/GiftCommitment objects when present; there is no designation layer
None (default)No third-party giving model detectedNative bt_fundraising__Donation__c only

NPSP model

When NPSP is detected, Forge maps a donation to an Opportunity record and uses npsp__ fields for primary attribution and allocation. Recurring gifts map to npe03__Recurring_Donation__c. Payment instalments map to npe01__OppPayment__c.

Forge conceptNPSP objectKey fields
Donation (one-time)Opportunity (standard)Amount, StageName, CloseDate, npsp__Primary_Contact__c
Recurring giftnpe03__Recurring_Donation__cnpe03__Amount__c, npe03__Installment_Period__c, npe03__Next_Payment_Date__c, npe03__Contact__c
Payment instalmentnpe01__OppPayment__cnpe01__Payment_Amount__c, npe01__Paid__c, npe01__Payment_Date__c
Fund / designationnpsp__General_Accounting_Unit__cName
Allocation to fundnpsp__Allocation__cnpsp__Amount__c, npsp__General_Accounting_Unit__c, npsp__Opportunity__c

Nonprofit Cloud (NPC) model

Nonprofit Cloud (API v57+) uses standard objects without a managed namespace. Forge's NonprofitCloudAdapter maps to these objects when the GiftTransaction sObject is present.

Forge conceptNPC objectKey fields
Single giftGiftTransactionOriginalAmount, Status, TransactionDate, DonorId (Account-only lookup — no Contact-typed donor field on this object)
Pledge / recurring commitmentGiftCommitmentNextTransactionAmount, Status, NextTransactionDate, EffectiveStartDate, DonorId (no cadence field on this object — see GiftCommitmentSchedule)
Instalment scheduleGiftCommitmentScheduleGiftCommitmentId, TransactionAmount, TransactionPeriod (the real cadence field), StartDate
Fund designationGiftDesignationAmount, GiftTransactionId
AllocationGiftTransactionDesignationAmount, GiftTransactionId, GiftDesignationId
Attribution sourceOutreachSourceCodeName

Education Cloud / EDA model

When EDA (hed__ namespace) is detected, Forge can surface enrollment context alongside event attendance. When Education Cloud (EDC, namespaceless standard objects available in API v59+) is detected, Forge uses Program and ProgramEnrollment objects instead.

PathObjectKey fields
EDAhed__Program_Enrollment__ched__Contact__c, hed__Program__c, hed__Status__c, hed__Enrollment_Status__c (no start-date field — CreatedDate is used instead)
EDAhed__Course_Enrollment__ched__Contact__c, hed__Course_Offering__c, hed__Status__c
EDC (API v59+)ProgramEnrollmentContactId, ProgramId, Status, EnrollmentDate (there is no EndDate field on this object)

Degraded mode and partial fields

Two bridge lookup fields on bt_fundraising__Donation__c connect a standalone donation to the giving record Forge creates in the third-party model: bt_fundraising__Giving_Model_Opportunity__c (for the sales_cloud/NPSP path) and bt_fundraising__Giving_Model_Gift_Transaction__c (for the Nonprofit Cloud/Education Cloud/Health Cloud path). Kindsight Ascend is out of scope for this bridge — it has no matching field. If the projection cannot complete, Forge degrades gracefully: it marks the projection as partial: true and continues without throwing an error.

Bridge fields are on Donation__c, not Transaction__c or Attendee__c

The bridge fields (bt_fundraising__Giving_Model_Opportunity__c and bt_fundraising__Giving_Model_Gift_Transaction__c) already ship on bt_fundraising__Donation__c in the self-managed fundraising package — they are not placeholders. They apply only to standalone donations; there is no bridge field on bt_stripe__Transaction__c or conference360__Attendee__c.

Giving model admin settings

Admins can review which giving model Forge has detected, manually trigger re-detection, and configure mapping overrides from the Admin section under Giving Settings. Only users with the Blackthorn Events Admin permission set can access these settings.