Appointments and visits
Appointments and Visits both describe a customer at a physical location, but they answer different questions.
An appointment can sit alongside a visit: the appointment is the booking, and the visit, an interaction, is the record of attendance.
Definitions and appointments
Appointments follow the Definition/Instance pattern.- An Appointment Definition describes a bookable service: duration, buffers, booking type, opening hours, the locations and staff it is offered at, capacity, an optional booking questionnaire, and notification settings. It is the template and the schedule. Definitions also carry content fields (
short_description,long_description,icon,image_url,terms_conditions) that front-end booking flows can display, and aninternal_notesfield for operator use. - An Appointment is a single booking against a definition.
Booking types
Thebooking_type on a definition sets how customers book.
Independent flags layer on top of the booking type:
Status lifecycle
An appointment has astatus, and Omneo stamps the matching timestamp automatically whenever the status changes. The typical progression is:
Omneo does not enforce a fixed order. You can set any status directly and Omneo records its timestamp, so a
requested booking can be cancelled or marked no_show without being confirmed first.
Appointments booked against instant or walk_in_only definitions are confirmed automatically on creation, so confirmed_at is set straight away. Creating an appointment with an explicit status of confirmed also sets confirmed_at.
Availability
Availability is the set of bookable slots Omneo calculates for a definition at a location on a date. Omneo derives slots by intersecting:- The definition’s opening hours for that day.
- The location’s opening hours.
- The assigned staff member’s hours, when the definition requires staff.
- Existing bookings, which subtract from capacity.
- The definition’s
min_lead_minutesandmax_advance_days, which cap the bookable window.
capacity_remaining, derived from max_concurrent_bookings minus the bookings already in that slot. For staff-required definitions, capacity is implicitly one per staff member per slot.
Where staff come from
When a definition requires staff, the eligible staff pool depends onuse_staff_from_location.
Waitlists and walk-in queues
Two related flows handle demand that a normal booking cannot.- A Waitlist lets a customer register interest when no suitable slot is available. When a slot opens, an operator fulfils the entry by creating an appointment and linking it, or the customer cancels. Waitlist entries move through
active, thenfulfilledorcancelled. Enabled withallow_waitlist. - A Queue is the walk-in queue for a definition that allows walk-ins. A customer, named or anonymous, checks in at a location and moves through
waiting,called, thenservedorcancelled. A served entry can be converted into an appointment. Enabled withallow_queue.
Booking questionnaires
A definition can carry a booking Questionnaire: a versioned form built from reusable Questions. Customers answer it as part of booking, and the answers are stored with the appointment. Questionnaires are pinned by version: an appointment keeps the form version that was active when it was booked, so editing the form later never rewrites historical answers. Each answer can be routed to a destination such as a profile field, a transaction, or a rating. Questionnaires are not limited to appointments. The same Question and Questionnaire model is used for standalone surveys such as NPS, CSAT, and profile updates, and each answer can be routed to a profile field, a rating, or a transaction. See the appointments developer guide for how booking answers are submitted.Links and associations
An appointment can reference other records:- Transaction or Order: attach a completed Transaction or a pending Order, for example to tie a consultation to the sale that followed. Each is a single association, set when creating or updating the appointment and cleared by setting it to
null. - Profiles and Lists: link one or more Profiles or Lists to an appointment, separate from the profile the appointment is booked for. This uses the dedicated link and unlink endpoints, and linking the same record twice is idempotent.
Notifications
A definition can schedule notifications for each lifecycle event (created, confirmed, completed, cancelled, rejected, and reminders) by pointing at a Target and setting an offset. Rescheduling an appointment re-schedules its pending reminders. The notifications are configured on the definition, not triggered per booking.Visibility conditions
A definition can carry avisibility_condition: a JsonLogic rule evaluated against the Profile requesting the list. When the rule evaluates to true for a given Profile, that definition is included in the response from the profile-scoped visibility endpoint (GET /v3/profiles/{profile}/appointment-definitions/visibility). The endpoint only returns published, non-archived definitions.
A null visibility_condition means the definition never passes the check. To make a definition visible to all qualifying profiles, set an explicit condition that always returns true (for example {"==": [1, 1]}).
Visibility conditions are evaluated server-side using the Profile’s attributes as context. They follow the same JsonLogic approach used elsewhere in Omneo (such as Reactions).
Time and timezone handling
Appointment times are written in a requesttimezone (an IANA name such as Australia/Melbourne) and stored in UTC. Every datetime field on the appointment is returned in UTC. Convert to local time on the client using the timezone on the appointment or on its nested location. Definition opening hours are plain times, local to the location’s timezone.
Appointment types
There is no separate category ortype field on an Appointment Definition. The definition itself is the type: an “Event” definition and a “Service” definition are two different definitions, and every appointment booked against one is of that type.
To work with appointments by type, filter the appointments list by definition id (filter[appointment_definition_id]). See filtering appointments by type in the developer guide.
Related
- Visits
- Working with appointments
- Managing appointment definitions
- Walk-in queues and waitlists
- Managing visits
- Targets
- Appointment API
- Profile Appointment API
- Appointment Definition API
- Appointment Availability API
- Browse visible appointment definitions API
- Profile Normal Hour API
- Profile Special Hour API