Appointments

The Appointments app lets customers and colleagues book time with the company: an appointment type defines who can be booked, when, for how long, and under which conditions, and each booking creates a calendar event for the provider.

Note

The app is provided by the eYssen Appointment module family (appointment and its bridge modules). The optional features described below each require their own module, indicated in the corresponding section.

Access rights

The Appointments category of the access rights offers:

  • User: sees and manages their own bookings;

  • Manager: sees all bookings, and configures appointment types and resources.

Appointment types

Go to Appointments ‣ Configuration ‣ Appointment Types to create a type. Fill in the Name, a Description shown to the customer, the Location, and the Time Zone the slots are published in.

Availability

The Availability tab defines when the type can be booked:

  • Allowed Providers: the users who can be booked for this type. Default Working Hours sets the working schedule used to compute the slots, and, under Per-provider Working Hours, a different schedule can be set for individual providers.

  • Required Resources: resources (rooms, equipment) that must be free for the booking to be possible.

  • Weekly Slots: the recurring time ranges of the week when bookings are accepted, with an optional capacity or gap override per slot.

  • Duration: the Min Duration (min), Max Duration (min), Duration Step (min), and Default Duration (min) a customer can choose from, and the Slot Increment (min) used to generate the proposed start times.

  • Buffers & Gaps: Buffer Before (min) and Buffer After (min) keep time free around a booking, and Gap Between Meetings (min) enforces a pause between two consecutive bookings.

  • Limits: how far ahead bookings are possible (Max Days Ahead), the Min Notice Hours before the start, the Cancel Notice Hours until which a customer may cancel, the Max Future Bookings Per Person, and the Capacity Per Slot when several people may book the same slot.

Odoo computes the free slots from the working hours, the existing bookings, the providers’ calendar events, and their leaves.

screenshot: productivity-appointments-type-availability
menu
Appointments ‣ Configuration ‣ Appointment Types
shows
An appointment type form on the Availability tab, with the Providers & Resources, Duration, Buffers & Gaps and Limits groups filled in, and the weekly slot lines below.
highlight
The "Duration" and "Limits" groups (red frame).
data
Type "Consultation", two providers, weekly slots Monday to Friday 09:00–17:00.
module
appointment
notes
English UI, light theme, 1440px width.

Assignment and approval

When several providers are allowed, the Assign Strategy decides who gets the booking: Least Assigned, Round Robin, or Random.

Enable Require Approval to hold new bookings in the Requested state until they are approved. The approval policy is either Single Approval (Manager) or All Providers Must Approve; in the latter case, each provider gets an approval line on the booking, and can approve or reject it from the booking form or from the link in the approval email.

Unconfirmed Expiry (hours) automatically cancels bookings that are never confirmed.

Questions

The Form tab lists the questions asked when booking. Each question has a Name, a Type (Short Text, Long Text, Number, Date, Select, Checkbox, or File), and can be marked Required. For a Select question, list the options one per line. A question can also block the booking when a given answer is given, with the Error Message shown to the customer.

The answers are stored on the booking, in its Answers tab.

Notifications

In the Notifications tab, select the email template used for each step: Email on Request, Email on Confirm, Email on Reject, Email on Cancel, Email on Approval Request, and Email on Waitlist Offer. An Additional email message is appended to these emails.

Event reminders send a reminder to the requester a given time before the appointment (e.g., 1 Days), while Calendar alarms are the reminders set on the provider’s calendar event.

Waitlist

Enable Waitlist in the corresponding tab to let customers queue for a fully booked slot. When a slot frees up, Odoo offers it to the first customers in the queue (Waitlist Notify Batch), who then have Waitlist Hold Minutes to confirm before the offer expires and the next customers are notified.

Visibility and restrictions

  • Visibility: Public, Unlisted (only reachable with the link), or Private.

  • In the Restrictions tab, Allowed Domains limits public booking to a comma-separated list of email domains.

  • Click Generate share link to obtain a Share URL that can be sent to customers. Regenerate invalidates the previous link.

Pricing and payment

A type can be free, or priced with a Pricing Mode:

  • Fixed: the Fixed Amount is charged per booking;

  • Hourly: the Hourly Rate is applied to the booked duration, rounded up to the Billing Increment (min).

