Combining schedules

One of the most powerful features of SuperSaaS is the ability to combine multiple calendars to create complex scheduling scenarios. For instance:

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 schedules, and it can only connect to “resource” type schedules. (This ability has the trade-off that you cannot create repeating appointments or appointments of variable length on the service schedule.)

Multiple resources are required for one booking

A service often requires one or more resources to be available. For example, the service “massage” could require the resource “therapist” to be available. And the service “Meeting room with projector” could require both one meeting room and one projector to be available. When calculating availability, the system would need to ensure that all required resources are available. For this to work, you create one or more resource type schedules that the service depends on. You can do this before creating the service schedule or afterwards. You can then connect the resource schedule on the page Configure > Services of the service schedule. This tutorial gives a step-by-step example.

All resources can be placed in a single resource schedule, or you can put them in separate 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) then it’s best to place those in the same resource schedule.

Multiple resource are combined for a booking
Multiple resources are required for a single booking

Occupying one resource makes another available

You may need two (or more) resources to be matched. For example, you want a customer to be matched with a sales person. For a trade show you could ask the sales team to sign up on one schedule, which would open up an available slot on another schedule that customers can then book. Another way to do that would be to ask the sales team to create a resource schedule in SuperSaaS that reflects their availability, and then ask customers to book there, but that requires a lot more effort from the sales team.

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, when you configure a service, you can click the ⊗ occupied button and then click the button next to a resource, and it will invert that logic. The service will then only be available if the resource is occupied. Booking that service does not affect the resource marked as “occupied”. Therefore, you would want to prevent the service from being bookable multiple times, for example by also connecting a regular resource in addition to the “occupied” resource.

Booking on one calendar creates availability in another
Booking on one calendar creates availability in another

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 example, you may not want a candidate to choose from a list of interviewers, but rather assign the first one available, or assign one at random.

When you connect a service to a resource schedule with multiple resources, you will see the option to connect to « Any of … » the resources. You can also combine resources across schedules by clicking the or button. On the Configure > Services page of the service schedule you can find an option If multiple resources are available:. You have the option to let the user choose, select a resource at random, or give out the first one available in the order listed on the schedule.

Pooled resources in one schedule
Multiple resources can be presented as a single entity

It’s also possible to combine pooled resources with multiple resources for one booking, explained above. An example would be a group booking for a tour that needs 5 bikes and one guide, where you do not care which guide, nor which specific bikes get selected from the pool. Simply select the « Any of … » option several times.

Single resource, presented as multiple entities

You may want to present different schedules to different audiences 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.

Single resource presented in multiple schedules
A single resource can be presented in multiple schedules

Combine schedules into one view

Sometimes you need more flexibility than the settings of single schedule can provide, in that combining schedules can provide a solution. For example, you may have a scenario where on weekends you need the buffer time 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 would 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 the schedules interact.

Combine schedules into one view
Schedules can be combined into a single view

How schedules interact

When the system checks availability it takes into account if there are conflicting appointments for any of the requested resources, of course. 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 complies with all those constraints including the constraints for each resource that the service depends on.

On the Supervise page, Opening Hours tab, you can find a section on how availability information is applied. If you switch off a constraint there, it is also ignored in dependent services. It includes the option Allow superusers and the administrator to ignore all time constraints and opening hours. This option can be convenient when working with the schedule, but it can make it hard to understand what your users will see, so we recommend you switch it off during setup.

For resources marked as ⊗ “available when occupied”, all constraints, opening hours, and other availability limitations are ignored. The time periods occupied by appointments on those resources are the only thing affecting the availability of the service.

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.

Combining availability via “Logical AND” and “Logical OR”

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.