# Chapter 4 — Attendance

## 4.1 How attendance works

Attendance records **who was present** at a service or event on a given date. The system supports three methods:

| Method | Who uses it | When |
|--------|-------------|------|
| **Manual punch in/out** | Admin or usher at a desk | During or after service |
| **Kiosk QR check-in** | Members on their phones | Self-service at entrance |
| **Visitor check-in** | Kiosk or admin | Quick name-only check-in during a service |
| **Visitor form (QR)** | Public phone form | Full custom registration via scanned QR code |

### How records flow

```
Check-in (manual or kiosk)
        ↓
Attendance record created
        ↓
Reports & Tracker (analytics)
        ↓
Follow-ups (for absentees)
```

Each record links: **member** + **service/event** + **date/time** + **status** (present, absent, visitor).

---

## 4.2 Manual attendance (punch in / punch out)

**Menu:** Attendance & Reports → **Attendance**

![Manual attendance](../assets/screenshots/05-attendance-manual.png)
*Figure 4.1 — Manual punch in screen with service selector and member search*

### Punch in a member

1. Open **Attendance** in the sidebar.
2. Select today's **service** or **event** from the dropdown.
3. Confirm the **date** (defaults to today).
4. Search for the member by name.
5. Click **Punch In** — record is saved.

### Punch out a member

1. Same screen — search for a member who is currently punched in.
2. Click **Punch Out** — records departure time.

### Bulk attendance (where available)

Some screens allow marking multiple members present/absent at once for a service date. Select members → mark status → save.

---

## 4.3 Attendance tracker

**Menu:** Attendance & Reports → **Attendance Tracker**

The tracker is an **analytics dashboard** showing:

| Metric | Description |
|--------|-------------|
| Attendance trends | Week-over-week or month-over-month charts |
| Absentee patterns | Members absent 3+ consecutive weeks |
| Demographics | Breakdown by age, gender, department |
| Open follow-ups | Badge count on sidebar |

### Sync follow-ups from absences

1. Open **Attendance Tracker**.
2. Review the absentee list.
3. Click **Create follow-ups** (or per-member action).
4. System creates pastoral care tasks in **Follow-ups**.

---

## 4.4 Attendance reports

**Menu:** Attendance & Reports → **Attendance Reports**

### Generate a report

1. Open **Attendance Reports**.
2. Set **date range** and **service/event** filters.
3. View the report table or chart.
4. Click **Export** to download (requires Export permission).

### Report types

| Report | Shows |
|--------|-------|
| Service summary | Headcount per service date |
| Absentee list | Members not present in date range |
| Demographics | Attendance by age/gender/department |

---

## 4.5 AI attendance assistant

If your platform has AI configured:

1. Open **Attendance Reports**.
2. Find the **Ask** or **AI Assistant** panel.
3. Type a question in plain language, e.g.:
   - "Who was absent for the last 4 Sundays?"
   - "What was average attendance in May?"
4. Review the AI-generated answer.

---

## 4.6 Kiosk setup (admin)

**Menu:** Attendance & Reports → **Attendance Kiosk**

![Kiosk setup](../assets/screenshots/06-attendance-kiosk.png)
*Figure 4.2 — Kiosk page with QR code and service selector*

### Generate a check-in link

1. Open **Attendance → Kiosk**.
2. Select today's **service** or **event**.
3. Click **Generate Link** or **Show QR**.
4. A QR code and URL appear (e.g. `https://yourchurch.com/check-in/abc123`).

### Display the QR code

| Method | How |
|--------|-----|
| Projector | Display QR on screen at entrance |
| Printed poster | Print QR and place at door |
| Tablet | Open link on a tablet at a stand |

### Regenerate token

If the link is compromised:

1. Click **Regenerate Token**.
2. Old link stops working; new QR is generated.
3. Update printed materials.

### Production requirement

Your public URL must be configured (`APP_URL` or `KIOSK_PUBLIC_URL`). If the link shows `localhost`, QR codes will not work for members outside your office.

