Concepts

Bookings

The booking is the core object in Seshn. It represents a reserved slot of time for a contact at a service.

Lifecycle

Bookings move through a defined set of states:

heldconfirmedchecked_incompletedcancelledno_show

Atomic seat reservation

Seshn uses row-level locking (SELECT ... FOR UPDATE) to prevent double-booking. When two requests try to book the last seat simultaneously, one succeeds and the other gets a clear error — no race conditions.

Hold → Pay → Confirm

For paid services, Seshn supports a three-step pattern: hold the slot (reserving capacity), collect payment via Stripe, then confirm the booking. If payment fails, the hold expires and the slot becomes available again.

Recurring bookings

Create a booking series for weekly, biweekly, or monthly recurring bookings. Each occurrence is a full booking with its own lifecycle — cancel one without affecting the rest.