Enable Payment Required to make the payment part of the booking flow. Allow Refund Until Hours defines until when a cancellation is refundable.

Bookings

Appointments ‣ Bookings lists all bookings, in list or calendar view. A booking records:

  • the Appointment Type, the Providers, and the Resources;

  • the Customer, or, for a public booking, the visitor’s name, email, phone, and language;

  • the start, the end, and the Duration (min);

  • the Status: Requested, Approved, Rejected, or Cancelled;

  • the Pricing and the payment status (Pending, Authorized, Paid, Refunded, or Failed).

Use the buttons in the header to Approve, Reject, or Cancel a booking, and, after the appointment, to Mark Show or Mark No-show. Force Approve lets a manager approve a booking that is still waiting for other providers.

An approved booking creates the calendar event of its providers, and the customer receives the confirmation email with a link to their booking.

screenshot: productivity-appointments-booking-form
menu
Appointments ‣ Bookings
shows
A booking form with the header buttons (Approve, Reject, Cancel, Mark Show, Mark No-show), the Booking Details, Customer, Pricing and Status groups, and the Approvals tab showing two provider lines.
highlight
The header buttons (red frame).
data
Booking for "Deco Addict", type "Consultation", state "Requested", two approval lines.
module
appointment
notes
English UI, light theme, 1440px width.

Export bookings

With the eYssen Appointment (Reports & Export) module (appointment_reports), appointment managers can download the bookings from the Export menu of the application:

  • Appointments ‣ Export ‣ Export Bookings (CSV, max 10,000) downloads the appointments.csv file, with one row per booking: name, type, start, end, duration in minutes, customer (or the visitor’s name for a public booking), amount, status, and attendance;

  • Appointments ‣ Export ‣ Export Bookings (iCal, max 10,000) downloads the appointments.ics calendar file, which can be imported in any calendar application. Each booking is an event titled with the appointment type and the booking name, with its location and description; approved bookings are marked as confirmed, the others as tentative.

Both files contain the 10,000 most recent bookings at most, of all statuses. The dates and times are expressed in UTC.

Tip

The export can be narrowed by adding parameters to the address of the download, e.g., /appointment/export/csv?state=approved&date_from=2026-01-01&date_to=2026-03-31. The available parameters are type_id (the ID of an appointment type), state (requested, approved, rejected, or cancelled), date_from, and date_to (YYYY-MM-DD).

Note

To install the module, enable Reports under Appointment in Settings ‣ eYssen ERP. The menu and the downloads are reserved for the users with the Manager access level of the Appointments app.

Provider unavailability

Providers can be made unavailable for a period of time with an appointment leave, which has a User, a start and an end, a Reason, and a state (Draft, Approved, Cancelled). Only approved leaves block the slots.

Note

With the Appointment (HR Holidays) (appointment_hr) module, validated time off of the employees linked to the providers also blocks the corresponding slots, so time off does not have to be entered twice.

Passes

The Appointment (Passes) (appointment_pass) module sells packages of appointments. In Appointments ‣ Passes ‣ Pass Products, define a pass with a Name, a Mode (a number of Occurrences or a balance of minutes), the Validity (days), and the Price.

Appointments ‣ Passes ‣ Pass Holders lists the passes owned by customers, with their Occurrences Remaining or Minutes Remaining and the Valid Until date. When a customer with a valid pass books an appointment, the booking is redeemed against the pass instead of being paid.

Coupons and gift cards

The Appointment (Payment) (appointment_payment) module adds discounts to the booking flow:

  • Appointments ‣ Configuration ‣ Payments & Discounts ‣ Coupons: a coupon has a Code, a Discount Type (percentage or fixed amount), an Amount, a validity period, and a Max Uses limit (0 = unlimited).

  • Appointments ‣ Configuration ‣ Payments & Discounts ‣ Gift Cards: a gift card has a Code, a Balance, and an expiry date. The balance is deducted from the amount due of the booking.

The remaining Amount Due is then paid with one of the configured payment providers.

Other integrations

  • Project: with the Appointment (Project Tasks) (appointment_project) module, select a Target Project on the appointment type to create a task there when a booking is approved.

  • eLearning: with the Appointment (eLearning) (appointment_elearning) module, select a Course to Enroll on the appointment type to enroll the customer in that course when the booking is approved.

  • CRM: see Create leads from bookings.