Published
Thursday, December 6, 2012 - 12:14
Written by
bgm

An organisation I work with wishes to extend the Personal Campaign Page (PCP) to allow teams to raise money either using their group PCP page, or individual PCP pages of each team member. In other words, the team organiser creates a PCP page and sets a team objective. The organiser then invites members to join its group. By doing so, the team member creates its own PCP page with a personnal objective.

In terms of functionality:

  • Donors can donate either to the team member's page, to the team page, or to the general contribution page.
  • The team PCP page should list the members of the team, and how much money they have raised.
  • The team PCP page objective should also include the total amount raised by the team (e.g. donations to the group + to team member pages)

This is similar in many ways to the FPWR Fundraising Platform (blog post). It provides many excellent ideas and a set of Drupal modules are available. It is a great solution, but relies greatly on webforms, the CiviCRM v2 api and Drupal 6. It also makes some assumptions on how contribution types are used, and is for events. While I do not want to re-invent the wheel, I was hoping for a solution that would integrate more easily with CiviCRM core, possibly an extension with a subset of features.

So here's what I intend to do, and I'd love to get feedback from the community:

  • Create a CiviCRM extension "Team Personal Campaign Pages" that extends the civicrm_pcp table with a field to specify a team.
  • Modify the "setup a Personnal Campaign Page" form to allow the user to join a team.
  • Provide a way to get the honor roll for the whole team, team "amount raised", thermometer and team members listings.
  • Create/alter the team dashboard to manage team members, invite new members (tell a friend), etc.

You might wonder why not just create a contribution page for the team, and a PCP page for the team member? We have a few concerns:

  • Giving permissions to manage contribution pages could interfere with other donation pages
  • PCP already provides most of the required features for the user experience of a non-staff person
  • The workflow for a team page, or individual page, would be completely different.
  • Having hundreds of contribution pages would be a bit annoying to manage (although this could be worked out with the contribution page type).
  • I want something that could be "plug & play", without having to customize lots of screens or hardcode anything (ex: for contribution pages, we would need to override/hide which profiles get included in a team/member contribution page).

Finally, there are a few other things we would like to implement to have a more complete PCP toolset for participants, but have not evaluated in depth yet:

  • Tracking of who has received a "tell a friend" e-mail, whether they have donated or not (so that fundraisers can send them a reminder).
  • Provide a way to participants to track whether the donor has been thanked or not.
  • Provide a way to enter "offline" contributions, and flag them as such in the donors lists (participants sometimes receive money in cash or cheques, and we want to avoid the long delay of receiving the money and showing the progress online).
  • Provide a way to add a custom message in the thank you message sent by e-mail following a contribution.

Has anyone else run into this type of requirement? Any suggestions? Thank you in advance!

