Combine schedules
One of the most powerful features of SuperSaaS is the ability to combine multiple calendars to create complex scheduling scenarios. For instance:
Use case | combination type |
---|---|
Booking for a treatment requires the availability of both a room and a therapist. This means that the system must ensure that both resources are free at the same time. | Multiple resources are required for one booking |
Assistance can only be booked if a volunteer signed up to help. This ensures that there is always someone available to provide the necessary support. | Occupying one resource makes another available |
There are 20 identical pieces available for rent, but rather than allowing renters to select a specific one, you prefer that they book a piece at random. | Pooled resources, presented as a single entity |
Club allows members to book a tennis court, but also allows walk-in customers. Members could be allowed to book the same court at a lower price or further in advance. | Single resource, presented as multiple entities |
Different constraint on a single day of the week. You can create a separate schedule for that day and then combine it to present the user with a unified week view. | Combine schedules into one view |
Service schedules can use resource schedules
Of the three schedule types in SuperSaaS, the “service” type schedule is the only one that can connect to other “resource” type schedules (This comes with a trade-off because you cannot create repeating appointments or set appointments for different lengths of time on a service schedule).
Multiple resources are required for one booking
A service often requires one or more resources to be available at the same time. To make sure this works, the system checks that all required resources are free before allowing a booking. To set this up, create one or more resource type schedules that the service depends on. You can do this before creating the service schedule or afterwards. Once both are set up, connect the resource schedule by going to Configure > Services in the service schedule. This tutorial gives a step-by-step example.
All resources can be placed in one or separate resource schedules. As a rule, if you have interchangeable resources (for example, you have multiple rooms and the service can be provided in any of them) it’s best to place those in the same resource schedule.

As a variant, it can sometimes be useful to specify that two identical resources are required for one booking. For example, if you have meeting room that can be split into two using dividers. Or you could have a tennis court that can be divided into two pickleball courts. In that case you would specify a separate service for the tennis courts to require two pickleball courts, and also allow those to be reserved separately.
Occupying one resource makes another available
Normally, a service is only available when all connected resources are available, and when a service is booked all connected resources are marked as occupied. However, you can change this behavior when configuring a service. By clicking the
button and then selecting button next to a resource, it will invert that logic. The service will then only be available if the resource is occupied. Booking the service will not affect the availability of that specific “occupied” resource. To prevent the service from being booked multiple times, you may also need to connect a regular “available” resource in addition to the “occupied” resource.
Pooled resources, presented as a single entity
It can be inconvenient, or undesirable, to allow the user to select from a number of similar resources. For instance, instead of letting a candidate choose an interviewer, you may prefer to assign the first available one or select one at random.
When you connect a service to a resource schedule with multiple resources, you will see the option to connect to Configure > Services page of the service schedule you can find an option . With this option you can either let the user choose a resource, select a resource at random, or give out the first one available in the order listed on the schedule.
the resources. You can also combine resources across schedules by clicking the button. On the
Single resource, presented as multiple entities
You can present different schedules to different groups while ensuring that the total number of resources is not overbooked. An example would be a consultant who works in multiple locations and wants to provide a schedule tailored to each location. Each location could have a different price, different services, and different opening hours.
In this case, you would create a resource schedule as the basis and then create one or more service schedules that connect to the same resource schedule. You can define user groups to ensure that users intended for one schedule do not end up on a different one.

Combine schedules into one view
If you need more flexibility than the settings of a single schedule can provide, combining schedules can provide a solution. For instance, on weekends you need the buffer time in between bookings to be different from weekdays, because travel time is different during the weekend. Or you want the limit per user to be different on Fridays to encourage more people to book on that day.
In this case you can create two (or more) resource type schedules, let’s call them “Weekday” and “Weekend” and apply the different constraints to each one. After that you create a service type schedule and define a service to be dependent on “Weekday” or “Weekend”. The result will be a logical combination of the settings on each schedule. See the next section for details on how schedules interact.

How schedules interact
When the system checks availability it takes into account any conflicting appointments for the requested resources. However, there are many other scheduling constraints that you can configure:- Opening hours
- Special days such as holidays
- Limit how long in advance a booking can be made
- Limit appointments per time period or in total
- Ensure a synced Google or Outlook Calendar is available
A time period is only available if it meets all the constraints, including those for each resource the service relies on.
For resources marked as ⊗ “available when occupied”, all constraints, opening hours, and other availability limitations are ignored. The only factor affecting the availability of the service is the time periods when those resources are occupied by appointments.
All other settings on the schedule only apply to bookings made on that particular schedule. For example, only one email reminder is sent, as defined by the confirmation setting on the schedule where the user created the booking. Also, only the price and payment settings apply to the schedule where the appointment was made.
It’s also important to understand the terminology AND and OR in the service definition. For example, if Schedule A is available at 9:00 and 10:00, and Schedule B is available at 10:00 and 11:00 then a service that depends on both Schedule A AND Schedule B would only be available at 10:00. Whereas if a service depends on Schedule A OR Schedule B, then it would be available at 9:00, 10:00 and 11:00.

Triggering notifications in dependent schedules
On the page Configure > Process of the service schedule you can indicate whether an appointment should also trigger notifications and webhooks on any connected schedule. If an appointment affects multiple schedules, then one additional email will be sent for each affected schedule, and one webhook for each affected resource. So an appointment for a trip that reserves Bike 1, Bike 2 and Bike 3, can trigger an email and webhook in the schedule for the trip, and then one more email and three more webhooks in the schedule for the bikes.
If a change on a service schedule moves an appointment from one schedule to another one, only one update event is sent, for the new schedule. It does not trigger an email or webhook on the schedule where the resource was deleted.