Advanced NPSP Household Management for Human Services

A human services agency that focuses on homelessness and hunger prevention for low-income families and seniors in Silicon Valley approached Bigger Boat for help. They wanted to build a better system for managing, tracking and reporting on program delivery and case management. The goal of the agency is to support the stable housing of everyone in their service area, ensure that every household has food on the table, and actively address any critical needs that arise in their client population.

The Problem

The agency had a Salesforce system built for them in 2010 but it no longer met their needs in a number of ways. One key issue was that the agency needed a better way to track and manage the household information of their clients, in particular the various relationships that exist both within households and between related households. They sought to give their caseworkers a more complete picture of clients, to enable faster, more effective assessments and evaluation of service delivery.  

The particular household information the agency wanted to track included:

Household Members

Who are the people in client households and how are they related?

Managing Related Households

What households are related to each other (shared households, etc.) and how?

Shared Custody Of Children

Which households have shared custody of children, and of those, which should be considered the primary household for the child?

Split Households

What households used to be one household but have since split into two or more households?

Active Program Participant Household Members

Within a household, which household members are receiving agency services? How many household members are school-aged children?


Let’s look at a scenario that shows how complicated some client households can be.

Here we have a hypothetical multi-generational family [note: all names used are those of the author’s pets, current and past]. Two parents, Leilani and Pharaoh, and their children (the Leilani Household) share a house with the mother’s parents, Zoe and Max (the Zoe Household). The Leilani Household and the Zoe Household are separate clients of the agency:

Leilani and Pharaoh decide to separate and to share custody of their youngest child, Kai. Pharaoh now resides in a new household but maintains a relationship with his previous household. Kai’s primary residence remains the Leilani Household:

Luna, who is a young adult, moves out to be closer to work and school but maintains a connection to her parents and little brother:

This looks complicated, right? The agency’s new Salesforce system is able to capture and track these changing household dynamics.


The Solution

The solution to the challenge above was to extend the functionality of the Nonprofit Success Pack (NPSP). The NPSP includes basic out-of-the-box household management functionality, including the ability to easily group and manage contacts (clients) together as a family/household.

The extensions Bigger Boat built allow the evolving scenario above to be modeled in Salesforce. Here’s how each of them works:


Shared Households

The scenario above starts with two related households, the Leilani Household and the Zoe Household that share a house. This relationship is captured in Salesforce by creating a Household Relationship:

When saved, this relationship appears on the household page in the related list section. When a caseworker later looks up and views the Leilani Household information page, they immediately see that two client households are related.

Shared Custody

A household can be be related to more than one other household. After the new Pharaoh Household is created, a caseworker can create another household relationship from the Leilani Household to the Pharaoh Household. This time, however, it is labeled as “Shared Custody” to capture the nature of that relationship.

Split Households

Household relationships can also be used to track that two separate households used to be one household, as was the case when Luna moved to be closer to school and work.

Number of Active Household Members and School-Aged Household Members

In addition to household relationship information, the agency wanted to know, at any given time, how many contacts within a household were active clients, as well as how many of those active clients were school-aged.

This image of a portion of the household page shows that only contacts marked as active are included in the active household members count. In addition, only contacts of school age are included in the school-aged household member count.


Details: How it was done

Bigger Boat created the solution via the use of a custom object, a process builder, a quick action and the “Related List” Lightning component.

Relationship Junction Object

The core of the solution is a custom object that acts as a junction, or connector, between two households. This creates a “many-to-many” relationship between households where each household can have a relationship with many other households. The junction object stores information about the relationship, including who the related households are and a description of the relationship.

Household Relationship Junction Object Fields

Field Description


Master-Detail relationship to Account. This is the household from which the relationship is created.


Related Household


Lookup to Account. This is the household to which the relationship is created.




A text field that allows the caseworker to enter a short description of the relationship.



Reciprocal Relationships and Process Builder

When a user creates a relationship between Household A and Household B, the reciprocal relationship between Household B and Household A is automatically generated. This ensures that the relationship is visible on the other household as well, and on the same related list section on the household page layout.

A process builder was used to automate this creation of the reciprocal relationship. The resulting process is triggered whenever a new relationship is created. After first checking that the new relationship wasn’t created by the same automation process (to avoid a runaway cascade of new records), the process will create a new relationship based on the triggering relationship, reversing the Household and Related Household fields to create the reciprocal relationship.

Household Page Layout Updates

In order to make the creation of household relationships quick and easy, we placed a “New Household Relationship” quick action on the household page layout. This enabled one-click creation of relationships. We then utilized the “Related List” Lightning component to display the related households right on the household layout. When a caseworker views a household, they can see at-a-glance information on any related households without having to click through the “Related” tab to get to related information.

Household Member Rollups

To create the Active Household Members and School-Aged Kids rollups we utilized the Declarative Lookup Rollup Summary tool (DLRS) to selectively roll up the counts of household members based on specific criteria. DLRS allows Salesforce admins to create rollups between objects that aren’t connected via a Master-Detail relationship (which is the case in the relationship between the Account and Contact standard objects).



Salesforce plus the Nonprofit Success Pack provides a great deal of out-of-the-box functionality that can be utilized by nonprofits—including human services organizations—to meet their core CRM needs. The baseline functionality provided by NPSP can be customized and extended to meet the specific needs of nonprofits.

In this case, complex household management requirements were addressed by building on the basic householding (grouping contacts together in a household) and affiliation (associating contacts with households other than their own) functionality that NPSP provides. By extending that functionality we met the advanced household management requirements of the client.