Skip to content

Bulk attendance ​

Bulk marking is the fastest way to record attendance when one staff member is responsible for tracking the whole service. You pick the meeting and date, scroll through your member list, tap everyone who came, and save.

This is what most small and mid-size churches actually use week to week. It scales to a few hundred members comfortably; past that, a check-in station starts to make more sense.

Bulk marking grid

1. Open the bulk-mark page ​

Go to Attendance. Pick the meeting (e.g. Sunday Worship) and the date. The page renders a grid of all members eligible for that meeting.

2. Filter the list ​

Most churches don't mark everyone at once β€” they mark by group. Use the filter row at the top:

FilterWhat it does
Org unitLimit to a branch / center / cell
GroupLimit to a small group
Member typeMembers only, leaders only, etc.
Recently activeOnly those who attended in the last 4 weeks (cuts the list)
SearchType-ahead by name

TIP

A common pattern: filter to the unit you're responsible for. A shepherd's view is automatically scoped to their unit anyway.

3. Tap to mark present ​

Each member shows as a card with photo, name, and a check-state toggle. Tap or click to flip from absent to present. The check turns green.

If you make a mistake, tap again β€” the row turns back to absent.

The progress count in the header increments as you mark. Useful for sanity checks: "we had about 120 last week, we should be in that range."

4. Save ​

Click the save button. Every marked-present row is upserted as an attendance for that meeting + date. We use a unique index on (member_id, meeting_id, attendance_date) with an ON CONFLICT clause, so:

  • Re-running the save is safe β€” no duplicates.
  • If you missed someone earlier and add them in a second pass, only the new rows are written.
  • If you accidentally toggle someone off and re-save, the row is removed (we treat absence as deletion).

WARNING

The "absence as deletion" behavior bites if you tap a member off by accident and save. There's no undo β€” you'd have to re-mark them. We're considering a confirm-on-removal step for a future release.

Quick keyboard moves ​

  • Up/down arrows β€” navigate the grid.
  • Space β€” toggle the current row.
  • Cmd/Ctrl + S β€” save.

These shortcuts make the page very fast on a laptop.

Back-dating ​

The date picker accepts any past date. Mark last week's service on Monday, mark last month's missed entry today. The save behavior is the same β€” upsert per row, the unique index keeps things clean.

Future dates are blocked.

Marking from a CSV (advanced) ​

For very large churches, you can also import attendance from a CSV via the bulk-actions module. The columns are member_id (or member_email), meeting_id (or meeting_name), and attendance_date. The same upsert-on-conflict applies.

Permissions ​

ActionAdminShepherdMember
Open bulk pageyesscoped to unitno
Mark / unmarkyesscopedno
Bulk import CSVyesnono

A shepherd sees only members in their assigned units; their bulk save updates only those rows.

Common questions ​

What happens if two people mark attendance for the same meeting at the same time? Both saves succeed. Each row is independent β€” if both staff tap Mary present, the upsert lands once. If one taps her present and the other taps her off in the same window, the last save wins.

Can I bulk-mark from my phone? Yes β€” the grid is responsive, but typing search is faster than tapping through a long list on a phone. Tablets are the sweet spot.

Can I export the per-meeting attendance list? Yes β€” open the meeting and use the export button. CSV with member name, ID, and attendance date.

Next steps ​