Skip to main content
Grupo destacado

Nonprofit Success Pack

The Nonprofit Success Pack (NPSP) is a series of managed packages, installed on top of Salesforce Enterprise Edition. The 6 packages of the NPSP make it easier for you to use Salesforce to manage the core relationships between individual donors, their households, and the companies they work for. Use this group for questions and discussion about the Nonprofit Success Pack.

We're a nonprofit on NPSP. Our registrations come in through three external tools:

  • Gravity Forms (WordPress site)
  • Eventbrite
  • Absorb LMS (new training platform, launching January)

Today, Zapier pushes submissions into Salesforce. It matches Contacts across multiple email fields (Work, Alternate, Personal) and flags name/email mismatches for review.

Use case: a person who's already in Salesforce opens one of these registration forms. We'd like the form to pre-fill with their Salesforce data (name, organization, title, phone, address) so they can review and correct it before submitting. The corrections would then flow back to Salesforce.

 

Questions:

  1. What approaches have you used to pre-fill an external form from a Salesforce record? For example, personalized links with URL parameters, a lookup-by-email step, or a Salesforce-native form tool.
  2. How do you identify the person safely? We want to avoid showing someone's Salesforce data to anyone who just types in their email.
  3. Has anyone done this with Gravity Forms specifically?
  4. For tools that can't be pre-filled, like Eventbrite or Absorb, is the usual answer our controlled form in front of them?

Thanks in advance!

4 respuestas
  1. Hoy, 10:02

    @Miriam Hoebel

     

     

    I’d avoid using email alone as the lookup key, especially if the form is exposing Salesforce data.

    For Gravity Forms, a signed/tokenized link generated from Salesforce is a cleaner pattern — identify the Contact first, pass a short-lived token, then let the middleware validate it before pre-filling the form.

    For Eventbrite/Absorb, if they can’t support that pattern, I’d put a controlled form/middleware layer in front rather than exposing Contact data directly.

0/9000

Hi, 

Wondering if anyone in the community has ideas how to utilize AI in a non profit donor management system?

9 respuestas
  1. Ayer, 10:51

    For nonprofits considering AI, I would start with repetitive tasks such as drafting, sorting enquiries, or summarising information. Keep sensitive data protected and have staff review important outputs. Start with one practical use case rather than changing everything at once. That makes the benefits much easier to measure.

0/9000

Has anyone integrated Absorb LMS with Salesforce and Zoom? We want to use Zoom as the primary medium for training and we want to integrate Absorb with Salesforce to track participation. I see that AppExchange has a Salesforce App. Another option would be Zapier+Absorb webhooks +integration API. I am curios if anyone has integrated Absorb with either one of these two ways. 

 

One more ask from my stakeholder, which from the research I have done might not be possible, is a 2 way integration between Salesforce and Absorb. This way, if a learner already has a contact record in SF, any registration form would pre-populate with their information based on the email address they enter. They could then either confirm or correct the information, and any updates would be sent to SF to update their contact record.

1 respuesta
  1. 30 sept, 13:57

    Hi Miriam!

    For this use case, I’d lean toward the Absorb–Salesforce integration/API rather than putting Zapier in the middle if you need reliable two-way synchronization and more control over the data. 

     

    For tracking training participation, I’d map the key events first—registration, enrollment, attendance/completion, cancellation, and possibly assessment results—and decide which system is the source of truth for each. 

     

    The two-way registration requirement is possible in principle, but I wouldn’t rely on email alone as the long-term matching key. A safer pattern would be:

    Salesforce Contact → identify/match learner → pre-populate Absorb registration → learner confirms/updates → Absorb sends changes back to Salesforce. 

     

    You’ll also want clear rules around which fields Absorb is allowed to update in Salesforce, duplicate matching, and what happens when the learner enters an email that doesn’t match an existing Contact. 

     

    If anyone has implemented the Absorb Salesforce App specifically with Zoom attendance, I’d be interested in hearing whether the native integration handled these registration/update requirements or whether custom API/webhook work was needed. 

0/9000

