CiviVolunteer - Make It Happen

2012-09-14 09:52
Written by

Better volunteer management tools have been on the want list of many a CiviCRM user, dating back as far as 2006. Many of the organizations we work with require tools for managing volunteers apropos to specific events. For example, they may host periodic festivals requiring heavy volunteer participation to cover needs from ticket-taking, to crowd control, to staffing info tables, to A/V. In many of these cases, the organizations are already using CiviEvent to manage registration for regular attendees. While they could create duplicate events -- one for attendees (i.e., Participant role = Attendee) and one for volunteers (i.e., Participant role = Volunteer) --, this is clunky, counter-intuitive, and inflexible. Enter CiviVolunteer.


Basic Workflow:

1. Specify Volunteer Needs

Event administrators specify their volunteer needs through a new “Manage Volunteers” tab (pictured below) on the Event Management page. Like many other tabs on this page, initially the tab contains only an unchecked checkbox which asks “Enable Volunteer Management?” If checked, the administrator is asked to provide a list of volunteer assignments (start time, end time, role, and number of desired volunteers). The administrator can store these settings in an event template for reuse with similar events (e.g., Soccer Tournaments require 3 Referees, 1 Scorekeeper, 3 Ticket Takers, and 2 Concession Stand workers).

Manage Volunteers

Roles will be managed through an administration page, similar to Administer > Customize Data and Screens > Activity Types. For the first release, roles will be defined simply by their Role Name and Role Description. Roles created for any given event will be available to all events.

2. Users Sign Up for Assignments


Based on the assignments defined by the event administrator, end-users sign up to volunteer. They may specify the role they wish to fill as well as their preferred time slot.
We haven’t yet decided on the best place for this sign-up form. One option is to have a separate page for Volunteer registration, made available from the Event Info page via a “Volunteer Now” button alongside the “Register Now” button. Alternately, the current event registration page could be modified to use tabs, one for registration and another for volunteering, with user-configurable text perhaps informing end-users that filling a volunteer assignment will earn them a free registration.

3. Manage Volunteers and Assignments

A drag-and-drop interface allows event administrators to select specific volunteers for specific assignments, as well as reject a would-be volunteer’s services altogether. The interface also allows the administrator to give volunteers assignments manually (vs. when volunteers sign themselves up, e.g., if a constituent expresses interest in volunteering over the phone). The mockup below illustrates this drag-and-drop interface.

Assign Volunteers

4. Tracking and Sign-In

An administrative interface will be provided for event administrators to log the number of volunteer hours performed, as well as to mark no-shows. Future releases of CiviVolunteer may allow volunteers to sign in and log their own hours.

5. Reporting

Reporting is available for individual events (e.g., to produce a list of expected volunteers) as well as across events (e.g., how many volunteer hours did we recruit in February?). Since volunteering will be logged as an activity, we expect custom activity reports to be a feasible stop-gap for early CiviVolunteer releases.

Additional Functionality

We feel the set of features described above make a good, usable first release for CiviVolunteer. Here are some ideas for inclusion in the roadmap. Feedback on how these should be prioritized, and what should be added will be valuable.

  • Skills criteria for roles (e.g., master’s degree, 3 years experience teaching children, completed skills assessment X, etc.)
    • could be used as a validation tool (don’t accept volunteers who don’t meet the criteria)
    • could allow Civi to suggest suitable volunteers
  • Add the concept of (sub)locations to shifts or assignments. Perhaps 2 teacher’s aids are needed in Classroom 102 from 12pm to 3pm. Or if an event covers multiple physical locations (e.g., a music festival), an administrator could specify 2 ticket-takers at Venue A, 2 ticket-takers at Venue B, and 4 ticket-takers at Venue C.
  • Wait-listing of volunteers.
  • More advanced scheduling capabilities: allow volunteers to set general availability (e.g., Mark Jones is available for office work from 8am to 12pm on Tuesdays).
  • Ability to make some roles private (i.e., visible in the event manager’s view but not in the public sign up form -- maybe we don’t want just anyone to try to sign up to emcee a gala).
  • Add support for volunteering not tied to specific events (e.g., office work).
  • Integration with event reminders.
  • Support for ambiguous times for events of unspecified duration, or vague units, e.g. “day”.
  • Tracking and granting credit, receipts, or benefits. Such as, food co-op store credit, or when membership status is linked to volunteering.
