Most of what goes wrong is seen by someone with no way to tell you
Every site has a reporting gap. Staff have a radio, a room and a supervisor. Everybody else has nothing: contractors, visitors, delivery drivers, stallholders, the crowd. On the days that matter most they outnumber your team by a wide margin, and they are the ones standing next to the problem.
The usual answer is a generic email address on a sign, which works about as well as you would expect. Nobody has their laptop, nobody remembers the address, and what does arrive is a paragraph of prose that somebody has to read, interpret, chase and remember to close. A reporting channel that costs effort to use gets used after the fact, by which point it has stopped being a report and become an incident review.
So reporting now lives on the page you already point people at. The QR sign-up link that puts somebody on your alert list can carry a second, entirely independent section: Report an issue. Somebody scans the code, answers your questions and sends the report.
The two halves of that page do not depend on each other in either direction. Somebody who never enters a phone number can still report. Somebody who signed up ten minutes ago can report without doing it again. And when the recipient list behind the link reaches the end of its date window and stops taking sign-ups, reporting carries on regardless. A list window decides who gets texted. It has no business deciding whether a hazard can be reported.
From a code on a gate to a named owner
Six things the reporting page does between somebody noticing a problem and your team closing it.
- The code is already on the wall
- Reporting rides on the sign-up page your QR codes already open
- No app to install, no account to create, no login to remember
- One printed code now does two jobs: join the alert list, and report a problem
- You write the questions
- Build the question set yourself: free text, single choice, multi-choice, number, location
- A live preview beside the editor renders the real page a visitor will get
- One form can serve several links, and reporting works on the plain unbranded page too
- A precise location
- A location question takes a typed answer: north stand, level 2, by the lift
- Optionally offer a one-tap browser position alongside it, with its accuracy recorded
- Category and location fill the queue's own columns, so a report is sortable on arrival
- A triage queue
- Reports arrive in Security Ops as new, acknowledged, in progress, resolved or dismissed
- Priority is low, normal or high, and your team sets it, never the person reporting
- Each new report raises a notification that opens the report directly
- A named owner
- Assign a report to a named person with a typeahead, and unassign as easily
- Reporter contact details can be hidden, optional or required, per form
- Self-declared details are labelled as unverified, because that is what they are
- A record that holds up
- Every answer is stored with the question it was actually asked
- Editing a form later never rewrites what an earlier reporter was shown
- Status changes, assignment and resolution notes build an activity trail per report
A public form where anybody can tick “urgent” sorts reports by who sounds most sure, but your queue sorts them by risk.
The page is open to everyone, with limits built in
A page that anyone on the internet can post to needs its limits designed in rather than bolted on. Access is the unguessable link itself, a CAPTCHA challenge, and rate limiting on both the reporter's connection and the link. The limits are generous enough for a whole venue sharing one network and tight enough that nobody can bury the queue.
The page is also, deliberately, not an emergency channel. Your own wording sits at the top of the form telling people what to do if somebody is in danger right now, and the queue describes itself the same way to the team working it. Emergencies belong on the alert path, where the response page, the roster and the incident map are waiting.
- Reporting never depends on signing up: no number entered, or already entered, both work
- Reporting keeps working after a recipient list's own date window has closed
- A list window decides who gets texted; it does not decide whether a hazard can be reported
- Access is the unguessable link, a CAPTCHA challenge, and rate limits, not an account
- Your own emergency wording sits at the top of the form, so nobody uses it to call for help
- The form is separate from your brand templates, so an unbranded page can still take reports