Check-in Scanner¶
Check attendees in at the door via QR code scan or manual lookup. The scanner runs full-screen at /app/events/:id/checkin — ideal for a tablet or phone held at the entrance.

Opening the Scanner¶
From an event's detail page at /app/events/:id, click the Check-in Scanner button in the Actions row. The scanner opens full-screen (no sidebar or header) so it's usable on small mobile screens.
The scanner shows three live counters at the top:
- Checked In — tickets already scanned in
- Remaining — tickets issued but not yet checked in
- Total — all tickets issued for this event
Scan Modes¶
Switch between modes using the toggle at the top:
Camera (QR)¶
Uses the device's camera to scan ticket QR codes. Each ticket email includes a QR that encodes the ticket code. On first use, the browser will request camera permission — grant it and the live preview appears.
Valid scans auto-check the ticket in and flash a success banner. Duplicate scans of the same ticket show "Already checked in" with the original check-in timestamp.
HTTPS required for camera access
Browsers only expose the camera API on HTTPS origins (or localhost). In production, the scanner must be loaded via your app. subdomain over HTTPS — not an IP address.
Manual¶
Two input modes for situations where QR scanning fails (damaged code, no camera, printed ticket list):
- Enter Ticket Code — type the alphanumeric code from the ticket (format
ABCD-1234) - Look up by Email — enter the attendee's email; if a single ticket matches, it's checked in directly. If multiple tickets match, a picker appears so the organizer can pick the right one.
Permissions¶
The check-in scanner requires one of:
SUPER_ADMINEVENTS_ADMIN- Ownership of the event (the user who created it)
Non-admin event owners can check in attendees for their own events but not others'.
Audit Trail¶
Every check-in action is recorded with the ticket code, the user who performed the check-in, and a timestamp. The full log appears on the event detail page under the Check-ins tab, and is included in event exports.
Tickets marked as cancelled (after refund) cannot be checked in — the scanner rejects them with a red banner.
Admin Routes¶
/app/events/:id/checkin— full-screen scanner for a specific event
Related¶
- Ticketed Events — creating events and tiers
- Payments Settings — Stripe configuration