Are any of these features (or others we didn’t list) essential for a viable first release? Let us know in the comments!


Next Steps

We're looking for feedback on the approach and phase 1 requirements from folks who need a solution as well as folks who are using an existing solution. We'll tweak the game-plan based on feedback and come up with an estimated scope and cost. At that point we'll be looking for organizations that can provide seed funding - and the kick off of a Make-it-Happen Campaign.


Overview of Concepts Used


Roles define what a volunteer is doing. Eventually, skills and requirements and more can be attached to a role.

Shifts or Assignments

Assignments represent the scheduling of an activity. It includes the role, the time and duration, and the person performing the activity. An assignment is a shift, but we may reserve the term in the interface for the meta sense of the word, that is, a grouping of assignments. The basic facility for grouping assignments has been conceived, but not fully fleshed out, so there is plenty of room for discussion on what will make the interface intuitive.

Assignment Grouping

Unlikely to be a part of early releases, this a requirement that will be accommodated from the start. Grouping of assignments can have several purposes.

  • Arbitrary grouping for reporting or management, e.g. by supervisor or trainer
  • Location and Sub-location
  • Organizational structure, e.g. a team or program
  • Temporal grouping or shifts: e.g. morning; evening; weekend; etc.


Filed under


You mention (a) how people may be able to stand as volunteers i.e. whether they see a separate tab etc, (b) the idea that some volunteers should have certain qualifications and (c) the idea of people registering as general helper for future allocation. 

The single answer to al of those cases would seem to be to enable limiting visibility of a volunteer role to certain groups.

For example, we know which of our members are entitled to drive motor launches. If they are in a group, then only people in that group should see the "be a motor launch driver" volunteer role for that event. In your use cases you'd (a)  email your volunteer group with a link (+checksum) that works for their group only (b) only allow that volunteer role to be visible to people in that group and (c) have all your "general volunteers" in one group who would be emailiable and have visibility of volunteer roles by default. That one feature would provide several of your use cases in one go, wouldn't it?

I am working with a large food bank that is upgrading its homegrown volunteer management system. Full-featured scheduling to handle hundreds of volunteers per day is essential for the organization. I have shared out an early draft of a discussion/business case for the organization that might help the CiviVolunteer efforts.

Thanks for sharing this doc. It is both reassuring about the road map we are drafting and provides some new features we hadn't  conceived of yet. Appears to be comprehensive. Please do let us know when the doc is updated.

Since Harvester s only in the early stages of planning, is CiviCRM on the table to replace the Access db?

If the timeline (TBD) works, would Harvester be interested in contributing to the Make-It-Happen?

Please feel free to contact us at


In Solidarity,


We've been talking about this at the Bristol Civi sprint and a number of the UK based CiviCRM people are interested in developing CiviVolunteer. We may have soon have an opportunity to develop some CiviCRM functionality for the use of English Volunteer Centres. The Volunteer Centres broker the relationship between the volunteers and the organisations that have the volunteer opportunities.

Our first step is to meet with the relevant National bodies who manage the way the English volunteer opportunities are advertised on the national DoIt website. This may take a little while to get in place, once we know more we will Blog about our progress and a possible way forward.


This is great news! We are an organization that does Christian festivals. We just did a festival a few weeks ago and we were really hurting in the volunteer scheduling area. We currently have around 60 jobs (or roles as you mention above) and there could be potentially up to 6 shifts per role which would make potentially 360 assignments. Could we place a filter in the manage volunteer tab so it would be easier to manage the assignments? Otherwise I think they would get lost in a big long list. 