Mathieu (mlutfy, bgm on the #civicrm IRC channel)

Comments

I've got one instance of personal campaign pages being used sucessfully.  They would like the ability for people to "join" a team, and for a "leader to manage the team" (invite, approve, and remove members) and provide a "team total" for fundraising goals.  This strikes me as a deeply social and complex set of requirements, however, in which all team members and the team leader must have a nuanced set of permissions as well as access to a user interface that makes sense.

Given my client's miniscule budget I told them their goals were not even remotely possible, and team leaders simply co-ordinated their team rosters in the PCP description page, editing the text to show who was on their team.

If this is your next feature goal, I commend you and good luck!, but couldn't offer more than a small sum for MIH.

The FPWR platform supports most of what you intend to do.   Some brief updates

  • Drupal 7 is supported now
  • We will eventually upgrade to the v3 APIs, but for now, it works fine on the v2 ones
  • Our published version uses Locations, but those would use the same model as teams so one could easily just modify the existing code to declare them teams instead of "locations"
  • We intend to update the GITHUB repository with the latest code here shortly

If your desire is to build this into Civi, then this may not be a great solution for you.  We didn't want to extend Civi or any of its tables etc.  Instead, we wanted to maintain flexibilty and ultimate control over the UI and UXP.  That is why the system is architected as it is. So, again, it may not be a decent fit if you have other requirements.

With that said the system currently supports the following in your list of requirements:

 

  • Provide a way to participants to track whether the donor has been thanked or not.
  • Provide a way to enter "offline" contributions, and flag them as such in the donors lists (participants sometimes receive money in cash or cheques, and we want to avoid the long delay of receiving the money and showing the progress online). [WE TAKE THIS ONE STEP FURTHER AND WE HAVE A QUEUE WHERE THESE DONATIONS CAN BE RECONCILED BEFORE BEING SENT OVER TO CIVI - THIS SAVED OUR ACCOUNTANTS FROM A LOT OF HEADACHES]
  • Provide a way to add a custom message in the thank you message sent by e-mail following a contribution. [WE HAVE A TAGGING SYSTEM SO THAT YOU CAN CREATE TEMPLATES FOR THANK YOU MESSAGES]

We have released new code for the fundraising platform.  This version supports Drupal 7 as well as the other elements listed in my previous comment.  The link to the repo is:  https://github.com/fpwr/fundraising-campaigns-d7

Hi Jeff,

Great timing! Thank you very much for the detailed comment and code. I will definately look into it.

Hey Jeff,

Do you know if there will be any code avaialble for Civi on Joomla. I've been riggin Civi to kinda work like a team fundraiser but it takes a lot of manual work.

I was excited when Civi finally made it possible to attach a PCP to an Event. That helps.

Hello, just inquiring if your group is working on the APIv3 version of "fundraising-campaigns-d7" or if you can hint to me how to use the API v2 from CiviCRM to test the version you have posted.  

Hi mlutfy,

I have almost same set of requirements that you have described in the beginning of this post i.e.

  • Users can create teams(with the names of the team mates, provision to add content - text and photographs, and link it to their social media pages, if any) and create fundraising page to collect donations
  • Donors can donate for team's fundraising page
  • The team page should list the members of the team, and how much money they have raised
  • An orderly report of donations made through the particular team

As per my knowledge of CiviCRM 4.3.4 (latest one) It, by default, does not provide these features.  Have you been able to create the extension or implement these features? I dont have much expericence in civicrm and any help/guidelines would be much-much appreciable.

Many Thanks!

 

@ashoknegi: My code is available here: https://github.com/mlutfy/ca.bidon.pcpteams

 

Hi mlutfy,

Thanks for sharing the link. The link https://github.com/mlutfy/civicrmpcpteams gives a 404. I cloned the Extension from https://github.com/mlutfy/ca.bidon.pcpteams but it gives DB error on installation.

Did you get the Extension working? May be I am not using the correct Extension? Please help.

Hope to hear from you soon!

Thanks!

Hi ashoknegi.

Could you post on the extensions forum? http://forum.civicrm.org/index.php/board,57.0.html (it will be easier to track)

https://github.com/mlutfy/ca.bidon.pcpteams is the correct extension to use (I renamed and updated to current CiviCRM standards). If you have access to your CiviCRM logs (in the templates_c/ConfigAndLog directory), I will do my best to take a look and fix it.

Mathieu

You can download the code here:

  https://github.com/mlutfy/ca.bidon.pcpteams  (see the download zip button on the right side)

You should unzip it to a directory called 'ca.bodon.pcpteams' in your extensions directory.  Then go to the extensions admin page in civicrm to install.

I was getting SQL errors at first also.  The cause was logging.  The install script doesn't create the logging tables.

I just had to create two SQL tables in the SQL database I created for my logs.  The have the same name as the two tables that pcpteams adds to the civicrm database but with log_ added to the beginning of the table name.  Then there are four columns you need to add to the tables for use by the logger--just look at any of the other log_ tables to see how those four columns are set up.  

 

mlutfy,

This does look like an interesting extension and I think it would be a logical one for inclusion in CiviCRM core.

In the installation instructions it says, "If you are using CiviCRM 4.2, you will need to patch a few templates."

Could you give a hint as to what will need to be patched and how?

I have the extension installed by the checkbox to enable teams is not present.  Is that because the template for editing contribution pages needs to have a little tweak to make that checkbox show up?