Skip to end of metadata
Go to start of metadata

In Brief

1. The Need

2. Functionality

3. Making It Happen

4. Use Case Scenarios

1. The Need

Many organisations deal with recurring events such as courses, weekly clubs/groups and so on. While Civi deals well with one-off events, it can't easily handle recurring events. The core of this feature is the ability to handle more complex events. The overarching term ‘recurring events’ includes several different scenarios:

  • An event with multiple sessions such as a 10 week training course for which someone registers only once
  • A genuinely recurring event – like a youth club, class or our running club. Set it up once and it can run each week or you can block out times (eg no class in the school holidays)

  • A repeating event - such as a thank you event for donors which runs on 3 different evenings and people choose to attend just one

This campaign will also enable organisations to record attendance for their Civi groups. Groups are a key indicator of engagement for many organisations and tracking their attendance opens up many possibilities. Reporting may indicate which groups are thriving; which leaders are effective; which marketing campaign has been successful and so on. 

As well as being of benefit to many current Civi-users, these developments have the potential to draw in new users too as recurring events such as weekly gatherings and courses are the bedrock of many non-profit organisations. I'm looking for funding to make this a successful 'Make It Happen' project so please read on!

2. Functionality

The new functionality would enable Civi users to: 

  • Create events/courses that run for a number of weeks/months eg weekly events or a course that runs for 10 weeks, three times a year. Build in the flexibility to alter certain session times eg skip a holiday Monday in the middle of a term.  Ensure that when a detail of the repeating event is changed (eg time, description) this changes all events in the series if specified.
  • Record attendance and report on this, both globally and by individual/event/small group and by week/month/course, mapping trends in attendance. 
  • Re-use previously created schedules
  • Assign people to these ongoing events at any stage
  • Create and assign people to smaller groupings within a weekly event eg small groups within a youth club
  • Record notes about an attendee on a particular week/course
  • Record attendance for Civi groups. Report on this, reflecting current group hierarchies in Civi.

In the future it would be helpful to use recurring events in conjunction with resource booking eg the ability to book a venue/teacher as part of a recurring event and also to manage volunteer teams. Other Civi developments are currently in process which may cover this functionality in time.

3. Making It Happen

This project has been costed at $20,000 (£13,100). Please consider:

  • Making a significant contribution in order to be a seed funder who helps to shape this functionality

  • Contributing whatever you can, large or small, to this project. Many of those it will help are small organisations and your $50 is as valid as someone else’s $500! 

If you’d like to discuss this further, please contact me on

4. Use case scenarios

Please add yours... here's mine for starters:

Groups and Courses at a Church