How soon could something like this be implemented. I am currently looking at other scheduling software for our next big festival at the end of May 2013, but if this has the potiential of being ready before then I would love to keep everything in Civi. We might be able to help out a little with funding as well. Or if there is anything I can do to help I would love to make this happen. Unfortunately I am not a php developer, but I am trying to learn. I could help out with testing. Thanks so much for reviving this!!

This enhancement looks very promising.     Some use-cases I did not see described that I think are fairly common:

1) ongoing/repeating shifts. For example, if there are religious services every Saturday morning at 10 am, then I need people to volunteer for babysitting every Sat. at 10am.  Some people may be able to volunteer for 6 Saturdays in a row, others many just be able to do just 1 or 2 Saturdays.      In this case, there should be a one-time setup for the administrator to specify that they need babysitters every Sat at 10am. ( either with an end-date, or for open-ended).

2) There may not be any event, just a need for volunteers. For example, if the organization needs someone to help answer the phones in the office each week, there is no "event" that this is related to. 

3) There may be situations where people are sponsoring their shift. (eg they are donating money to pay for food, that they are also responsible for setting up and cleaning up)



This is very exciting. This will be wonderful for many organizations. 

It would be very nice to see a general way to let users (and groups of users) log hours.  

For example there may be people who volunteer a number hours and need to track the hours given.  This has many use cases from reporting on volunteerism for the organization to teens needing to make volunteer requirements for schools.

It would also be good if groups could log hours as well. For example we had a client that had youth groups do volunteer work and they need to track how many hours each kid and each group gave. 

To me this sounds more like a contribution. I have often thought it would be wonderful if contributions could be expanded beyond currency. It would be amazing if you could select hours, items, pounds of food or anything else. 

I look forward to these exciting improvements and opportunities to help with planning, testing and documentation. 

I've done some work on volunteer management in CiviCRM in a slightly different way. Would be keen to talk about how we can pool resources.

I am very excited about a CiviVolunteer component. Some of the features mentioned above were requested at a senior management meeting I was at last week (such as tracking hours volunteered, and from the "scope" document, indicating volunteer availability, etc).

One use case not mentioned above was the merging (or streamlining) of volunteer management and project management.

For example:

  • A provincial volunteer coordinator might set up a general strategic plan and recruit 5 district volunteer managers.
  • Each district volunteer manager would be responsible for recruiting local volunteer managers or task managers.
  • Each local manager / task manager would be responsible for recruiting a team.

ie. Strategic > Programme > Project > Task break-down.

Having these steps linked as a singular Operation would aid volunteer management, allowing volunteer managers to control task design and role assignment at their respective levels.

The ability to share a common action plan (ie. outlining objectives, phases, coordinating monitoring & evaluation, etc) would ensure all elements are working towards the same end. This plan could be shared between volunteer managers, with assigned volunteers, or grouped together per level (strategic, programme, etc). 

An approval function (similar to approving a personal campaign page) could allow higher level managers to monitor program development.

Lastly, there could be an internal monitoring and evaluation function. For example, following a volunteer's assignment, you could have a thank you note sent to each volunteer / volunteer manager with a survey which lets them comment on the Strengths, Weaknesses and/ or Opportunities, Threats of the operation. Data being collected for monitoring purposes could be inputed at this time, contributing to the project's auto-generated report.


In summary, I am suggesting that CiviCRM merges project management functions and volunteer management to be the ultimate NGO CRM (if it isn't already :P). I understand this would be for a much later deployment but I wanted to put the idea out there now. I have been searching for and designing a system such as this (theoretically, usually on the backs of napkins) for a couple years now and would be very interested in providing end-user input.

Many thanks, and kind regards!


We've been using activities or multi-record custom data (now that profiles can expose the data to the volunteers) for managing volunteer hours.  We have not tried event scheduling, which is much more ambitious.    I like utilizing profiles because volunteers can directly enter their hours.  Unfortunately, profiles don’t work with activities (unless I am missing something).

In your initial release, do you anticipate supporting volunteers entering their own hours?
Love to talk with you about this import upgrade.  We are seeing a need for volunteer tracking with a high percentage of CiviCRM users.