Skip to main content
iVentureTeam

Odoo 20 Appointments Release Notes

All 19 Appointments changes from the official Odoo 20 release notes, explained in plain words with a screenshot from a live Odoo 20 database, plus where to find each one and what it means for your upgrade.

Planning the move? See our Odoo upgrade services, the Odoo 20 upgrade guide or get a number from the migration cost calculator.

New feature 5Enhancement 13Performance 1In Community 1Enterprise only 18
Type
Edition

Change 1 of 19

Accessory products for appointments

New featureEnterprise only

Appointments now supports the selection of accessory products during checkout.

Official Odoo 20 release note

In plain words

If the product sold with a paid appointment has accessory products, the customer is sent to the cart instead of straight to payment. The cart then suggests those accessories so they can be added before checkout.

Website > /appointment > Online Cooking Lesson > Proceed to CheckoutAfter booking the paid cooking lesson, the cart suggests the accessory "Chef Apron" with an Add to cart button.

Where to find it

  1. Appointments: open a paid appointment type (e.g. Online Cooking Lesson) and note its product.
  2. Sales > Products: add accessory products on that product (Sales tab).
  3. Website: book the appointment, fill in your details, click "Proceed to Checkout".

For users

Customers booking a paid appointment see "Proceed to Checkout" and get accessory suggestions in the cart.

For developers

New helper appointment.type._has_accessory_products(); the booking controller redirects to /shop/cart when it returns True.

Upgrading from Odoo 19

None. Set accessory products on the appointment product to use it.

Change 2 of 19

Appointment booking flow

EnhancementEnterprise only

Booking a user or resource as the first step now happens on the same page as the selection of the date and time.

Official Odoo 20 release note

In plain words

When customers pick the person or resource themselves, that choice is now a dropdown on the same page as the date and time slots, instead of a separate first step.

Website > /appointment > Dental CareThe "With" dropdown (staff choice) sits next to the Date dropdown, above the time slots on the same page.

Where to find it

  1. Website: open /appointment and choose Dental Care (Assign: By visitor, Starts with: User / Resource).

For users

One page to choose who, when and at what time.

For developers

Templates that extended the old user/resource selection page must target the new dropdown.

Upgrading from Odoo 19

Check website customizations of the appointment selection templates.

Change 3 of 19

Appointment names

EnhancementEnterprise only

View the customer name, appointment type, and number of seats, where relevant, directly on booked appointments in the Gantt and calendar views.

Official Odoo 20 release note

In plain words

Bookings in the Gantt and calendar views now show the customer name and the appointment type. When the type manages capacity, the number of booked seats is added after the name.

Appointments > Kayak Tour > Bookings > Calendar (Day)The booking reads "Brandon Freeman - Kayak Tour Booking - 5" followed by a seat icon: customer, type and 5 seats.

Where to find it

  1. Appointments: open a type with Group Bookings (e.g. Kayak Tour), click Bookings.
  2. Switch to the Calendar view, Day scale.

For users

Scan the schedule without opening each booking.

For developers

calendar.event display name adds the seat count when the context key show_calendar_event_name_with_count is set.

Upgrading from Odoo 19

None.

Change 4 of 19

Appointment page design

EnhancementEnterprise only

Appointment pages have been refreshed with a cleaner, easier-to-use design on both mobile and desktop.

Official Odoo 20 release note

In plain words

The booking page was redesigned: the month calendar now sits in a Date dropdown, time slots are shown in one column of buttons, and the layout works the same on phones and desktops.

Website > /appointment > Tennis Court (phone)On a phone, the Date dropdown opens a compact month calendar; available days are shown as buttons.

Where to find it

  1. Open /appointment/tennis-court-2 on a phone (or a narrow window).

For users

Cleaner booking page on mobile and desktop.

For developers

Slot templates and interactions were rewritten; custom QWeb/JS overrides of the slot page need review.

Upgrading from Odoo 19

Review customizations of appointment slot templates.

Change 5 of 19

Appointment rescheduling

New featureEnterprise only

Reschedule booked appointments in just a few clicks.

Official Odoo 20 release note

In plain words