What are best practices for creating email templates and sending list email using nonprofit cloud with person accounts?     My issues are:    I want to use merge fields but they are on the account object and Salesforce forces me to use the contact object to send list emails    I want to add person accounts to an email list from the account object list view but it seems there is no way to do that.    I want to add person accounts to a campaign from the account list view and it seems there is no way to do that.    So what are best practices for sending a list email to a group of people while using gift transaction merge fields and contact information merge fields?   

5 respuestas
  1. 29 sept, 12:29

    Person accounts plus Nonprofit Cloud equals known email quirks. Verify contact email fields are populated correctly. Check sending settings under organisation-wide defaults. Sometimes the account model confuses the mail merge. A support case usually clarifies things fast.

0/9000
5 respuestas
0/9000

Our Philanthropy team are seeking a solution for capturing and recording engagements with donors (meetings, events, etc) to be viewed alongside Opportunities and households.  

 

The team have found that tasks and activities are not achieving this, and speaking with Salesforce they recommend building a custom object to mimic an object only available in Non Profit Cloud.  

 

Before we proceed with investigation into this, it would be great to connect with other NPSP users who have a similar business requirement who may have implemented something like this. Do you have any recommendations for how to achieve this?  

 

Thank you

5 respuestas
  1. 28 sept, 15:30

    Hi @Windsor Windsor

    , 

     

    I also echo

    @Dodi Friedenberg and @Kim White-Sawczynec

    on using Tasks and activities. One key issue is choosing the related record; as a rule, we start with the donation, which makes the record roll up to the contact and account record pages. 

    Additionally, we edited the page layout of the task/activity to include the related records information; for example, for a task related to a donation (Related To field), we added the related record components based on the Contact and Opportunity lookup fields, so you have in one page the relevant information for the donation (opportunity) and the donor (contact). 

     

    Happy to share more about our customizations if you think it will be helpful. 

     

0/9000

We currently create our donor research profiles in Word and attach them as Files to Account records. The profile contains Contact info (name, email, phone, mailing address), some giving history, and data from external sources. We would like to transition this to Salesforce. My preliminary idea is a custom object with fields for data that doesn't already live somewhere else, then some sort of mail merge tool (we have Apsona) that merges it all together in one document. Has anyone built anything like this,or used a third party tool they recommend?  

 

We are on NPSP with no immediate plans to move to NPC.

@Nonprofit Success Pack #Nonprofit Success Pack

13 respuestas
  1. 25 sept, 6:01

    A custom object sounds like a solid approach, especially if you want the research data to stay structured and reportable in NPSP. You could relate it to the Account/Contact and use Apsona to generate the final profile document, while keeping the source data searchable and easier to maintain in Salesforce.

0/9000

For the past 6 weeks or so I've been getting nightly head size errors for the NPSP rollup above. I have reduced the batch size several times with no effect. 

Searching this site and elsewhere on the internet has not yielded a solution. Maybe this problem will go away in Winter '27 when heap sizes are increased, but I want to know why it is happening and if there  is anything I can do to address it

3 respuestas
  1. 20 sept, 17:22

    Hi Laurel! One of the things I've seen cause this are contacts that should

    be moved to the skew processing but are not. This means that they have a LOT of child opportunities. NPSP has a special mode to account for this, but if I remember correctly it's only based on the number of closed opps.  

     

    This can happen for a number of reasons. What I've seen most often is if you have some contacts with a lot of OPEN opportunities, or if you use placeholder contacts that have a lot of related opps and they didn't get updated automatically to go into skew processing mode, you can get these errors.  

     

    Adjusting batch sizes can temporarily resolve the issue sometimes, but you have to adjust them WAY down.  

     

    This is the query that I run in client orgs first to see if there are any standouts. If so I adjust the UseSkewMode field from the query to 'True' for these contacts and then see if the heap issues disappear.  

     

    SELECT ContactId, COUNT(Id) ActualOppsCount

    FROM OpportunityContactRole WHERE Contact.npsp__CustomizableRollups_UseSkewMode__c = false

    GROUP BY ContactId

    HAVING COUNT(Id) > 250

    ORDER BY COUNT(Id) DESC

    LIMIT 2000

     

    There are certainly other reasons you might get this. Having a large number of, or overly complex, npsp rollups defined and active can do it.  

     

    Theoretically you could run into this issue if you have competing scheduled jobs (non-npsp jobs) scheduled at the same time, in which case both are competing for resources. If you run the job manually and it works without issue, this might be a place to look. 

     

    If the above doesn't square things away, look at follow-up automation that triggers on the contact record update. Make sure your flows / apex have clear entrance criteria and leverage asynchronous paths where possible, so that you don't have a lot of automations triggering at the same time (in the same transaction, which is what the heap size limit is based on). 

     

    You can also likely help this run smoothly by verifying that your Setup - Custom Settings - Customizable Rollup Settings have 'Incremental Contact Hard Credit Non-Skew' set to TRUE - which tells salesforce to only update the contacts that had records change since the last run.  

     

    Hopefully one of these gets you squared away.  

     

