Tracking Volunteer Hours

Using features within CiviCRM and Drupal (Events, Custom Data, Views, etc), GingerFeet has developed a process for tracking your volunteers hours. This chapter contains of a number of sections that help to define and describe this system.

Click on a section heading to jump to that section:

  1. CiviCRM and Drupal Components
  2. Process Flows for Volunteers and Administrators
  3. Editing the 'Volunteer Hours' Custom Data Field Set
  4. Creating Event Types
  5. Editing Event Calendars for New Event Types
  6. Creating New Volunteer Events
  7. Registering Volunteers for Events
  8. Logging Volunteer Hours - Single Entry
  9. Logging Volunteer Hours - Batch
  10. Reporting using Event Participant Listing and Attendee List
  11. Export Data via Search Builder
  12. Finding Volunteer Participation Records

NOTE: This system is not the only way to track volunteers using CiviCRM. There are some CiviCRM users who use Activities or Contributions to track their volunteer hours. After examining the use of activities and contributions (both of which have their pros), GingerFeet determined it was of greater advantage to have volunteer hours connected to events and event participation. If you would like to explore how logging volunteer hours as activities or contributions could benefit you, please see: or for additional information.

JOIN THE CONVERSATION! If you have thoughts about naming conventions and/or how you work with the GingerFeet volunteer tracking system, please post to:

CiviCRM/Drupal Components

There are several components of both CiviCRM and Drupal that are used for the Volunteer Tracking piece of GingerFeet.

  • CiviCRM: Custom Data Field Set
    • The foundation of Volunteer Tracking in GingerFeet is a custom data field set called 'Volunteer Hours.'
      • This field set is associated with Event Participants with the Volunteer role.
        [To edit this field set (i.e., add or disable fields), navigate Administer → Customize→ Custom Data.]
  • CiviCRM: Event Types
    • GingerFeet designed this system so that you create event types with naming conventions that match your build names. You then use the build names to group and filter in your reports. For example: '25 Cherry Lane' or '1791 Oak Street.'

    Some affiliates choose to name have a single event type called 'Construction Volunteer' and use the event name as the criteria for grouping and filtering with their reports.
    Each organization must determine which method betters serves your reporting needs.
  • Drupal: Event Calendar Views
    • GingerFeet has three pre-built event calendars each of which is filtered by CiviCRM event types for displaying the appropriate events.
      • Construction Calendar: filters on build event types or a single event type such as 'Construction Volunteering' -- see the IMPORTANT! section below.
  • CiviCRM: Events
    • After you have modified your custom data field set (if necessary) and set up your event types, you will create events in CiviCRM that your volunteers sign up for online.
  • CiviCRM: Event Participation Records
    • Once the volunteer has completed their volunteering for that event, administrators log the hours on the volunteers event participation record.
  • CiviCRM: Reporting
    • Use the Event Participant Listing report and Attendee List report to report on your volunteer hours.

Administrative Process Flow

Editing the 'Volunteer Hours' Custom Data Field Set

You can either disable custom data fields you will not be using, or add additional fields you may need for your organization.

To disable a custom data field:

  1. Navigate Administer→ Customize→ Custom Data.
  2. Click the View and Edit Custom Fields link on the right-hand side of the Volunteer Hours data set entry.
  3. For the field you want to disable, click the More link on the right.
  4. Select Disable.
  5. Click the OK button.
  6. Disabled fields will be formatted with red, strikethrough text.

Edit CiviCRM Custom Data

To add a custom data field:

  1. On the Volunteer Hours Custom Data Field page, click the Add Custom Field button.
  2. Select Data and Input Field Types from the drop-down(s).

IMPORTANT!The number of fields on this form may change according to the type of data and input Field Types you select. For example, if you select Alphanumeric/Radio you will see a section for Multiple Choice Options where you can enter the values for the radio buttons. For more in-depth explanation on each field type and what it does, see the Floss CiviCRM Manual on Extending Core Data.

  1. Check Required? if the user must enter information into this field. Remember that this will force all users to enter data into this field.
  2. Check Is this Field Searchable? if you want to use this field for searching purposes. For example, you want to be able to search on the field in the Find Contacts - Advanced Search.
  3. Make sure the Active? field is checked.
  4. Click the Save button to save the field or the Save and New button to save the field and create another.
  5. Repeat this process for all the fields you want to add to the field set.

CiviCRM Custom Data Fields

Creating Event Types

  1. Navigate Administer → CiviEvent → Event Types.
  2. Click the Add Event Type button.
  3. Enter the build/project ID (or whatever naming convention your organization has decided on for reporting purposes) on in the Label field.
    • For example, 'Build 001' or '101 South Harbor Lane' OR...'Construction Volunteering,' 'Site Work,' etc.
  4. Click the Save button.

