CRM - Attendance and performance tracker (200 users, 15 sessions)

Hi everyone,

I was using Spreadsheet with all my team to track attendance and performance of ~200 students during the entire semester for the last 2 years and I want to migrate to CODA but, I can’t figure it out. My goal is to migrate from a one semester performance tracker to a CRM for the entire career (4 years) and to take advantage of create automations to send supportive messages to students with low performance, among others ideas.

Each session has an attendance column (checkbox) and a delivery status (yes, no, n/a). Using my previous approach in Spreadsheet, I should create a group to join each pair of columns, but in CODA is more dificult to layout in this way and, I can’t use dates to create formulas because the dates aren’t “real data”, only column names.

What would you suggest to make an easier layout to track students?

Hi Cristian,

This is lot of questions, and maybe more of a consulting answer. I will think about this, but would like to make one suggestion off the cuff; Take your dates out of the columns, and into the table.

Rambling Pete

1 Like

Hi there,

We’ve used Coda to manage the booking and attendance of training we are rolling out for a client with 180 “students”. The system has to be able to book the student into specific training sessions and then track and report their attendance. The training group is segmented by language (it’s a bi-lingual site) and level (supervisor or leader) so we have to make sure that a student can only book into and attend the correct training session. E.g. a French leader can’t book into an English supervisor training event.

The way we’ve set this is up is to have a learners table that has all of the training population data. Column headers include name, email, phone, department (for reporting purposes), language and level. Think of this as the CRM.

We then have a second table called events which is for the individual workshops (training is done live, on-site). Column headers include the event name, date, start and end times, language, level, trainer, location (room) and status (scheduled, completed, cancelled). This table allows us to track not only the events we’ve run but also how many people booked in, attended or booked in and didn’t show up.

A third table tracks attendance. Pressing a button on the first table adds the student and event to this attendance table. The button allows us to disable it if the event criteria (language and level) doesn’t match the student. It pulls in and displays the events details so it’s clear what is being booked in for. It has a column with a checkbox to mark as attended or not and the other columns lookup details from the first and second tables.

This approach allows us to cover every possible reporting request our client throws at us.

Hope this helps!


Thanks @Alex_F for your reply!

I ended up with a rough idea about how to create this project and your approach gives me a more clear idea about how to optimize tables and using data for every variable.

My general idea at this moment is:

  1. Create a timeline table (with dates for all courses for all semester)
  2. Create courses table and assign 15 dates for each of 4 courses
  3. Assign topics and teachers for each date for all courses
  4. Assign students for each course with 15 dates and the name of teacher/topic
  5. Add attendance/delivery columns and teacher for each students and for each class

I will study your workflow and add som of your learnings into my project and show it in the next few days.

Thanks a lot again!


Hi @Piet_Strydom, you are right. After reading your message I was thinking about how to change my approach and I think I will show my next version during next week.

Thank you, your message made me think a lot :slight_smile:


I’ve trying to figure it out but I couldn’t pull data from other columns.

I ended up using 2 nested withName() formulas to create a list of all students by all of the dates, so each student has 5 rows with a date, #week, course name and a 2 check boxes. But inside the second loop I can’t use currentValue.otherColumn anymore to Add rows with columns using data from the first and second table as you do. When I type currentValue.anycolumn the formula doesn’t work anymore.

How do you populate or what do you suggest to recovering the power of currentValue inside a withName() formula?

Here is my second attempt:

Hi Cristian,

I’m struggling to understand your use case so I’m not sure how best to advise you. Are you able to provide more information about what you’re trying to achieve and how you have done this in the past e.g. can you share your Spreadsheet with anonymized data?

To answer your question, I didn’t use any WithName() formulas. Instead, I used lookups, AddRow() and DeleteRow() so that all information was always pulled through.

Once I understand better, it will be easier to make recommendations about your data structure based on my lessons learnt.


Hi Cristian,

I am a bit busy at the moment, so can only give you high level suggestions.

I would have a single base table, with columns for student, session, date, student attendance.

Session and student would be lookup columns, where you maintain session and student specific info. Use the lookup functionality to pull in the necessary lookup fields.

The use views per student, per session, per day, etc to look at the data.

Think more “Pivot table”, than “3rd normal form” tables.


This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.