Check-In & QR Codes¶
Overview¶
Nigall supports QR-based check-in and check-out for attendees and day-of stakeholders from one ops desk (web + mobile). Payload kinds: attendees (ATT), speakers (SPK), talent/artists (TLN), vendors (VND), and exhibitors (EXH). RSVP events still use simpler name-list check-in on the guest list. Volunteer shift check-in and exhibitor lead capture remain separate flows.
Purpose¶
Fast arrival and departure tracking with scannable passes, search fallback, and a unified audit trail.
Who should use it¶
- Registration desk staff
- Artist / green-room gate staff
- Vendor load-in and exhibitor booth gate staff
- Session room monitors (attendee session scan)
- Volunteer coordinators (volunteer shift scan)
Benefits¶
- Unified day-of hub: Attendees | Artists (speakers + talent) | Vendors | Exhibitors
- QR PNG per ticket or stakeholder pass (
NIGALL:{KIND}|{event_tag}|{id}|{pass_code}) - Check-in, check-out (left venue), and undo (clear mistake)
- Manual search by name, email, ticket/pass code, stall, or booth
- Mobile ops scan/search/stats for all kinds (online); offline pack remains attendee-only in v1
Navigation path¶
| Flow | Path |
|---|---|
| Unified day-of hub | /events/<pk>/<tag>/day-of/ |
| Day-of scan | /events/<pk>/<tag>/day-of/scan/ |
| Day-of search | /events/<pk>/<tag>/day-of/search/ |
| Day-of pass QR | /events/<pk>/<tag>/day-of/pass/<kind>/<id>/qr.png |
| Event check-in dashboard (attendees) | /attendees/events/<pk>/<tag>/checkin/ |
| QR scan mode | /attendees/events/<pk>/<tag>/checkin/scan/ |
| Scan API | /attendees/events/<pk>/<tag>/checkin/scan/api/ |
| Manual check-in | /attendees/events/<pk>/<tag>/checkin/manual/ |
| Walk-in | /attendees/events/<pk>/<tag>/checkin/walk-in/ |
| Ticket QR image | /attendees/registrations/<pk>/ticket/qr.png |
| Session scan | /attendees/events/<pk>/<tag>/sessions/<session_pk>/scan/ |
| RSVP guest check-in | /events/<pk>/<tag>/guests/<rsvp_id>/check-in/ |
| Volunteer check-in | /events/<pk>/<tag>/volunteer-checkin/scan/ |
| Vendor load-in scan | /vendors/events/<pk>/<tag>/loadin/scan/ |
Prerequisites¶
- Attendees module enabled for registration QR flows
- Confirmed registration with issued ticket
- Host or staff permissions for check-in views
- HTTPS + camera permission for browser scanning
Step-by-step — Unified day-of desk¶
- Open
/events/<pk>/<tag>/day-of/as an event manager. - Choose a tab: Attendees, Artists, Vendors, or Exhibitors.
- Use Scan (camera or paste) or Search (name / email / pass / stall / booth).
- Check in on arrival; Check out when they leave the venue; Undo only to clear a mistake.
- Download or show pass QR from the day-of pass URL for speakers, talent, vendors, and exhibitors.
On mobile ops, open Scan, use kind chips when searching, and scan any NIGALL:… pass online.
[SCREENSHOT: QR scan interface]
Step-by-step — Attendee event check-in (legacy paths)¶
- Open check-in dashboard as host.
- Click Scan →
/checkin/scan/. - Point camera at attendee QR code.
- System validates registration → marks checked in.
- Use Manual search (includes ticket code) if QR fails.
- Use Check out when the attendee leaves (sets departure time); undo still clears the whole check-in.
Step-by-step — Session check-in¶
- Navigate to session roster or scan URL.
- Scan attendee QR at room entrance.
- Attendance recorded separately from event-level check-in.
Field descriptions¶
| Artifact | Description |
|---|---|
| Ticket / pass QR | NIGALL:{KIND}\|event_tag\|entity_id\|pass_code |
| Attendee check-in | check_in_time / departure_time on AttendeeCheckIn |
| Speaker gate | SpeakerDayOf.checked_in_at / checked_out_at (session “checkout” workflow is separate) |
| Talent pass | AccreditationPass issued for program-mapped talent |
| Vendor / exhibitor | Stall or booth load_in_scanned_at / load_out_scanned_at |
| Re-entry policy | Event attendee_re_entry_allowed (default off → duplicate while present is rejected) |
| Audit | Unified CheckInAuditLog with subject_kind + subject_id |
Business rules¶
| Rule | Detail |
|---|---|
| RSVP events | Name-list check-in; no default QR ticket |
| Registration events | QR on confirmed registration |
| Duplicate attendee scan | Rejected while present unless event re-entry is allowed; after check-out, re-check-in is allowed |
| Check-out | Marks left venue; does not delete history until undo |
| Undo | Clears gate state back to not-arrived |
| Speakers / talent | Confirmed speakers; talent with a program mapping on the event |
| Vendors / exhibitors | Approved + payment complete + stall/booth assigned |
| Volunteer check-in | Separate assignment-based flow |
| Offline pack | Attendees only in v1 |
Validation rules¶
- Invalid QR → API error message
- Cancelled registration → reject scan
- Past event may block new check-ins
User permissions¶
| Action | Host | Staff | Attendee |
|---|---|---|---|
| Scan check-in | ✅ | ✅ | ❌ |
| View own QR | ❌ | ✅ | ✅ |
| RSVP list check-in | ✅ | ✅ | ❌ |
Workflow¶
Examples¶
Conference registration desk: Event-level scan at entrance; session scans in breakout rooms.
Volunteer shift: Volunteer QR at /volunteer-checkin/scan/.
Best practices¶
- Test scan lighting and screen brightness beforehand
- Keep manual search open on second device
- Print backup name list for connectivity outages
- Use walk-in flow only with capacity headroom
Tips¶
- Download QR:
/attendees/registrations/<pk>/ticket/download/ - Print layout:
/ticket/print/ - Exhibitor lead scan:
/exhibitors/applications/<pk>/leads/scan/
Common mistakes¶
| Mistake | Result | Fix |
|---|---|---|
| RSVP event + QR expectation | No ticket | Use guest list check-in |
| Wrong event scanner URL | Invalid QR | Match pk/tag to event |
| Pending payment QR | Rejected | Confirm registration first |
FAQs¶
Can attendees show QR on phone?
Yes — standard use case. Speakers, talent, vendors, and exhibitors use the same day-of pass QR format.
Is offline scan supported?
Attendee offline packs work on mobile ops. Stakeholder (SPK/TLN/VND/EXH) scan requires connectivity in v1.
What is the difference between check-out and undo?
Check-out means they left the venue. Undo clears a mistaken check-in entirely.
Troubleshooting¶
| Symptom | Cause | Fix |
|---|---|---|
| Camera blocked | Browser permissions | Allow camera |
| QR not found | Wrong event / cancelled / wrong kind | Match event pk/tag; confirm pass issued |
| Vendor/exhibitor rejected | Unpaid or no stall/booth | Complete payment and assign location |
| Already checked in | Present and re-entry off | Check out first, or enable event re-entry |
| API 403 | Not event manager | Login as host / org manager / staff |
Related features¶
Screenshot placeholders¶
[SCREENSHOT: Check-in dashboard stats][SCREENSHOT: Successful scan confirmation][SCREENSHOT: Ticket QR on mobile][SCREENSHOT: Day-of hub Artists tab]
Administrator notes¶
- Scan API rate limits depend on deployment; monitor logs on busy events
- Ensure media URLs work for QR PNG generation
- Event setting
attendee_re_entry_allowedcontrols duplicate attendee scans while present
Developer/API notes¶
| Endpoint | Method | Body / notes |
|---|---|---|
.../day-of/scan/api/ |
POST | Unified web scan router |
/api/mobile/v1/ops/events/<pk>/<tag>/dayof/scan/ |
POST | {payload, action: check_in\|check_out} |
/api/mobile/v1/ops/events/<pk>/<tag>/dayof/search/?q=&kind= |
GET | Unified search |
/api/mobile/v1/ops/events/<pk>/<tag>/dayof/<kind>/<id>/manual/ |
POST | {action: check_in\|check_out\|undo} |
/api/mobile/v1/ops/events/<pk>/<tag>/dayof/stats/ |
GET | Per-kind KPIs |
.../checkin/scan/api/ |
POST | Attendee-only (legacy) |
.../sessions/.../scan/api/ |
POST | Session attendance |
ticket_qr_image / day-of pass QR |
GET | PNG image |
See also: Participant Guide