Attendance Tracking with Google Forms (Classes, Teams, Events)
Quick answer: Make a one-question Google Form — a required dropdown of names — and let the linked Sheet's automatic timestamp record when each person checked in. Post a QR code at the door, hand out prefilled links to regulars, and total everything with COUNTIF in Sheets.
Paper sign-in sheets get lost, arrive half-legible, and someone still has to type them up later. A Google Forms attendance system fixes all three problems with tools you already have: a form people can open by scanning a code, and a spreadsheet that timestamps every check-in the second it happens. Whether you're running a weekly class, a sports team, a club, or a one-off event, the setup below takes about ten minutes — and most of that is typing your roster.
The minimal attendance form
The best attendance form is the shortest one that still gives you countable data. Aim for one required question, two at most.
Name: dropdown beats short answer
If you know your roster, make the name question a dropdown listing everyone, rather than a short answer box. Two reasons:
- No typos. A typed roster gives you "Jordan Lee", "jordan lee", and "J. Lee" — three different people as far as a formula is concerned. A dropdown gives you one consistent string you can count.
- Faster check-in. Picking from a list beats typing on a phone at the door.
For open events where you can't know names in advance, use a short answer question — and consider turning on email collection in Settings so you still have one clean identifier per person.
Date: let the timestamp do it
Here's the trick most people miss: you usually don't need a date question at all. Every Google Forms response gets an automatic timestamp — date and time — in column A of the linked Sheet. If people check in as they arrive, the timestamp is your attendance date, and it's more trustworthy than anything self-reported.
Add an explicit date question only when responses come in after the fact — a coach logging yesterday's practice, or students reporting which of several sessions they attended. In that case the timestamp tells you when the form was filled, and the date question tells you what it's about. Both are useful; they're just different facts.
Status: only if absence needs a reason
For simple check-ins, submitting the form is the status — no question needed. But for classes or teams where you track excused absences, add a multiple choice question: Present / Late / Absent — excused / Absent — unexcused. This turns the form from a sign-in sheet into a record the whole staff can fill in on behalf of the group.
The QR-code-at-the-door workflow
This is where Google Forms attendance beats paper decisively:
- Get your form's share link from the Send button.
- Turn it into a QR code — see our QR code guide for the options, from free generators to sharing straight from FormMaker.
- Print it big and tape it at eye level by the entrance, with one line of instructions: "Scan to check in."
- People scan with their phone camera, the form opens, they pick their name, tap Submit — done in under fifteen seconds.
Meanwhile your Sheet fills itself in, row by row, with an exact arrival time on every entry. You'll know not just who showed up but who slid in twenty minutes late — the timestamps don't lie.
One practical tip: laminate the printout or slip it in a sheet protector if it's living on a gym door for a semester. And test the scan from six feet away before the first session; if your code is printed too small, people bunch up at the door.
Prefilled links: one-tap check-in for regulars
Google Forms can generate links with answers already filled in. Open your form's editor, tap the three-dot menu, and choose Get pre-filled link. Select a name in the dropdown, click Get link, and you have a URL that opens the form with that person already chosen — they just hit Submit.
Ways to use this:
- Personal check-in links. Send each team member their own prefilled link once. They bookmark it, and checking in becomes open-tap-submit.
- Kiosk shortcuts. For a small group, a tablet at the door with each person's prefilled link as a labeled bookmark works like a punch-clock.
- Prefilling anything repetitive. If your form has a session question ("Tuesday practice" vs. "Thursday practice"), prefill that per link so the door QR for Tuesday already has Tuesday selected.
The prefilled answer is editable before submitting, so it's a convenience, not a lock — treat it as speeding up honest check-ins rather than preventing dishonest ones.
One form per semester, or one per session?
Both work; pick based on how you'll read the data.
One form for the whole semester (recommended for most). Everyone checks into the same form all term. The Sheet becomes one long log, and the automatic timestamps separate the sessions for you — every Tuesday's check-ins cluster around Tuesday evening. One QR code to print, one Sheet to analyze, and per-person totals are a single COUNTIF. This is the low-maintenance choice for classes, teams, and clubs.
One form per session. Makes sense for discrete events — a conference with separately ticketed workshops, say — where each session's list goes to a different organizer. The cost is administrative: a new form, link, and QR code every time, and cross-session analysis means stitching Sheets together. If you find yourself copying a form weekly, switch to the semester model and let timestamps do the separating.
Analyzing attendance in Sheets
Link a Sheet from the form's Responses tab. Assume column A is the timestamp and column B is the name. A few formulas cover most questions you'll ever ask:
- Sessions attended per person:
=COUNTIF(B:B, "Jordan Lee"). Better: list your roster in a summary sheet column, then=COUNTIF(Responses!B:B, D2)next to each name and drag down — instant attendance table. - Check-ins on a given day:
=COUNTIFS(A:A, ">="&DATE(2026,7,14), A:A, "<"&DATE(2026,7,15))counts everyone who checked in on July 14. - Attendance rate: divide each person's count by the number of sessions held:
=E2/12formatted as a percentage. - Unique attendees:
=COUNTA(UNIQUE(B2:B))tells you how many different people have ever shown up.
Do this math in a separate tab, not in the response sheet itself, so new check-ins never collide with your formulas. If you used a dropdown for names, these counts are exact; if you used free text, expect to spend a few minutes normalizing spellings first — which is the strongest argument for the dropdown.
Taking attendance from your phone
Attendance is inherently a standing-up activity — you're at the gym door, the classroom threshold, the event entrance. There's no official Google Forms mobile app, and the desktop-oriented editor is clumsy for on-the-spot changes like adding a new player to the roster dropdown. FormMaker closes that gap: it creates and edits real Google Forms through your own Google account with a touch-first editor, shares the link or QR code from your phone, and lets you watch check-ins arrive in real time while you hold the door. Roster change five minutes before practice? Handled from your pocket.
FAQ
Can Google Forms be used for attendance?
Yes. A short form with a dropdown of names works as a digital sign-in sheet, and every response is automatically timestamped in the linked Sheet — an exact record of who checked in and when.
Do I need to ask for the date in an attendance form?
Usually not. The automatic timestamp on every response already records the date and time. Only add a date question when people log attendance after the fact.
How do people check in with a QR code?
Print a QR code made from the form's share link and post it at the door. Attendees scan it with their camera, pick their name, and submit — the check-in lands in your Sheet with a timestamp.
How do I count attendance in Google Sheets?
With COUNTIF on the linked response sheet: =COUNTIF(B:B, "Jordan Lee") totals one person's sessions, and COUNTIFS on the timestamp column counts check-ins for a specific date range.