From the appointment confirmation page, the customer clicks Reschedule, picks a new slot on the booking page and confirms. The same booking is moved; it is not cancelled and rebooked.

Booking confirmation page > RescheduleThe booking page opens in reschedule mode and recalls the current reservation: party of 3 on Sep 28 at 9:00 AM.

Where to find it

  1. Open a booking's confirmation page (link in the booking email).
  2. Click Reschedule.

For users

Customers move their own booking in a few clicks.

For developers

New routes /calendar/<token>/reschedule and /appointment/<id>/submit_reschedule.

Upgrading from Odoo 19

None.

Change 6 of 19

Appointments calendar view

EnhancementEnterprise only

Create bookings and assign resources or users for any appointment type from any schedule calendar view.

Official Odoo 20 release note

In plain words

Clicking an empty slot in any Schedule calendar opens a booking form where you choose the appointment type, then the resources (or the staff member) for it.

Appointments > Schedule > Resource Bookings > CalendarThe new booking form lets you pick the appointment type (Kayak Tour) and then its resources.

Where to find it

  1. Appointments > Schedule > Resource Bookings, switch to Calendar.
  2. Click an empty time slot.

For users

Book any appointment type straight from the Resource Bookings or Staff Bookings calendar.

For developers

The booking quick-create form shows appointment_type_id when no default type is in the context.

Upgrading from Odoo 19

None.

Change 7 of 19

Attendance at a glance

EnhancementEnterprise only

See how many people are expected for each time slot directly in the Gantt view.

Official Odoo 20 release note

In plain words

When you open the bookings of one appointment type, the Gantt view has a Total row. Each time slot shows how many people are booked there, summed from the booked seats.

Appointments > Kayak Tour > Bookings > GanttThe Total row shows 3, 5 and 2 people for the 9 AM, 10 AM and 2 PM slots.

Where to find it

  1. Appointments: open Kayak Tour, click Bookings (Gantt, Day).

For users

See expected attendance per slot at a glance.

For developers

AppointmentBookingGanttRenderer.addTo() sums total_capacity_reserved for the total row.

Upgrading from Odoo 19

None.

Change 8 of 19

Automatic resource assignment

EnhancementEnterprise only

Automatic resource assignment for a booking now accounts for the number of participants.

Official Odoo 20 release note

In plain words

For resource bookings with capacity and automatic assignment, typing the number of people picks resources that fit that group. The chosen resources change if the current ones are too small.

Appointments > Kayak Tour > Bookings > New bookingThe cell clicked was Kayak A (2 seats). Entering 5 people switched the resource to Kayak C (6 seats).

Where to find it

  1. Appointments: Kayak Tour (Assign: Automatically, Group Bookings on), Bookings Gantt.
  2. Click an empty cell on Kayak A, type 5 in people.

For users

No need to work out which table or boat fits a party.

For developers

New onchange _onchange_total_capacity_reserved uses appointment.type._get_resources_for_capacity().

Upgrading from Odoo 19

None.

Change 9 of 19

Availability display

EnhancementCommunity + Enterprise

Availabilities are now displayed accurately in the Gantt and calendar views of appointments across different appointment types, accounting for private events marked as busy.

Official Odoo 20 release note

In plain words

The Gantt and calendar views of bookings grey out the times when staff or resources are not available. Private events marked as busy now count too, even though their details stay hidden.

Appointments > Dental Care > Bookings > GanttMitchell Admin's 1 PM to 2 PM slot is greyed out because of a private event marked as busy.

Where to find it

  1. Create a private event marked Busy for Mitchell Admin (1 PM to 2 PM).
  2. Appointments: Dental Care > Bookings (Gantt, Day).

For users

The schedule shows real availability, including private meetings.

For developers

Unavailability computation in calendar (Community) now includes private busy events; appointment calendar view loads unavailabilities.

Upgrading from Odoo 19

None.

Change 10 of 19

Booking capacity control

New featureEnterprise only

Set a booking limit per time slot to control how many appointments can start at the same time.

Official Odoo 20 release note

In plain words

For resource appointments with capacity, a new Max slot capacity option limits how many guests can start in the same time slot, whatever the number of resources.