0/9000

We have contacts that are grant writers in SF that have multiple affiliations with NPO's. The issue is that the contact has created a portal account for each org to submit a grant application using emails associated with each NPO. We are unable to merge the contacts without disabling the portal access. What are other NPO's that have grant programs doing to manage these duplicate records?  

 

I've seen posts that recommend making the duplicated records members of the household, is this the best way to handle this issue without losing the grant writer's history for portal access?

3 respuestas
  1. 23 sept, 12:06

    Hi @Karen Hartt

     

     

    Why Household doesn't actually solve this 

    Household groups people as family units under an Account. It doesn't touch the real problem, which is that Contact → Portal User is a 1:1 relationship. Putting the duplicates in a Household just organizes them visually in the same place; it doesn't merge their application history, doesn't stop the third duplicate next month, and it's honestly a slightly odd use of the object (these people aren't a family, they're one person with multiple professional hats).  

     

    What's actually causing this 

    Two structural facts collide: 

    1. A Contact can only be tied to one active Experience Cloud/Community User at a time.
    2. Your dedupe rules are matching on email, and each NPO email is genuinely unique, so Salesforce will never flag these as duplicates on its own.

    So merging will always cost you the portal identity on whichever Contact loses. That's not a config bug, it's how portal licensing works. 

      

    What I'd actually do, in order of preference:

     

     

    1. Fix it at the front door. Add a step to the grant application intake: "Do you already have an account with us (under any organization)?" If yes, capture their existing login/email and attach the new NPO affiliation to their existing Contact instead of spinning up Contact #2. This is the only option that stops the bleeding rather than managing it after the fact.
    2. NPSP Affiliations, not Household. If a grant writer works with 3 NPOs, that's exactly what the Affiliation object was built for one primary Contact, multiple Affiliation records to other Accounts. If your portal/application process can key off "which Affiliation is this application for" rather than "which separate login," you eliminate the need for duplicate Contacts entirely.
    3. If your portal genuinely requires one Contact per org (some grant portal setups are built that way and you can't change it short-term), don't force a merge. Instead, link the duplicate Contacts to each other a custom lookup, an NPSP Relationship record, or even a shared external ID. So staff and reporting can treat them as one human without triggering the portal user conflict. You lose nothing, you just stop pretending merge is the tool for this.
    4. True merge should be reserved for cases where you're willing to deactivate all but one portal user and manually reassign the historical applications afterward (Task/Case/custom object records generally reparent fine on merge, it's specifically the User/login that doesn't survive).

    I hope you find the above information helpful. If it does, please mark it as Best Answer to help others too.

0/9000
When updating the default address on a Household account, the Mailing Address for the related Contacts is update as well. This works for most accounts...but I have identified a few that aren't working and I can't figure out why or how they are different from the accounts which work as expected.
10 respuestas
  1. 23 sept, 11:13

    Check the Household Account model settings. Some contacts may be marked as excluded. Run the address update batch manually. Also, look for validation rules blocking the change. The outcome is usually a simple checkbox. Fix that first.

0/9000