Skip to main content
Featured group

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.

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 answers
  1. Today, 12:29 PM

    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 answers
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 answers
  1. Sep 28, 3:30 PM

    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 answers
  1. Sep 25, 6:01 AM

    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 answers
  1. Sep 20, 5:22 PM

    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 answers
  1. Sep 23, 12:06 PM

    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 answers
  1. Sep 23, 11:13 AM

    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
1 answer
  1. Sep 17, 7:03 PM

    You posted this in the NPSP group so first question... are you a System Administrator? If so, when you go to Setup > Object Manager > Leads > Buttons, Links and Actions and click the drop down to the right and "Edit" what do you see under "Salesforce Classic Override"? 

     

    In terms of NPSP "coaching clients" isn't something out of the box, so you will need to provide more information on your lead conversion process. Does this error only happen with certain leads? If so, what makes these different?

0/9000

We'd like to turn on the setting to use SLDS 2 for pages that include <apex:slds> when an SLDS 2 theme is active in User Interface in order to take advantage of dark mode and SLDS 2 for our custom Visualforce pages. 

 

However, when we do so, some of our managed package Visualforce pages have significantly degraded appearance. This includes Salesforce's Nonprofit Success Pack Contact Merge page in particular.  

 

Is there a way to enable SLDS 2 on particular Visualforce pages (the ones we have control over) and leave SLDS 1 for the managed package ones that we can't update (and may not be able to get Salesforce to update)? It looks like there is a way to force <apex:slds> to use SLDS 1, but that doesn't really help us as we can't edit the managed packaged pages where that would be necessary. 

 

I can try opening a Salesforce support case, but since they started replacing everything with AI, it's been much more difficult to get a decent response. I suspect the answer will be to create an Idea, which will then languish for years or just be closed (which doesn't really help solve our problem).  

 

@Nonprofit Success Pack @Design Trailblazers

1 answer
  1. Sep 16, 9:21 PM

    Hi , 

     

     

    Unfortunately, I don't believe Salesforce currently provides a way to selectively enable SLDS 2 for some Visualforce pages while forcing managed-package Visualforce pages to remain on SLDS 1. If a managed package page such as NPSP Contact Merge is broken by SLDS 2, this is likely an issue that must be addressed by the package provider or Salesforce itself.

0/9000

Hi all,

Wondering if anyone uses Formstack to/from Salesforce. We have a weird issue arising. We have a Youth consent form for parents to sign for youth taking classes. They need to sign this at least twice a year if they are taking additional classes in a different month. We have it set up to pull the data from the record into the form if they have completed it before - totally fine.

We did not have it set up previously to update the submitted date on the contact record. Now I have that box checked on JUST that field. The checkbox is "Update existing Salesforce record matching this field value:"

I haven't hit this button on any other field so that we don't have blanks erasing previously provided information.

We now have an issue popping up where the birthdate is then changed to blank when the new form is submitted. It is not a required field and I do not have the box checked to update the field upon resubmission. The weird thing is that when I see a record where the birthdate was removed, I go to the form submission and the birthdate is there pre-filled in the form.

Any thoughts? I'm hoping the checkbox update for just the date field isn't causing the issue here. I'm going to reach out to formstack support to, but wanted to check in and see if anyone has run into this issue before.

4 answers
  1. Sep 13, 1:17 PM

    We kept the form side separate and used Skyvia for the Salesforce update, with only the fields we actually wanted mapped for update. That gave us a lot more control than letting the form integration write back to the whole record.

0/9000