---

## 4.7 Public kiosk check-in (member guide)

**No login required.** Share this section with your congregation.

### For members

1. Scan the QR code at the church entrance (or open the link on your phone).
2. Search for your name or browse the directory.
3. Tap your name → tap **Check In**.
4. Confirmation message appears. Done!

### For visitors (first-time guests)

1. On the kiosk page, tap **I'm a visitor** (or Visitor tab).
2. Fill in name and optional contact details.
3. Tap **Check In** — recorded as a visitor attendance.

> **Quick kiosk visitor check-in:** For a fast name-only check-in during a service, use **Kiosk → I'm a visitor** (see above). For a **full custom registration form** with QR code, use **Attendance → Visitor form** (section 4.8).

---

## 4.8 Visitor form (QR registration)

**Menu:** Member Management → **Visitor form**

Design a custom visitor registration form and share it via **QR code**. When a guest scans the code, the form opens on their phone; submitted answers are saved in your database.

> **Plan features:** Your subscription must include **Visitor Form** to access the form builder and submissions. **Visitor Form QR Code** must also be enabled for the QR panel and for guests to submit via the public link. If QR is not on your plan, you can still build the form but cannot share a scannable code until your administrator adds the feature.

### Kiosk visitor check-in vs visitor form

| Feature | Kiosk visitor tab | Visitor form (QR) |
|---------|-------------------|-------------------|
| Purpose | Quick attendance during a service | Detailed visitor registration |
| Fields | Name (+ optional contact) | Your custom fields (text, email, dropdowns, dates, etc.) |
| Access | Kiosk check-in QR / link | Dedicated visitor-form QR |
| Data saved | Attendance log | Visitor form **submissions** list |

### Build the form

1. Open **Member Management → Visitor form**.
2. Set **Form name**, **welcome message**, and add fields with **Add field**.
3. Supported types: text, text area, email, phone, number, checkbox, radio, dropdown, date, date & time.
4. Mark important fields as **Required**.
5. Click **Save form**.

On first open, a starter template is created (first name, last name, email, phone, visit date) — edit it to suit your church.

### Share the QR code

After saving, a **Visitor QR code** appears at the top of the page:

1. **Print** or display the QR on a tablet at your welcome desk.
2. Use **Copy link** or **Open form** to test on your phone.
3. **Regenerate QR** only if you need a new link (old printed codes will stop working).

The QR is generated automatically when the form is created — no extra setup.

### What visitors see

1. Scan the QR code with a phone camera.
2. The mobile-friendly form opens (no login required).
3. They fill in your fields and tap **Submit**.
4. A thank-you message confirms their details were saved.

If the form is set to **inactive**, visitors cannot submit until an admin turns it back on.

### View submissions

1. On the visitor form page, click **Submissions** (badge shows count).
2. Browse the list — date, visitor name, and **View** for full answers.
3. Use this for follow-up, exporting data, or welcoming new guests.

Requires **Attendance** permission (Read to view, Write to edit the form).

### Public URL notes

| Environment | Note |
|-------------|------|
| Production | QR uses your live church URL — works on any phone with internet |
| Localhost / XAMPP | Set `KIOSK_PUBLIC_URL` or `APP_URL` so phones can reach the server |
| Same Wi‑Fi (LAN) | Works for testing when phone and PC share a network |

---

## 4.9 Punch out (admin kiosk panel)

After a service, for duration tracking:

1. In **Attendance → Kiosk**, open the **Punched In** panel.
2. Select the same service/event.
3. List shows members currently checked in.
4. Select a member → **Punch Out**.

---

## 4.10 Export attendance data

1. Open **Attendance** or **Attendance Reports**.
2. Apply date/service filters.
3. Click **Export** → download CSV or Excel.

---

[← Chapter 3](03-members.md) | [Next: Chapter 5 — Finance →](05-finance.md)
