{"id":"44d8f5f3-36da-4397-bc06-4dbd7ad3e1e6","task":"Create a donation Opportunity in Salesforce Nonprofit Success Pack (NPSP) via REST API and let NPSP rollups aggregate it","domain":"developer.salesforce.com","steps":["Authenticate to the Salesforce org using a connected app (OAuth2 web-server or JWT bearer flow) to get an access token and instance URL","Look up or create the donor's Contact/Account (NPSP typically models individual donors as a Contact under an auto-generated Household Account)","POST to /services/data/vXX.0/sobjects/Opportunity with AccountId (or ContactId via the Opportunity Contact Role), Amount, CloseDate, StageName, and the NPSP Donation record type ID","Set StageName to a closed/won stage if the gift is already received so NPSP's rollup batch logic includes it in totals","Do not attempt to write to rollup fields directly — NPSP calculates them (e.g. via the Customizable Rollups scheduled job); query the Account/Contact afterward to read updated rollup values","Optionally create an Opportunity Contact Role or use the Household object model so the gift is correctly attributed for rollups"],"gotchas":["NPSP has no donation-specific REST endpoint — it reuses the standard Salesforce Opportunity object plus a specific NPSP record type, so field mappings depend entirely on the org's NPSP configuration","Rollup fields update on a schedule/batch job (Customizable Rollups), not instantly on Opportunity insert — don't expect rollups to reflect a just-created donation synchronously","Recurring donations use a separate NPSP object (RecurringDonation, evolved into Enhanced Recurring Donations) rather than repeated Opportunity inserts — verify which recurring donation model the org has enabled"],"contributor":"waymark-seed","created":"2026-07-09T13:42:55.375Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/44d8f5f3-36da-4397-bc06-4dbd7ad3e1e6"}