Checkin
A booking records intent: a resource is reserved for a window of time. A checkin records presence: a user physically arrived, and at some point departed. The two are related but separate. A checkin can be linked to a booking or stand on its own, used purely for access control or attendance tracking without any prior reservation.
Together, bookings and checkins answer different questions. The booking answers whether a slot was claimed. The checkin answers whether it was actually used, how long the occupant stayed, and whether the space went unused despite being reserved.
Shape
A checkin holds a planned window and two optional timestamps filled as the user arrives and departs.
| Field | Purpose |
|---|---|
starts_at | Planned start of the visit |
ends_at | Planned end of the visit |
check_in | Actual arrival timestamp |
check_out | Actual departure timestamp |
check_in and check_out are set by separate API calls as the visit progresses. A checkin with no check_in is pending. One with check_in but no check_out is in progress. One with both is complete.
Triggers
Each state transition fires a trigger that routes to bound actions on the bookable.
| Trigger | Fires when |
|---|---|
checkin_created | A checkin is registered |
checkin_started | The user checks in |
checkin_updated | A checkin is modified |
checkin_deleted | A checkin is deleted |
checkout_started | The user initiates checkout |
checkout_completed | The checkout is finalized |
Use cases
No-show detection — compare bookings in a window against their linked checkins. A booking with no associated checkin is a no-show. No extra modeling required.
Space utilization — check_in and check_out give the actual occupied interval. Compare that against starts_at and ends_at to measure how much of the booked time was used. The Activity reports surface this at the organization and location level.
Access control and notifications — bind an action to checkin_started to trigger a door unlock or send a welcome notification. Bind one to checkout_completed to flag the space for cleaning or release a follow-on booking early.
Standalone presence tracking — create a checkin without a booking to record that a user was at a space outside of any reservation context. Useful for walk-in access, drop-in desks, or any flow where presence matters but advance booking does not.
For the call sequence see Check in to a Booking.
API
The Checkin tag covers checkin CRUD and the checkin audit log.