Given a weekly class that registers students into repeating CiviCRM events as a way to record attendance, is there a way to trigger an email to the teacher if a student is absent a set number of consecutive weeks?

I looked briefly at the new CiviRules extension, but didn't see such functionality.

In addition, something similar could be done manually by searching for contacts who are in the class, but who were not registered, for example, in the last three weekly events.

But, ideally, I'm looking for a automated solution.

  • Could you give a bit more detail describing how students are marked as present/absent? Jul 14, 2015 at 15:08
  • They are registered for a weekly recurring event if they are present. If absent, they are not registered. Jul 14, 2015 at 16:08
  • How does the system know who's registered for the class at all? That is, If you have 100 contacts in CiviCRM, and 20 are supposed to show up for a class and only 15 do, how can you tell which 5 were registered but didn't show? Jul 14, 2015 at 16:25
  • Two ideas: #1 - The first class session would be the standard. That is, the absences would only apply in class two and following by being compared against the first class session. Jul 14, 2015 at 21:06
  • #2: The class would be in a CiviCRM group, and absences would evaluated against that for the first class – but then also factor in subsequent class sessions for class sessions two and following. Jul 14, 2015 at 21:10

4 Answers 4


I don't think there is a straight forward way to do this.

It may be possible if you register the entire class list for all the classes (events) and then set the participant status to "No-show" when a student misses a class. Then you might be able to do something by shuffling students between a series of groups - "no-show this week", "no-show this week & last", "no-show three consecutive weeks" using CiviRules and sending a weekly "Constituent summary" report to the teacher restricted to the people in the "no-show three consecutive week" group.

However, if you have more than one class you would need three groups for each class so you could get to an unmanageable number of groups fairly quickly.

Also, I am not sure if the existing conditions and actions in CiviRules would be enough for this purpose or if you would need to create additional conditions and/or actions

  • 1
    I think this is getting closer to possible ie have the whole class as participants and then use different status to differentiate between attendees and no shows. But i also agree that it will be a struggle getting from that point to sending a notification to the 'teacher' when someone has 3 consecutive 'no shows'. You might be able to set up a View (in drupal) with aggregation to show 'students who status is no show over last 3 weeks, and sorted so the ones who don't attend most show at top (if that last is possible with aggregation)
    – petednz - fuzion
    Jul 15, 2015 at 2:29
  • 1
    Upvote for the participant status suggestion, that makes sense. I think I might then create a CiviReport (with ability to choose a date range, participant status we're looking for, and threshold for how many events) and use the email notification features of that.
    – DaveFF
    Jul 16, 2015 at 8:14

Thank you for all the help!

Ultimately, I believe I will use the following:

  • Attendees are registered for a weekly event.
  • Custom search smart group which includes class roster group, but excludes those who were present at least once in the last month.
  • Report cron job to email these results on a monthly basis.

While it isn't exactly what I originally thought I needed, it works well enough to see those absent in the last month.

The key for me was realizing I could use a report to automatically email the data.

Thanks again!


The two tools in Civi that can help you automate this are scheduled reminders and repeating events.

First create a single event and on the "Schedule reminder" tab configure a reminder for no-show attendees like so:

enter image description here

Then set up your event to repeat every week. Each weekly event will inherit this scheduled reminder setting.

enter image description here

  • Would this email the students who missed or the teacher? Jul 25, 2015 at 5:27
  • Ah, good point, this would email the student. Re-reading the question I see that's not what's wanted.
    – Coleman
    Jul 25, 2015 at 16:35

Sometimes you just have to use spreadsheets!

In one tab, I would create a list of students that are supposed to attend. Export the attendants for each event, and add to the spreadsheet as a new tab, create a name range for the exported names. In the original tab do a look up (VLOOKUP) for each event in a separate column. You'll be able to see at a glance who has attended. You can also add a column to count the number of events attended.

I've used this method in the past to ensure all employees have entered time.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.