The Humble Volunteer Hour Data Structure

How I have used Volunteers for Salesforce in many unexpected ways

Volunteers for Salesforce (V4SF) is a very nice package. While it’s a separate product from NPSP, it comes with every NPSP organization pre-intstalled product from NPSP, it comes with every NPSP organization pre-installed. I used it constantly.

Layers of V4SF Functioinality

I think of the V4SF functionality as arriving in several layers. The first layer is a set of buttons that a volunteer coordinator or volunteers will want to use. The second layer is a set of procedures that work behind the scenes to automate volunteer processes. The third is the actual data architecture itself.
I honestly don’t use half of the button features. But I know lots of people who do. I make use of some of the automation, but I know organizations that use the heck out of it. But I know and love and use the data architecture every day. Let me explain why.
The data architecture of the V4SF is relatively simple. It hooks onto the standard objects available in Salesforce (and therefore is actually independent of NPSP). Anytime you talk about someone in the V4SF they are either a Lead or a Contact. I personally only use the Contacts but lots of people use Leads, too. Any anytime you talk about a group of volunteers, you mainly are talking about a Campaign (although V4SF expands on lists a bit in it’s own way). V4SF introduces a new data object to describe place and task. It’s called a Volunteer Job. V4SF introduces a new data object to describe scheduled date and time. It’s called a Volunteer Shift. These is the basics (and shifts are optional on a per application basis). V4SF also provides a way to create a bunch of related shifts called a Job Recurrence Schedule. 
And finally, V4SF allows you to hook all these together into an object that records someone specifically doing something in some place/job for some duration and, optionally, at some time. This requires a final object called the Volunteer Hour, or VH for short. (And just to be nice, V4SF provides a way to create a bunch of VHs related to Volunteer Shifts called a Volunteer Recurrent Schedule.)
It might seem like a whole lot of data objects to record that someone worked on something someplace for some duration and at some time. But it’s actually complete and nothing can be removed. 
And it works like a charm for volunteers. Almost. One thing that seems to be missing is the ability to associate an Organization or Account to a VH. Only Contacts or Leads can be associated. And another is the ability to somehow relate a bunch of VHs together into some type of bundle. More on these later.

V4SF And Campaigns

V4SF does some great things for you. Want to know who worked on a particular Volunteer Shift? No problem. There is a list of those on the Volunteer Shift page layout. Want to know who worked on a particular Volunteer Job? Again, no problem. You will find a list of those on the Volunteer Job page layout. And Volunteer Jobs are always associated with a Campaign, so you’ll also find a usable Campaign that has everyone who has ever worked on a job on that campaign. V4SF automatically keeps adding those people to the campaign for you.

Customizing V4SF Objects

A massively awesome thing about V4SF and Salesforce, if that you can customize it easily by adding custom fields. Need to describe more about a Volunteer Job? No problem — add some fields. Need to say more about a Volunteer Shift? No problem — add some fields. I add a lookup fields to every shift that I call organization affiliation. This allows me to associate an Organization or Account to the shift. In fact, I have two so that I can also associate a Parent Account (e.g., a school club and the school itself). Then I know that everyone who participated should eventually get those affiliations. 
Need to record other things to analyze your VH? I have a category for every VH so we can report for annual reports and track how we’re doing in food volunteerism, or direct service volunteerism vs behind-the-scenes activity. 
Need to record other things? I need to report on direct vs indirect volunteerism. We have goals for both so we added custom fields to track these. And I added an automation that always keeps the number of hours worked equal to these two sub-total fields. We provide training, so I added a training field so we can make sure we are building into our volunteers on a regular basis.

Other Surprising Applications of V4SF

