Check-in
Check-in records every visit of a membership pass holder: at the front desk by scanning the member QR or searching a phone number, with a QR code on the door, or from the class roster. Each successful check-in uses the customer's pass according to its terms.
Check-in is a business feature on the Growth, Pro, and Enterprise plans, and needs Memberships & passes on. You can rename "Check-in" with What do you call checking in? in Shop settings.
Dashboard menu
While the feature is on, the Check-in menu shows in the web Dashboard:
| Page | Who | What it holds |
|---|---|---|
| Class Roster | Owner, Admin, Cashier | tick who came to each session |
| Check-in Log | Owner, Admin | every check-in, and voiding a check-in |
| Check-in Reports | Owner, Admin | busy hours, attendance per class, and members not seen lately |
| Door Codes | Owner, Admin | printing QR posters for self check-in |
| Check-in Settings | Owner (others read only) | see Settings |
In the Dashboard app (Android), the log is under Check-ins, the reports under Check-in reports, the roster under Attendance list (Booking shops), and the settings under Business features, with the Settings button on the Check-in card.
Member QR
While Check-in is on, the customer's storefront account shows a QR that changes every 30 seconds, with a "New code in ...s" countdown. The QR is on the profile and under My Membership (the Show my Membership code button). An old QR no longer works, so a screenshot is useless to anyone else.
- the QR keeps showing without internet until its codes run out, then the customer is asked to connect to refresh the code
- when the shop uses booking attendees, the customer picks who the QR is for (for example their child)
- the POS cart scanner can still read this QR to pick the customer, as before
Front desk (POS)
The Check-in tab in the POS (following your check-in word) can be used by Owners, Admins, and Cashiers:
- Scan the member QR with the camera (the Scan QR button), or Or search by phone (at least 6 digits, the end of the number is enough), then pick the person
- when the member has saved attendees, pick Who is checking in?
- the member card shows full screen: photo, name, masked phone number, the pass used, credits left or valid-through date, and the result: OK (green) or DENIED (red) with the reason
- when the member has bookings today, the card lists Today's bookings with an Attend button
- the Recent list shows today's visits at your branch
The same tab has a Roster view for booked sessions (see Class roster). A Cashier whose login is tied to one branch always checks in at that branch.
Which pass is used
When a member holds several passes, Etalasse picks one that can be used and covers this visit, in this order: Time-based first, then Time + credits, then Credits (no credit is used while an unlimited pass exists), then the one ending soonest.
- Credits and Time + credits passes lose 1 credit per check-in ("Checked in. 1 credit used.")
- a Time-based pass is not debited, but the check-in counts toward its limit per day and per week
- a pass whose coverage is only certain calendars, services, or categories is for bookings only, not walk-in visits. A branch-limited pass only works at that branch
- checking in for an already booked class does not use a pass again, because the booking was already paid (in money or with a pass)
Scanning twice
A second check-in for the same member, holder, and pass within 10 minutes (adjustable) returns the first check-in ("Already checked in at .... Nothing was charged.") and does not take another credit. Two cashiers scanning the same QR at the same moment also take only one.
Denial reasons
The reason names below match the Check-in Log. The POS and the member's phone show longer sentences with the same meaning.
| Reason | Meaning |
|---|---|
| QR code not valid | a forged QR, one from another shop, or the customer was not found |
| QR code expired | the QR is older than 1 minute. Ask the member to show the live code |
| No pass | the member holds no pass in this shop, or the holder is someone else |
| Pass not started yet | the pass starts on a later date |
| Pass expired | the pass has expired |
| Pass frozen | the pass is frozen, or today falls in a freeze |
| Waiting for renewal payment | the pass is past due and waits for the renewal invoice to be paid |
| No credits left | no credits left |
| Usage limit reached | the per-day or per-week limit is used up |
| Pass doesn’t cover walk-ins | the pass is only for booked classes or services |
| Pass is for another branch | the pass only works at another branch |
| Outside access hours | outside the Access hours you set |
| Booking not valid | the booking is not this member's, or it was canceled / a no-show |
When several passes fail, the reason shown is the most actionable one.
Door code (self check-in)
When Self check-in with the door code is on, each branch has a door QR code. Open Check-in > Door Codes, pick the Paper size (A4 or A5) and the branches, then Print posters. Members scan the poster with their phone camera, sign in if needed, then answer "Check in at South Branch?" (the branch name) with the Check-in now button. The result is You're checked in or Can't check in with the same reasons.
A door code is not secret (it hangs on a wall): what proves the visit is the member's account, a valid pass, and the scan-twice rule. If a photo of a poster spreads, use Reprint all in Check-in Settings: every printed code stops working and you print new ones. Self check-in is off by default.
Class roster
Check-in > Class Roster shows the day's booked sessions (move with Previous day, Next day, or pick a date), grouped per session, with attendee names and "... of ... attended". Tick who came:
- it is recorded as a check-in for that booking, without using a pass
- the booking is completed following the rules of Completing Bookings. Before the session starts, the booking completes automatically once the session has started
- an attended booking is never marked as a no-show automatically
Cashiers may mark attendance for any booking in the shop.
Log and reports (Owner and Admin)
- Check-in Log: every OK and Denied check-in, filtered by From and To dates (at most 92 days), Branch, Result, Method (Member QR, Door code, Phone search, Roster, Manual), and Reason
- Void check-in in the log, with a reason: a credit it used is given back to the pass. A booking that was completed stays completed. A voided check-in is marked Voided
- Check-in Reports: the Check-ins, Denied, Days with check-ins, and Busiest hour figures, then:
- Busy hours: an hour x weekday map (shop time)
- Per day: successful and denied check-ins per day
- Attendance per class: per service and start time: sessions, booked, attended, no-show, canceled, and attendance rate
- Not seen lately: holders of an active pass who have not checked in for more than Not seen for (days) (or never), with a Send a WhatsApp message button. For bulk messages, build a segment with the last check-in rules (see Membership Renewals)
The log and reports stay readable when the feature is switched off.
Settings
The shop owner sets Check-in up in Check-in > Check-in Settings (also linked as Check-in Settings from Business Features). Admins and Cashiers can only view.
| Setting | Default | Meaning |
|---|---|---|
| Self check-in with the door code | off | customers scan the poster at the door with their phone and check in by themselves. A valid pass is still needed |
| Ignore repeat scans for (minutes) | 10 | 1-720 minutes. A second scan of the same person within this time is not charged again |
| Access hours (Opens at and Closes at) | empty = any time | shop time, for front-desk and door check-ins. A closing time before the opening time runs past midnight. The roster ignores these hours |
| Keep check-ins for (months) | 24 | 1-120 months. Older check-ins are deleted automatically every night, even while the feature is off |
| Reprint all | makes every printed door code stop working. Print and hang the new ones from Door Codes |
Privacy
- Etalasse stores no location, IP address, device, or QR content for check-ins
- check-in data is deleted automatically after the retention period
- the phone search only shows the name, a masked number, photo, attendees, and the number of active passes
Integrations
Every new OK check-in sends the checkin.ok webhook, for example to open a turnstile or log the visit in another system. Etalasse does not build hardware integrations itself.
Member QR codes and door codes are signed with the server secret CHECKIN_QR_SECRET (at least 32 characters), which is generated directly on the API server and is the same on every API server. Without it, the Dashboard shows "Check-in QR codes aren’t set up on the server yet" and the POS asks staff to search by phone, while phone search, the roster, the log, and the reports keep working.