Offer event timeslots on a form, and let people check themselves in
One event can now run at several times, and people can pick the time that suits them.
Set the times up front. When you create an event you can add its timeslots right there, instead of saving the event and adding them afterwards. A single timeslot is filled in for you, so an event that runs once is no more work than before.
Put the real times on your form. A registration form linked to an event can now offer that event's timeslots. The list comes straight from the event, so there is no second copy to keep up to date, and a time you change or remove changes on the form too. Each option shows how many spots are left, and a full timeslot says so.
Both ways of checking in. Staff can check someone into the specific timeslot they registered for, and people can still check themselves in. Every check-in now records how it happened, and attendance that someone recorded for themselves is labelled, so you can see at a glance which attendance was observed by your team.
One person can register for several timeslots of the same event, which is what a weekly class or a multi-day workshop needs.
A roster you can read. Because one person can now hold several registrations, the attendee list groups by person: one line each, with their timeslots underneath. You can search it, narrow it to one timeslot, and filter by how much of it someone attended, including who came to every timeslot. The count above the list tells you how many people you have and how many registrations they hold between them.
Volunteer shifts follow the event. Creating a shift for an event now offers that event's timeslots. Pick the ones the shift covers and you get a shift for each, already set to that timeslot's time and place, instead of typing the same dates and addresses again.