As a large church based in Bristol, England (, we run many different courses and groups.  Recurring events and attendance reporting in Civi would be used in many different scenarios such as:

  • Weekly children’s groups – generating registers (with relevant notes for leaders eg nut allergy), recording attendance and reporting to aid our understanding of current and future needs. Plot trends in ‘All Children’s Church Groups’ as well as individual age-related groups.  
  • Training courses – we run a variety of long and short courses.  As above, registering and attendance reporting would be used eg emails could be sent to ‘people who attended less than 3 weeks’ to invite them to the same course at a later date to cover missed sessions.  The ability to flag up non-attendance could helpfully trigger a call from the leader to check that all was well.
  • Small groups – we have over 100 groups meeting across the city and attendance is a key indicator of engagement and effectiveness. Attendance reporting would help us to answer questions like: Which groups growing? Is this inked to a particular area or age demographic? Do we need more groups in a particular area of the city? Are the leaders effective?
Adult Education Program

I run an adult education program ( in a small (pop. 7,000) town in Livingston, Montana, USA. I offer a variety of classes year-round. Almost all classes are recurring events. In addition to classes, I also help organize clubs and groups for people who want to gather and learn without an instructor. Most of these groups meet year round. The website also serves as a central repository for any public adult education opportunity, whether or not it is organized by me.

  • None
  1. Sep 18, 2012

    Sarah Gladstone made the following helpful comments on recurring events functionality:

    This sounds like a great MIH.  

    Some use-cases that need to be considered: 
      - Have a single point of change for things that come up during the duration that the sessions are scheduled. For example: A 7pm weekly class may need to shift to 8pm after about 4 weeks.    An ongoing/perpetual event ( such as weekly religious services) may move from 9am to 10am.

      - In most cases, all sessions will meet at the same location/room, but there should be a way to override location for a certain week. For example, the weekly tot class is normally held in room ABC, but on week 6 its held in room DEF. 

     - Need a way to integrate with a Drupal views powered calendar.  Currently any public CiviEvent is shown on the website's Drupal calendar. People may want to filter on classes/sessions just like they can already do by having an event type filter on the view.

    - Need a way to modify a participation record after the start of the session. For example: There may be a 12 week program with choices of topics/sessions:  a) cooking  b) hockey c) yoga d) dance.    Someone may initially register for the program, choosing the cooking session.  After 3 weeks, they decide to switch to the yoga session (if there is still space) for the remaining 9 weeks.  

    - When someone clicks on the website calendar for an event/session, it should be clear to the participant if they are registering for just one date, or if they are registering for a 12 week program. 

    - When someone is registering for a complex multi-part/recurring event, there may be different prices associated with different sessions.   If someone registers 6 weeks into the start of a 12 week program, there may be a need to prorate the price so that they only pay for 6 weeks, not the full 12 weeks.

    - Need a way to have all relevant data available to the CiviCRM iCal feeds, so people can subscribe to the schedules.

  2. Sep 26, 2012

    Thanks for working on this Lindsey. A couple comments about my needs regarding recurring events...

    • I need the event info and registration pages to stay live even after the first class has happened. Right now they disappear from the front end when their start date comes and goes. Rationale: I have a six week exercise class. People can register for the whole series or drop-in any day during the class.
    • I need the iCalendar output to accurately reflect recurring events for import into Google Calendar (or other calendar).
  3. Mar 06, 2013

    Thank you for heading this up!  Something I would like to see as part of this effort is an attendance based membership.  We've been advised by legal counsel to terminate church membership for individuals not attending any service for a period of six months.  Without an attendance tracking module, doing this automatically obviously wouldn't be possible.  This may be beyond the scope of the attendance tracking project and should be submitted to the CiviMember group once the initial project is completed–don't know, but consideration here is certainly appreciated.

  4. May 08, 2013

    We have a client (with admittedly an older version of CiviCRM) that appears to have recurring events (from a pervious developer), we've been too busy bug fixing to take a look in much detail, but I'd be interested in talking to see if the code can help you in any way.

  5. May 08, 2013

    Thanks for your comments. Chris - do email me on and I'll give you my phone number so we can chat.

  6. May 10, 2013

    I wrote a Drupal 6 module that may help push this forward. Not for the faint-hearted, due to poor documentation, but still:

    Essentially, it uses the fact that the Drupal date module handles recurring dates (though faultily, so it requires a patch which is included in the module's docs) to auto-create CiviEvents based on those rules. It solves one of the issues you mention somewhere, in that the Drupal nodes (or pseudo-nodes) are properly displayed by Drupal calendars.

    The nodes also propagate through Organic Group hierarchies, which cannot be achieved in CiviCRM alone, because there are no hierarchical Custom Field Sets to map them, nor can CiviEvents be associated with Groups or even tagged.



  7. May 21, 2013

    Thanks for your comments. If you're considering funding this project I'd really encourage you to act sooner rather than later as only projects which have funding by June 16th will make it into Civi 4.4  If you can't help with funds but know a client or someone else in the Civi community who may be interested in this work, please tell them about it. If the project goes ahead, Civi will be able to deal with training courses, classes, Civi group attendance and so much more that will be of immense use to Civi users across the globe! Please help to Make it Happen.

  8. Feb 18, 2014 takes a similar approach to what Christian Wach did with D6, but instead of using repeating events the dates are added using a field collection and only one event is created in CiviCRM.

Creative Commons License
Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-Share Alike 3.0 United States Licence.