Appointments > Kayak Tour > Options"Max slot capacity: Allow up to 3 guests per slot".

Where to find it

  1. Appointments: open a resource type with Group Bookings on.
  2. Options tab: Max slot capacity.

For users

Avoid congestion at check-in by capping arrivals per slot.

For developers

New stored field appointment.type.slot_interval_capacity (0 = no limit).

Upgrading from Odoo 19

New column, default 0: no change in behavior.

Change 11 of 19

Booking shortcuts

EnhancementEnterprise only

Access bookings directly from the Kanban view, with shortcuts opening the most relevant view for bookings awaiting confirmation, upcoming appointments, or today’s schedule.

Official Odoo 20 release note

In plain words

The appointment type cards show counters for bookings to confirm and upcoming bookings. Each counter opens the matching bookings, and clicking the card opens today's schedule.

Appointments > AppointmentsThe Dental Care card: "2 to confirm" and "2 upcoming meetings" are shortcuts to those bookings.

Where to find it

  1. Open the Appointments app (Kanban).

For users

One click from the app dashboard to what needs attention.

For developers

New actions action_calendar_event_view_request and action_calendar_event_view_today.

Upgrading from Odoo 19

None.

Change 12 of 19

Closed days management

EnhancementEnterprise only

Closed days are now easier to manage across the Appointments app.

Official Odoo 20 release note

In plain words

An Add Closing Day button is available in the booking views (Gantt, calendar, list). Closing days are stored as appointment leaves and block bookings for the chosen resources or users.

Appointments > Kayak Tour > BookingsThe Add Closing Day button next to New in the booking Gantt view.

Where to find it

  1. Appointments: open any type, click Bookings.

For users

Add a closing day from the schedule you are looking at.

For developers

Closing days are appointment.leave records ("Closing days for appointments and their users / resources"), with access rules in ir.access.csv.

Upgrading from Odoo 19

None.

Change 13 of 19

Consistent booking page design

EnhancementEnterprise only

Not verified from the Odoo 20 source code. Shown as Odoo published it.

Booking pages now match the Website app’s default styling, even when the Website app is not installed.

Official Odoo 20 release note

In plain words

Not verified from the supplied source code. The booking templates call the Website layout when Website is installed; no commit was found that aligns the plain portal styling with the Website default when Website is absent.

Where to find it

  1. Would require a database without the Website app.

For users

Not verified.

For developers

Not verified.

Upgrading from Odoo 19

None known.

  • Text-only: the test database has Website installed, so a booking page without Website cannot be shown, and no matching commit was found.

Change 14 of 19

Customer feedback

New featureEnterprise only

Request feedback from customers after their appointments.

Official Odoo 20 release note

In plain words

A Feedback Email can be set on an appointment type. A daily scheduled action sends it after the appointment, and the answers are stored as ratings with new reporting views.

Appointments > Kayak Tour > CommunicationFeedback Email set to "Appointment: Feedback Request".

Where to find it

  1. Appointments: open a type, Communication tab.
  2. Set Feedback Email to "Appointment: Feedback Request".

For users

Collect customer feedback automatically; see it under Reporting > Ratings.

For developers

New field feedback_mail_template_id, cron _cron_send_feedback_emails, rating requests sent from calendar events.

Upgrading from Odoo 19

New optional field; empty means no feedback email.

Change 15 of 19

Default party size

EnhancementEnterprise only

For appointments with multiple attendees, the booking flow now preselects two guests by default.

Official Odoo 20 release note

In plain words

On booking pages that manage capacity, the Party size selector starts at 2 instead of 1 when the capacity allows it.

Website > /appointment > Kayak TourParty size is preselected at 2.

Where to find it

  1. Website: open a booking page with Group Bookings on (e.g. Kayak Tour).

For users

One less click for the most common case.

For developers

Controller default for asked capacity is 2 when possible.

Upgrading from Odoo 19

None.

Change 16 of 19

Maximum capacity override

New featureEnterprise only

Manually override an appointment type's maximum capacity when needed.

Official Odoo 20 release note

In plain words

