Skip to main content

Documentation Index

Fetch the complete documentation index at: https://memberpulseptyltd.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Monitor and record event attendance with QR code scanning, manual check-in, and real-time attendance dashboards.

Capabilities

ActionROLE_CLIENT_ADMINROLE_CLIENT_USER
View attendance
Check-in attendees
Export attendance
Configure check-in

Features

Check-in Methods

QR Code Scan

Scan attendee’s ticket QR code using mobile device or dedicated scanner

Manual Check-in

Search and check-in attendees by name or email

Zoom Attendance Import

For Zoom-hosted online events, attendance can be imported directly from Zoom. Expected behavior:
  • Pull the participant list from the Zoom meeting/webinar
  • Match participants to members by email (primary) and name (fallback)
  • Mark matched members as attended and trigger CPD awarding (if configured)
  • Mark unmatched participants as “unmatched” for manual review (no automatic member updates)

Acceptance Criteria (Zoom Attendance Import)

Frontend
  • Admin UI provides an “Import from Zoom” action for Zoom-enabled online events.
  • Import results show matched vs unmatched participants.
Backend / API
  • Backend pulls Zoom attendance and maps it into MemberPulse attendance records.
Permissions
  • Only authorized staff can run imports.
Business Rules
  • Duplicate imports are idempotent (re-import does not create duplicates).
  • CRM post-event tags are applied for attended/no-show where configured.
Error Handling
  • Zoom API failures surface clear error details and allow retry.

Acceptance Criteria (Check-in Methods)

Frontend
  • Attendee list with check-in status
  • Session-level check-in (multi-session events)
  • Bulk check-in for group arrivals
  • Undo check-in functionality
  • Mobile-optimized check-in interface
  • Attendance export (CSV, Excel)
Backend / API
  • Backend behavior supports this feature as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • Check-in only allowed on event day (configurable buffer)
  • Invalid/refunded tickets cannot check in
  • CPD points awarded on check-in (if configured)
  • CRM sync triggered on check-in (if integration enabled)
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

QR Code Check-in

1

Open Scanner

Navigate to event → Attendance → Start Check-in
2

Scan QR Code

Use device camera to scan ticket QR code
3

Verify Attendee

System displays attendee name and ticket type
4

Confirm Check-in

Tap to confirm check-in (or auto-confirm if enabled)

Acceptance Criteria

Frontend
  • QR scanner using device camera
Backend / API
  • Backend behavior supports this feature as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • QR code can only be used once per event/session
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Manual Check-in

For attendees without QR codes:
  1. Search by name or email
  2. Locate attendee in list
  3. Click check-in button
  4. Confirm attendance recorded

Acceptance Criteria

Frontend
  • Manual search and check-in interface
Backend / API
  • Backend behavior supports this feature as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • All business rules for this feature are enforced.
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Real-time Dashboard

Monitor attendance in real-time:
  • Total Registered - All ticket holders
  • Checked In - Currently confirmed attendees
  • Pending - Not yet checked in
  • Check-in Rate - Percentage attended

Acceptance Criteria

Frontend
  • Real-time attendance counter
Backend / API
  • Backend behavior supports this feature as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • All business rules for this feature are enforced.
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

UI Spec (from supplied spreadsheet)

The spreadsheet explicitly calls out a List of Participants UI element for events:
  • Columns: Full name, Email, Ticket Type Purchased
For check-in, the spreadsheet’s EventRegistration-style fields include:
  • status (pending, confirmed, checked_in, cancelled)
  • paymentStatus (pending, paid, failed)
  • checkedInAt, cancelledAt

Data Model Cross‑Reference (Entities)

Session Attendance

For multi-session events:
  • Track attendance per session
  • Check-in at session level
  • View session-specific reports
  • CPD points per session attended

Acceptance Criteria

Frontend
  • Session Attendance workflow is implemented in the UI as described.
Backend / API
  • Backend behavior supports Session Attendance as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • All business rules for this feature are enforced.
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Implementation Contracts

Backend (API)

GET    /api/events/{id}/attendance           # Attendance summary
GET    /api/events/{id}/attendees            # List all attendees
POST   /api/events/{id}/check-in             # Check-in attendee
POST   /api/events/{id}/check-in/qr          # Check-in via QR
DELETE /api/events/{id}/check-in/{attendeeId} # Undo check-in

GET    /api/events/{id}/sessions/{sessionId}/attendance
POST   /api/events/{id}/sessions/{sessionId}/check-in

POST   /api/events/{id}/attendance/export    # Export attendance
POST   /api/events/{id}/attendance/import/zoom # Import Zoom attendance
Check-in Request:
{
  "ticketId": "ticket-uuid",
  "method": "qr_scan" | "manual",
  "sessionId": "session-uuid" // optional
}

Data Model

interface AttendanceRecord {
  id: string;
  eventId: string;
  ticketPurchaseId: string;
  memberId: string;
  memberName: string;
  memberEmail: string;
  ticketType: string;
  
  // Check-in
  checkedIn: boolean;
  checkedInAt?: string;
  checkedInBy?: string;
  checkInMethod?: 'qr_scan' | 'manual';
  
  // Session (for multi-session)
  sessionId?: string;
  sessionName?: string;
}

interface AttendanceSummary {
  eventId: string;
  totalRegistered: number;
  checkedIn: number;
  pending: number;
  checkInRate: number;
  byTicketType: {
    ticketType: string;
    registered: number;
    checkedIn: number;
  }[];
}

QR Code Validation

// QR code contains encrypted payload
interface QRPayload {
  ticketId: string;
  eventId: string;
  memberId: string;
  timestamp: number;
  signature: string;
}

// Validation checks

Error Handling

ErrorHTTP StatusMessage
Already checked in400”Attendee already checked in”
Invalid ticket400”Ticket is invalid or cancelled”
Wrong event400”Ticket is for a different event”
Check-in closed400”Check-in is not available for this event”
Invalid QR400”QR code is invalid or expired”