Search for a free online attendance sheet and the results split into two piles. One pile is spreadsheet templates, a grid of names down the side and dates across the top, ready to print. The other pile is check in apps with a free tier and a paid tier waiting a hundred rows later. Neither pile explains the thing that actually decides whether a register works, which is who fills it in and what happens to the numbers afterwards.
A register that one person keeps on a laptop is a document. A register that a room full of people write into, that a second person reads to chase absences, and that somebody has to total at the end of a term, is a small system. The difference matters, because the free options behave very differently once more than one person touches them.
What a shared register has to do that a printed sheet does not
A printed sheet has one job: record who was there. A shared online register has four, and only the first one is obvious.
Record the fact. One row per person per occasion, with a date that is stored as a date and a status that comes from a fixed set rather than free text. Present, absent, late, excused. Four codes are enough for almost everyone, and a fifth appears the moment somebody types "left early" into a cell.
Say where it came from. Marked by the person themselves, or by whoever was running the session. This is the field most templates leave out, and the one that matters as soon as attendance carries any consequence, such as a certificate, a refund, or a training requirement.
Survive being edited by several people. Two people opening the same grid and typing into the same column is how a register loses a session's worth of data. A grid has no concept of a conflict; it simply keeps whatever was typed last.
Produce a total without being retyped. The reason attendance is collected is almost never the list itself. It is the percentage per person, the count per session, the names below a threshold. If producing that means a person copying figures into a second sheet, the register will drift out of date within a month.
A template answers the first job. The other three are structural, and they are decided by the route chosen rather than by the layout of the cells.
The free routes, and what each one is good at
There are three genuinely free ways to keep a register online, and they fail in different places.
| Route | Good at | Where it stops |
|---|---|---|
| A spreadsheet template shared with the team | Instant, free, everyone already knows the interface | Simultaneous editing, any audit of who marked what, per person totals that hold when rows are inserted |
| A form that writes each check in into a sheet | One row per submission, no edit conflicts, works on a phone | The sheet is a log, not a register; replies and chasing happen somewhere else entirely |
| A form tool with a response list | Each entry carries an owner, a status and a history, and the reply goes out from the same screen | Free tiers are usually limited by the number of people using it rather than by responses |
The middle route is the one most people should start with, and the one most articles skip. A short form with three fields, the session, the name and the status, produces a clean append only log that cannot be overwritten by two people at once. The grid is then a read only view built from that log with a pivot, rather than the place the data is typed.
The choice between the second and third routes comes down to whether anything happens after a mark is recorded. If attendance is purely a number, a form writing into a sheet is enough. If an absence means somebody has to be contacted, and somebody has to know whether that contact happened, the register needs a state per person and not just a row.
Designing the sheet so the counting is not a second job
Four decisions make the difference between a register that totals itself and one that has to be rebuilt every term.
One row per person per session. The grid layout, with dates as columns, looks natural and is hostile to counting. Every new session means a new column, every formula has to be extended, and a mid term addition to the class means inserting a row into the middle of every formula range. A long table with the columns session date, person, status and marked by will produce any view you want with a pivot, including the printable grid.
Store the date as a date. Text like "Week 3" or "12/9" cannot be sorted, filtered by month, or compared to a term start. A real date can do all three, and the week number can be derived from it.
Use a closed list for status. A dropdown with four values keeps the totals honest. Free text produces "Present", "present", "P" and "yes" in the same column, and every count will be wrong by whatever share of the rows used the wrong spelling.
Keep the roster separate from the register. Names belong in their own table, once, with a joining key. Typing names into the register repeatedly guarantees spelling variants, and a person who appears twice under two spellings has two attendance rates, both wrong.
There is one more decision that only shows up at the end of a term. Decide what the denominator is before anything is counted. An attendance rate of eighty percent means one thing when the denominator is every session held and another when it is every session the person was enrolled for. Somebody who joined in week five, or whose class was cancelled twice, will be scored unfairly by the first definition. Recording enrolment start and end dates on the roster, and cancellations as their own rows, lets both figures be produced from the same log without argument.
None of this requires a paid tool. It requires deciding the shape before the first session rather than after the tenth.
Self check in, and how to stop people marking each other present
If participants mark their own attendance, the register is only as good as the controls around it. Four measures cover most of it, and none of them are perfect.
Collect the email address, and require a sign in if the audience is inside one organisation. This is the single strongest control available for free, because it ties each submission to an account rather than to a typed name.
Use one link per session rather than one link for the whole course. A single permanent link can be submitted from anywhere at any time, including from home, weeks later. A link that is opened at the start of a session and closed at the end narrows the window to the session itself.
Add a code word announced in the room. It is weak, it is easily passed on by message, and it still stops the most common case, which is somebody who simply forgot to come and remembers the form later.
Keep the submission timestamp and look at it. Twelve submissions inside the same forty seconds, or a run of submissions after the session ended, is visible in the log without any clever analysis.
The honest position is that self check in trades accuracy for effort. Where attendance decides something material, the mark should be made by whoever ran the session, with the participant list already on screen. That is a different interaction from a form, and it is why a register with a list view beats a register that is only a form.
Where free runs out
Free tiers and free scripts both have edges, and they tend to be discovered in the middle of a term.
If a spreadsheet register is automated with Apps Script, and most are, the quotas are published and worth reading before relying on them. The documented limits put email recipients per day at 100 for a consumer account against 1,500 for a Workspace account, total trigger runtime at 90 minutes per day against 6 hours, and a cap of 50 recipients per message. A weekly absence notice to two hundred guardians from a personal account will hit the first of those limits, and the script does not announce the failure anywhere the person chasing absences will see it.
The trigger itself has a quieter problem. Google's documentation on installable triggers states that they always run under the account of the person who created them, and that a given account cannot see triggers installed from a second account. In practice this means the automation belongs to whoever set it up. When that person leaves, or is on holiday with two factor authentication on a phone, the register stops updating and nobody else can see why.
Hosted free tiers run out differently, usually at a row count, a response count or a monthly submission cap, which is exactly the wrong place for a register that grows all year. Pricing that counts responses turns a busy term into an upgrade prompt. Pricing that counts the people using it does not move when the register gets longer, which for attendance is the shape that matters.
An attendance record is a record about people
A register is personal data, and in most places it is more sensitive than it looks. It shows where a named person was on a given day, and absence patterns can reveal health, religious observance and care responsibilities without anyone intending it.
Three habits cover the bulk of it. Collect only what the register needs, which is usually a name, a session and a status, and resist adding a reason for absence as a free text box that will fill with medical detail. Decide how long the record is kept and write the answer down, because "forever in a shared drive" is the default outcome of not deciding. Control who can see it, which is where a shared spreadsheet is weakest, since a link shared once is shared onwards without a trace.
Where a register covers children, the guardian's contact details sit alongside it, and the two together are worth protecting more carefully than a spreadsheet link allows. A tool with view only access for the people who need to read the numbers, and edit access for the two people who maintain them, removes a whole class of accident. The same distinction is what separates a register from a document, and it is covered under the everyday intake patterns that attendance sits inside.
What to change first
Open the current register and look for the date column. If dates run across the top as headings, rebuild it as a long table with one row per person per session, and generate the grid as a view. That single change makes every later question, from per person percentages to absence chasing, a filter rather than a project, and it costs one afternoon. If absences also need somebody to follow up, keep the mark and the follow up in one place, which is what Halict does with the response list.
Q1. Is a Google Sheets template or a form better for attendance?
A form is better wherever more than one person records attendance, because each submission appends a row instead of overwriting a cell. Keep the spreadsheet as the place the numbers are read and summarised, built from the form's log, rather than as the place they are typed. The grid layout can still be produced as a pivot for printing.
Q2. How can attendance be taken on a phone without an app?
A form link opened in a mobile browser works, and a QR code printed on a sheet at the door is the usual way to distribute it. Keep the form to three questions so it can be completed in a few seconds, and generate a separate link per session so that the window for submitting is limited to the session itself.
Q3. How do you stop people marking themselves present when they were absent?
No free method is airtight. Requiring a sign in ties the submission to an account, a per session link limits when it can be used, a code word announced in the room stops the person who simply forgot to attend, and the submission timestamps make bulk cheating visible afterwards. Where attendance decides a certificate or a refund, the mark should be made by whoever ran the session instead.
Q4. What should an attendance record actually store?
The session date as a date, the person by a key from a separate roster rather than a retyped name, a status chosen from a fixed list, who recorded it, and when it was recorded. Reasons for absence, if collected at all, should be a short closed list rather than a free text box, because free text fills with medical and family detail that nobody intended to keep.
Q5. How long should attendance records be kept?
Long enough to serve the purpose they were collected for, and no longer, with the period written down before collection starts. A training record that proves a qualification has a retention period set by whoever requires the qualification. A weekly class register usually has no such requirement, which means the answer has to be decided rather than defaulted to keeping it indefinitely.
