> ## Documentation Index
> Fetch the complete documentation index at: https://guide.worshipbuddy.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Check-In System

> Check in registrants using QR codes and manage check-in data

# Check-In System

ChurchBuddy's event check-in uses QR codes from registration confirmation emails. Manage check-in from **Event Dashboard → Logistics → Check-In** (not a top-level dashboard tab).

<Info>
  **Platform**: Web for dashboard check-in and scanner pages. Mobile supports event check-in for admins with permissions and self check-in via My Event.
</Info>

## Overview

The check-in system includes:

* **QR codes** — Generated per registrant in confirmation emails
* **Quick Check-In** — Name/email search in the dashboard Check-In section
* **Registration Scanner** — Standalone web scanner at `/registration-scanner/?org={org_id}&event={event_id}`
* **Check-In logs** — Recent check-ins visible in the dashboard

There are **no toggles** to enable/disable QR vs manual methods — staff choose the tool they use.

## How QR Codes Work

Each registrant QR code includes event ID, registration ID, registrant ID, name, email, and a verification hash tied to the event start date.

Registrants can display the QR on their phone, print it, or use **Check In Now** in My Event.

## Dashboard Check-In

**Event Dashboard → Logistics → Check-In**

1. Use **Quick Check-In** — search by name or email and check in from results
2. Click **Scan QR Code** — opens a modal with **Open Scanner in New Tab** or **Copy Link** (not a direct navigation)
3. Review recent check-in activity in the logs list

**Add Check-In Station** is **Owner / Org Admin only** — granular check-in permission users can use Quick Check-In and the scanner but cannot add stations.

## Registration Scanner

URL: `/registration-scanner/?org={org_id}&event={event_id}`

On load, choose a path:

### Station Setup (recommended for fixed stations)

1. **Station Setup** — select an existing station from the dropdown (create stations first in **Logistics → Check-In → Add Check-In Station**)
2. Choose method:
   * **QR Scanner** — camera scan
   * **Search by Name** — search by name or email, then check in

### Scanner Mode (roving staff)

1. **Scanner** — enter your **Scanner Name**
2. Use the **QR Scanner** flow to scan codes

<Info>
  Labels in the UI are **Search by Name** (not "Manual Entry") and **QR Scanner** (not "QR Scan Mode").
</Info>

### Scanner behavior

When a valid registrant is checked in:

* Hash verification runs for QR scans
* Duplicate check-ins show **Already checked in** with timestamp
* A log entry records registrant, station (if set), scanner name, method, and timestamp

## Check-In Logs

Log entries include registrant info, check-in time, station ID, who checked them in, and method (`qr_scan` or manual search).

View logs in **Logistics → Check-In** on the event dashboard.

<Info>
  There is no **Check Out** button or **Export Check-In Data** button in the event dashboard UI today. Use Registration tab CSV export for registrant lists if needed.
</Info>

## Best Practices

1. **Test the scanner** before the event on the devices you'll use
2. **Train staff** on Station Setup vs Scanner mode
3. **Keep Search by Name** as backup when cameras fail
4. **Use station IDs** to track which entrance is busiest
5. **Print QR backups** for registrants whose phones may die

## Troubleshooting

**QR code not scanning:** Grant camera permissions; ensure good lighting; use Search by Name as backup.

**Invalid QR code:** QR may be for a different event, tampered, or registrant removed.

**Registrant not found:** Confirm they registered; verify spelling in search.

**Already checked in:** System prevents duplicates — note the timestamp shown.

**Scanner not working on mobile browser:** Use a modern browser; refresh; fall back to dashboard Quick Check-In.
