The question usually arrives with one of two plans behind it. Either several staff members will scan at the same time, at two doors or in different aisles, and everything should land in one spreadsheet. Or every attendee is expected to scan a code with their own phone. Both are reasonable. They need different tools, and mixing them up is the most common reason a setup that worked in testing fails on the day.
Written by QR to Sheets, which sells the scanner link described in the second half, so weigh that accordingly. The free routes come first. Google behaviour was read from Google's own help and developer pages on 2026-10-08.
Who holds the phones? Two different setups
- Staff phones scan what people or things carry: student ID cards, printed tickets, badges, parcels, stock. A few phones, many scans each. This is what a scanner link is for, and any number of staff phones can use the same link.
- Every attendee scans one poster with their own phone. Many phones, one scan each. This is a form, not a scanner link. A scanner link counts each phone that scans as a device, so 200 attendees would need 200 device slots, and on the free plan every phone after the first is refused.
For the second setup, a free Google Form behind a printed QR code is the usual answer, and the QR code sign-in sheet guide includes a free poster maker for it. The rest of this guide is about the first setup: several staff phones scanning into one sheet.
Free route 1: one Google Form on many phones
A Google Form accepts submissions from many people at once, and each submission becomes its own row in the linked response sheet with a real timestamp. Nothing collides, and it costs nothing. Where it breaks for scanning:
- Google Forms has no barcode scanner. Whatever is on the card or the label is typed, with typos to match.
- Every row looks the same. To know which door or which staff member sent a row, add a question for it and rely on people answering it every time.
- Limiting each person to one response needs a sign-in. Google's help says that with Limit to 1 response on, users must sign in to their Google Account to fill out the form.
- No signal, no row. A form that cannot submit leaves the person scanning to try again later, or to forget.
Free route 2: everyone edits the shared spreadsheet
The other instinct is to share the spreadsheet with everyone who scans and let them type, or plug a USB scanner into a laptop, straight into it. Google Sheets handles several editors well, and Google's help says a file can be edited on up to 100 open tabs or devices at once. It is still the wrong tool for several people adding rows at speed:
- Everyone types into the next empty row. Two people doing that at the same moment can pick the same row, and one entry overwrites the other.
- Every editor can see, sort and change everything, including other people's rows and other tabs. Letting staff add rows without sharing the sheet covers why protected ranges do not fix that.
- There is no time unless you add one, and the usual onEdit script has limits: Google's documentation says script executions and API requests do not cause triggers to run, and simple triggers do not run in view or comment mode.
- The Google Sheets phone app has no barcode scanner, so on a phone the code is typed.
Free route 3: a Google Apps Script web app
Google Apps Script can serve a small web page, with a JavaScript barcode library for the camera, that appends a row each time someone scans. Every phone opens the same URL, and the script writes to the sheet, so nobody needs edit access. It is free and fully yours. With several phones at once, the costs show up quickly:
- Simultaneous writes need care. Google provides LockService, which it describes as preventing concurrent access to sections of code when multiple users or processes modify a shared resource. Leave it out, and two scans arriving together can collide.
- Quotas apply. Google lists 30 simultaneous executions per user and 6 minutes per execution, and states that all quotas are subject to elimination, reduction or change at any time, without notice.
- Camera quirks on iPhone and Android, a scan made with no signal, a code held in front of the lens for three seconds: each is your code to write and maintain.
How QR to Sheets handles several phones
In QR to Sheets, the admin signs in with Google once, connects the spreadsheet and creates a scanner link that writes to one tab. Each staff member opens the same link in Safari or Chrome, allows the camera once and scans. Every scan from every phone becomes its own row on that tab. The people scanning need no Google account, never get access to the spreadsheet, and install nothing.
- Each phone that scans counts as one device. Free covers one phone; Premium is $7 per phone per month. People being scanned never open the link and need nothing.
- A phone is recognised by its browser. The same phone opening the link inside another app's built-in browser, in a private tab or in a second browser counts as a new device, so keep each person on one browser.
- A phone beyond the plan's device count is refused with a message naming the limit, before it can scan. To start over before an event, Clear all devices, on the Devices page, resets every phone at once, and the phones you still need register again.
- Rows are added in the order they reach the sheet, and each keeps its own scan time. If the signal drops, the open scanner keeps saving scans on the phone and sends them when the signal is back, each with its original scan time, so those rows may arrive after later ones.
- Nobody types on the scan tab, so there is no next empty row to fight over.
How do I tell which phone or door a row came from?
A QR to Sheets row has six columns: the scan time in column A, the scanned value in column B, the scanner in column C, written as link: followed by the link's name for a scanner link, then the workspace name, the device type and a scan ID. Several phones on the same link write identical values in the scanner and device type columns. The device type only says mobile or desktop; it does not name the phone.
- To tell doors, aisles or teams apart, give each one its own scanner link, named after it: link:North gate and link:South gate. That is the simplest and most readable way. The free plan has one link; Premium has unlimited links.
- Renaming a link changes the name written on new rows only. Earlier rows keep the old name.
- To tell individual phones apart on one link, turn on column mapping. A mapped row starts with the scan time, the link name and a device ID in column C that stays the same for each phone's browser, and your own columns begin at column D.
To count today's scans per door, put this on a separate tab, once per link name:
- =SUMPRODUCT((Log!C2:C="link:North gate")*(IFERROR(INT(VALUE(Log!A2:A)), 0)=TODAY()))
- A shorter version that works only on text timestamps, which is what QR to Sheets writes: =COUNTIFS(Log!C2:C, "link:North gate", Log!A2:A, TEXT(TODAY(), "yyyy-mm-dd")&"*")
QR to Sheets writes each time as YYYY-MM-DD HH:MM:SS in the workspace timezone, and Google Sheets stores it as text. The SUMPRODUCT version turns it into a date with VALUE(), so it also works on a sheet with real dates. The COUNTIFS version matches the text that starts with today's date, so it returns 0 on real dates. TODAY() follows the spreadsheet's time zone in File, Settings; set it to match the workspace.
What happens when two phones scan the same code?
With several phones, the same person or item is sometimes scanned twice: once at each door, or by two staff who did not see each other. What happens depends on one setting per link, Accept duplicate scans.
- On, the default: every scan is recorded. If the same code was scanned on that link in the last 12 hours, from any phone, the phone that just scanned it shows an amber Saved anyway badge, so the person scanning knows it is a repeat. Keep it on for daily attendance and for check in or check out.
- Off: the link records each code once, ever. A second scan, from the same phone or a different one, is refused, and if two phones scan the same code at the same moment only one row is kept. That suits single-use vouchers or a one-off entry. Never switch it off for daily attendance: it would refuse every person's scan tomorrow, and every return scan.
- Repeats on two different links are separate: a scan at link:North gate and one at link:South gate are both recorded.
To keep every scan but count each person once, clean it up in the sheet instead: handling duplicate QR scans has the first-scan flag and a unique count.
Which route fits several people scanning?
| Route | Many phones at once | Camera scanner | People adding rows can see the spreadsheet | Tells phones or doors apart | Cost |
|---|---|---|---|---|---|
| Google Forms | Yes | No, values are typed | No | Only with an extra question | Free |
| Shared Google Sheet | Yes, up to 100 open tabs or devices editing | No on a phone; a USB scanner types on a computer | Yes, all of it | No, unless people type it | Free |
| Google Apps Script web app | Yes, within Google's quotas | Only if you build one | No | If you build it | Free, plus your time |
| QR to Sheets scanner link | Yes, one link on many staff phones | Yes, in the phone browser | No | Yes, by link name, and by device ID with column mapping | Free for one phone and 300 scans in total, then 7 USD per registered device per month |
| QR to Sheets Forms | Yes, for self check-in on attendees' own phones | No, it is a form | No | Only with an extra question | Paid plan; the free plan includes 1 form with 10 trial submissions |
What several phones cost
The free plan is one scanner link, one Google Sheet, one registered device and 300 scans in total, not per month: one phone, for a trial. Premium is $7 per phone per month with unlimited scans and links, so three door phones cost $21 a month whether they scan 50 people or 5,000. The people being scanned are never counted. The Events add-on ($25/month) requires Premium; it adds a guest list and shows each guest's name at check-in, so one door phone with Events is $32 a month.
If attendees should check in on their own phones instead, QR to Sheets Forms puts a public form in front of a Google Sheet, and the people submitting it are not devices. Forms is part of the paid plan, with two live forms per registered device; the free plan includes one form and 10 trial submissions. When you build one, open the form's Deliveries tab and switch on Write submissions to a Google Sheet, because new forms start with every delivery off.
Step by step
- 1
Decide who holds the phones
If staff scan codes that people or items carry, use a scanner link. If every attendee should check in on their own phone, use a form instead.
- 2
Create one scanner link per place you want to tell apart
One link can run on many phones. Name it after the door, aisle or team, because the name is written on every row it records.
- 3
Open the link on each staff phone
Send the link to each person who scans. They open it in Safari or Chrome, allow the camera once and start scanning, with no app and no account.
- 4
Keep duplicates on for attendance
Leave Accept duplicate scans on for daily attendance and check in or check out. Switch it off only for codes that may be used once, ever.
- 5
Report from a separate tab
Leave the scan tab alone and count or filter it from another tab, so rows arriving from several phones never collide with anything typed.
Frequently asked questions
Can multiple people scan into the same Google Sheet at the same time?+
Yes. With a QR to Sheets scanner link, any number of staff phones can open the same link and scan at once, and every scan is added as its own row in the same Google Sheet. Each phone that scans counts as one device: the free plan covers one, and Premium is $7 per phone per month.
Does every phone need its own scanner link?+
No. One link works on many phones. Create separate links only when you want to tell places or teams apart, because each link's name is written on every row it records.
Do the people being scanned need the app or a phone?+
No. Staff scan the codes that people carry, such as ID cards or tickets. The people being scanned never open the scanner link, install nothing and are not counted as devices.
Can attendees scan a QR code with their own phones to check themselves in?+
Not with a scanner link, because every phone that scans counts as a device and the free plan allows one. Use a form instead: a free Google Form behind a printed QR code, or QR to Sheets Forms on the paid plan.
Will two phones scanning the same code create duplicate rows?+
By default, yes: every scan is recorded, and a repeat within 12 hours on the same link is flagged on the phone with an amber Saved anyway badge. With Accept duplicate scans switched off, the link records each code once, ever, which suits single-use codes but never daily attendance.
How do I know which phone sent each row?+
The default row names the scanner link, written as link: followed by its name, and the device type, mobile or desktop. Give each door its own link to tell doors apart, or turn on column mapping, which writes a device ID for each phone's browser.