In the backend booking form you can enter more people than the resources or staff can hold. Odoo warns about the missing seats and lets you "Book regardless"; the extra seats stay unassigned.

Appointments > Kayak Tour > Bookings > New bookingThe "Missing Seats" dialog: 14 seats cannot be assigned, with Book regardless or Go back.

Where to find it

  1. Appointments: Kayak Tour > Bookings, click an empty cell.
  2. Enter 20 people and Save.

For users

Accept a larger group when needed, with a clear warning.

For developers

Context key appointment_allow_overbooking lets booking lines without resource be created; new field total_capacity_unassigned.

Upgrading from Odoo 19

Booking lines may now have no resource; custom reports summing per resource should handle them.

Change 17 of 19

Performance improvements

PerformanceEnterprise only

Various performance improvements, including optimized resource and date availability calculations, have made every part of the booking process faster.

Official Odoo 20 release note

In plain words

Slot and availability computation was optimized: resource availability is checked in batch, unavailabilities are computed faster, and the booking page loads one month at a time.

Where to find it

  1. No visible step: speed gain only.

For users

Faster booking pages.

For developers

Availability helpers work on batches; the month-based loading changes the slot controller parameters.

Upgrading from Odoo 19

Review overrides of slot generation methods.

  • Text-only: a performance gain cannot be shown on a screenshot, and no benchmark numbers are claimed.

Change 18 of 19

Web page redesign

EnhancementEnterprise only

Appointment web pages now have a more consistent look and feel with respect to other Odoo web pages. Relevant information is displayed throughout the booking flow for improved clarity.

Official Odoo 20 release note

In plain words

The appointments list page uses cards with location, duration, price and staff avatars, and the booking pages keep a side panel with the key details at every step.

Website > /appointmentThe Online Cooking Lesson card lists the location (Online), duration, price and the staff.

Where to find it

  1. Website: open /appointment.

For users

Clearer choice of appointment and clearer booking steps.

For developers

Card template extracted; list page templates changed.

Upgrading from Odoo 19

Review website customizations of /appointment.

Change 19 of 19

Website editor blocks

EnhancementEnterprise only

Website editor blocks can now be added anywhere on Appointment pages.

Official Odoo 20 release note

In plain words

In the website editor, appointment pages have drop zones at the top, inside the booking column and at the bottom. Blocks dropped there appear on all appointment pages.

Website > /appointment/kayak-tour > EditWhile dragging a block, a drop zone inside the booking column reads "Drag blocks here to add them on all appointments".

Where to find it

  1. Website: open an appointment page, click Edit.
  2. Drag any block over the page.

For users

Add text, images or other blocks around the booking form.

For developers

New oe_structure areas oe_structure_appointments_info_1/2/3.

Upgrading from Odoo 19

None.

See all 585 Odoo 20 changes across 52 apps

Odoo 20 Appointments: common questions

What is new in Odoo 20 Appointments?

The official Odoo 20 release notes list 19 Appointments changes (5 new features, 13 enhancements, 1 performance). They include Accessory products for appointments, Appointment booking flow, Appointment names, Appointment page design and more.

Are the Odoo 20 Appointments changes available in Community edition?

1 of the 19 changes are in Odoo 20 Community (and Enterprise). 18 are Enterprise only. Each change on this page is labeled with its edition.

Do Odoo 20 Appointments changes affect my customizations when upgrading from Odoo 19?

7 of the 19 changes have something to check when upgrading from Odoo 19, for example Appointment booking flow, Appointment page design, Booking capacity control. Each change on this page has an "Upgrading from Odoo 19" note. Test custom modules on a copy of your database before moving production.

How do I upgrade Appointments to Odoo 20?

Restore a copy of your database, run the Odoo 20 upgrade on the copy, fix any custom modules that extend Appointments, then test your main Appointments flows with real users before switching production. iVentureTeam runs Odoo upgrades end to end, including custom module migration and user testing.

Odoo services for this

By industry

More Odoo 20 release notes

Planning your Odoo 20 move

Want these Appointments changes in your database?

We upgrade Odoo databases with their customizations and data intact, and test every custom module against the new version before go-live.