Getting to know your data in Salesforce can give you new insights about your business and help you make better decisions, so we’re doing a whole series of tips about how to tackle common reporting challenges. (Did you miss our posts about choosing the right report type, or editing custom ones?) Today we’ll look at one scenario where you might not need a report at all (or at least not a particularly complicated one)!
When is a report not a report?
Let’s say we’re trying to identify our most highly-engaged constituents, and we’ve decided to explore the intersection of Donors and Volunteers -- we want to know about people’s total giving history along with their total time spent volunteering for the organization. Remember that our very first step for any report is to step back and figure out exactly what data we’re interested in, by creating a list of fields we need and which object(s) they’re on, so we might end up with something like this:
In this example, we’re looking for information about one parent object (Contact) and two child objects, not just one! Think about what we’ve already covered regarding Report Types, and you’ll realize that this might be tough to construct -- but on the other hand, what if we can get the data we’re after without it needing to be a “report” at all? That’s where Roll-Up Summary Fields (or just “Rollups” for short) come into play.
A Rollup Field on a parent record automatically summarizes key information for all or some of its related children records. It can calculate a sum (like “Total Volunteer Hours”), a count (like “Total Number of Gifts”), or find the highest or lowest value in that set of records(“First Volunteer Shift” or “Last Donation Date”).
All organizations using the Nonprofit Success Pack have two types of rollup fields available: standard Salesforce ones, and NPSP Customizable Rollups. Standard Salesforce rollups can be super helpful when you’re working with custom objects, and the NPSP solution allows you to go even further and roll up information from Opportunities to Contacts and Accounts (out of the box, NPSP provides 49 of these on Contacts alone! Here’s what you’ll find in NPSP Settings:
Back to our example -- it turns out that both questions we posed (Total Giving History and Total Volunteer Hours) are both existing Rollups that summarize Opportunities and Volunteer Hours respectively. To understand the total impact of our contacts’ donations or volunteer time, we don’t actually need a report -- we already have access to summaries of both those things! We can see this information in a list view:
Rollup fields can be used in reports just like any other field, so we have a lot of options from here -- maybe we do actually want to dig in further to our contacts’ specific donation history with a report about Contacts with Opportunities, and just add a filter about Total Volunteer Hours to only look at super-engaged participants.
You can also create new rollup fields! Did you create a custom object related to Contacts to track something important to your mission? Maybe you’re managing event reservations, and you want to count up the total number of times a contact attended a particular type of event -- you can use the filtering options on the rollup field to summarize just the records you want. Take a look at this trailhead for more detailed instructions about creating standard rollup fields or this trailhead for NPSP Customizable Rollups.
As with most things, there are limits to this approach. For any new rollup fields you create, the relationship between the two objects has to be “master-detail” (i.e. the children records must be required to have a parent). And finally: Don’t overdo it on rollup fields! If you find that you need to create more than five, it may be time to look into more advanced reporting tools like Tableau to really take your data analysis to the next level.
Remember, we’re always here if you get stuck! We can help you figure out how to approach these kinds of data questions, or create new rollup fields as needed. If you could use a hand, please submit a support request.