If you are using the BUILD naming convention, every time you have a new build, you will create a new event type for that build.

Editing Event Calendars for New Event Types

To review the steps for editing the Drupal Event Calendar Views, please visit:

Creating New Volunteer Events

  1. Navigate Events → New Event.
  2. Select the Build ID from the Event Type drop down.
  3. Select Volunteer from the Participant Role drop down.
  4. Complete the New Event form.
    • Reminder: In order to allow volunteers to register for the event, you must fill out the Online Registration section when you are creating an event.
    • You will always be able to manually register a participant via Events → Register New Participant.
  5. Make sure that you select Public Event on the Info and Settings configuration page so that the event will appear on the appropriate calendar on your website.

For more information on working with events, visit:

Registering Volunteers for an Event

A volunteer can either register for an event online (if you've set your event to include online registration) or an administrator can manually register a volunteer.

Logging Volunteer Hours - Single Entry

GingerFeet has pre-built a Custom Data Set called Volunteer Hours that is associated with the Event Participant type, Volunteer. Every time you create an event that a volunteer can register for or be registered for, these fields will appear in the their event participation record.

To record volunteer hours:

  1. Access the contact record for the volunteer through the Quick Search on the left-hand side of the Admin menu or the any of the Search options.
  2. Within the contact record, click the Event tab.
  3. Click the Edit link for the event you are tracking.
  4. Select the appropriate option from the Participant Status – i.e., Attended.
  5. Scroll to the bottom of the form and expand the Volunteer Hours field set.
  6. If the volunteer was volunteering on behalf of an organization, select Yes for the Volunteering with an Organization? Field.
  7. Enter the name of the organization in the Organization Name field. This field connects to the organization contact records in your CiviCRM database. It will auto-detect an organization in your database but will not add a new organization.
  8. Enter the Time In, Time Out, if applicable.
  9. Enter a Total Number of Hours.
  10. Check the yes or no Sweat Equity? radio button to designate this volunteer participation as sweat equity.
  11. If applicable, search for and select a contact in the Performed on Behalf of field to associate the sweat equity hours on behalf of another contact in your database.
  12. Click the Save button.

Log Volunteer Hours

Logging Volunteer Hours - Batch

You can make batch updates to volunteer participant registration records by create a search profile for the Volunteer Hours custom data.

For step-by-step instructions on Batch Update Via Profile, please review:

Reporting using Event Participant Listing and Attendee List

  1. To access your participant reports, navigate Reports → Event Participant Listing (or Attendee List).
  2. Expand the Report Criteria field set to
    • Display/Hide field columns
    • Group by
    • Order by
    • Set Filters on

Until the Drupal 7, CiviCRM 4 upgrade is completed (end of 2012), DO NOT use the 'Group by' and 'Order by' features AT THE SAME TIME. You will receive a 'non-recoverable' database error. Click the back button on your browser and make sure that EITHER 'Group by' OR 'Order by' is selected, but not both.

If you have created custom data fields and they DO NOT appear under Report Criteria : Display Columns, navigate to Administer→ Customize→ Custom Data and insure that each field is set to Searchable. (

  1. Once you have set you display columns and/or filters, click the Preview Report button to view the changes.
  2. Click the Print Report button, PDF button to print a displayed version of the report, or Export to CSV button to work with your data in Excel or another spreadsheet program.

Export Data via Search Builder

If you would like more data than is available in the reports, you can use CiviCRM's Search Builder to extract other data.

Search Builder allows you to perform a search that uses BOTH AND logic and OR logic. So you can say: show me all records that:

  1. the individual name 'vanessa' AND their participant volunteering organization name equals 'GingerFeet'
  2. the individual name 'madelynn' AND their participant volunteering organization name equals 'GingerFeet'

CiviCRM Search Builder

NOTE: The more specific you are, the more you limit the search. To broaden your search, use the logical operators LIKE or >= or <= to return the greatest results.

To perform a search using Search Builder:

  1. Navigate Search→ Search Builder.
  2. Select the appropriate record type from the Record Type drop-down.
  3. Select the field name from the Field Name drop-down.
  4. Select an operator from the Operator drop-down.
  5. Enter the criteria for the fields you want to find.
  6. Click the Search button.

For more in-depth instruction on working with Search Builder, please visit:

Finding Volunteer Participation Records

There are many ways to find participation records for updating volunteer hours. You can do a quick search on a volunteer's name or search for participant records.

To search for many participation records by the volunteer role:

  1. Navigate Search Find Participants.
  2. Check Volunteer under Participant Role.
  3. Click the Search button.

To find a participation record for a single volunteer:

  1. Enter the volunteer's name in the Quick Search box on the left-hand side of CiviCRM Admin Menu (black menu at the top of the page).
  2. When their name appears in the search drop-down, click the entry.