This is all great, but I think there are lots of other applications that can use the very same data structure. Rather than invent a whole new things of custom objects to main, I just use the very same objects for very different applications. How do I keep them straight? First, I built page layouts that keep data for different purposes separated. I didn’t, but you can also add without fear new Record Types for the VH so you can have different page layouts for each. In addition, remember that every VH has a Volunteer Job which hangs on a Campaign. So you can also keep things on separate Campaigns.
So what are some of these applications that require similar data structures? Here are some that I have discovered so far:
Staff Project Hours. 
Tracking how each staff person works daily on which projects can be a nightmare. You can find solutions out there but you already have one with V4SF! Create a Campaign. Create a Volunteer Job for each project. And a Contact for each of your staff members. They log hours by day or week and you’ve got it. It super easy to filter out these staff hours by campaign name when you report on regular volunteerism. If you don’t want these hours to roll-up to your staff Contacts, you can also create a new VH status other than “Completed.”
Time Card Solutions
Need to track a few hourly employees? There are apps out there although no free apps seemed awesome to me. But again, you have a solution with V4SF! Create a Campaign. Create a Volunteer Job(s). And a Contact for each of your staff members. They log hours by day or week and you’ve got it. Filtering is easy and reporting is easy. I even added a Hours Paid field and a Date Paid field so I use it as the actual reporting to payroll! And you can mix/match with project hours, too, as needed.
We need to track training of staff, volunteers and even attendance at public events. There are some solutions out there, but… you guessed it… V4SF can do this. Create the campaign. Create the Job. Even shifts if there are specific times. And now you can record training signup, training delivery, and even duration or outcomes. Reporting is simple using all the rich objects for filtering.
Service Delivery
We need to track delivery of service to our clients. We need to know when, how long, and category of outcome. Cases might come to mind but those are more for tracking a specific engagement that is open and then closes. Guess what? V4SF can do it. Create the Campaigns, the Volunteer Jobs, and record the VH with your client Contacts. We added some fields to allow us to count certain qualitative aspects of the service delivery. Reporting is a breeze and we can even tell you who gets the most service and of what quality. Or who hasn’t gotten a certain category or depth of service lately.
Event Attendance and School Attendance
V4SF can easily track signup and attendance for an event. Everyone still ends up on a Campaign but you get richer data reporting if you want it. You can have different roles on the Campaign by having different Volunteer Jobs. You can limit signups using Volunteer Shifts. You can record different aspects of outcome using the VH. And best of all, you can add them up and report on them in ways that are sometime challenging for the slightly stunted standard Campaign Member object.
Service Projects
V4SF allows you to easily group sets of VH by Volunteer Jobs and Campaigns. And if you run special service projects you can use this right out of the box. If you allow groups of people to signup for a bundle of your normal volunteer jobs, then this can be a problem. For example, a group of 12 people from an office want to take the day off and work for you. You have 4 positions as cook, four positions as greeter, and four positions cleaning. But they are part of your ongoing activities. You’d like to be able to report on those hours together. It is simple to add a custom object to represent the service project and put a custom lookup field on the VH. Now you can easily report on those. And you have a place to hold some things about the service project, if you need.
Outcome Management / Case Notes
We also observe our clients accomplishing goals and need to recovery those as case notes in some sort of structured way. Often people thing of Cases for this. But cases really aren’t very well designed for this. Instead, we simply attach a custom object to capture case notes to the VH. It’s also automatically connected to the Contact. This way we can now look at case notes for the group of clients served at an event (a Volunteer Shift), a type of service (a Volunteer Job) or simply on the Contact itself. While not a direct use of the V4SF data structure, it allows you to use all the structured data of V4SF to record date, time, place, who and then simply add a custom object that records the note and whatever structured data you want to capture about the case note or outcome.
Corporate Volunteerism
Here is a place I find that V4SF falls down. It’s not so easy to associate an Organization or Account with a time, place, duration, etc. What I do, however, if I create a Contact called “Anonymous @organization” or “Friends @organization” and use the NPSP Affiliation object to connect it to the Organization or Account. I then use that Contact for the volunteerism that has no personal contact information associated with it. I also use this same trick to record training delivered to a group of people for whom we don’t have individualized information but which all are affiliated with a particular Organization or Account.
For what it’s worth, I currently use all of these uses for V4SF in one organization at the same time. We have no trouble at all. It can make you quesy at first thinking of mixing your volunteerism with staff hours and training hours and so forth. But if you step back and recognize that what we are doing is connecting some scalar quantity (i.e. hours usually) with a time, place/job and person, then it really can make sense and save you a lot of maintenance on separate applications and objects. Many times, we find the solution to needing to know or record something is use of the V4SF data structure or even just starting to fill out an additional field on the VH that we had been leaving blank before.

Leave a Reply

Your email address will not be published. Required fields are marked *