Real-Time Scheduling

Required plan: Emerging

When creating events, it is helpful to know when people are available before booking meetings into their calendars. Conventionally, this involves a lot of back and forth between the organizer and the attendees and wastes time that could best be used elsewhere.

We built our Availability engine to solve this problem, as we wanted to enable access to real-time booking options. There are many use cases that would benefit from our solution, which removes the evergrowing email threads or manual calendar checking. Here are some of the most common examples:

  1. Labor marketplaces wanting to understand who is available for a booking.
  2. Hiring managers wanting to know when members of an interview panel are available to see a candidate.
  3. HR Teams booking training sessions for new employees.
  4. Team leaders booking one-to-one catch ups.
  5. Healthcare appointments.
  6. Face to face consultations.

The Cronofy Real-Time Scheduling service - built on top of our Availability engine - delivers this for any application, allowing quick and easy scheduling for all parties involved. You can generate branded, self-serve booking links that attend to all your scheduling needs.

So what can a user expect from this experience?

The User Experience #

After a Real-Time Scheduling link is generated, the link can be sent to an attendee in the way the organizer sees best. This can be through email, text, or any other means of communication.

Once they are in possession of the link and they open it in a web browser they will be guided through the selection process where first they select a day, and then a specific time on that day.

These times made available to them have already been queried within the relevant participant’s calendars to be certain there is free space offered to the recipient. We will not offer busy booked in time unless asked otherwise.

Once they have selected the date and time, a web hook call is sent to the generating application with the details of the chosen option. These details will then be added to the indicated target calendars chosen when generating the link

To summarise #

  1. A link is created within the organizing application.
  2. That link is sent to the recipient through the best method decided by the organizer.
  3. The recipient opens the link and is given an option of days based on the availability of the relevant participants.
  4. Once a day is selected they will be given an option of times.
  5. After the recipient selects a time a web hook call alerts the application with the details of the chosen option.
  6. The application uploads the event details into the target calendars.

As with all of our API calls we have a detailed reference doc that talks you through all the elements, optional parameters, and potential use cases. Below will be a brief overview of the power of the feature and explain just how customisable the call can be.

  "oauth": {
    "redirect_uri": "{REDIRECT_URI}",
  "event": {
    "event_id": "qTtZdczOccgaPncGJaCiLg",
    "summary": "Product Manager Interview at Globex",
  "availability": {
    "participants": [{
      "members": [{
        "sub": "acc_5ba21743f408617d1269ea1e",
        "calendar_ids": ["cal_n23kjnwrw2_jsdfjksn234"]
      "required": "all"
    "required_duration": { "minutes": 60 },
    "query_periods": [{
      "start": "2017-07-17T09:00:00Z",
      "end": "2017-07-17T18:00:00Z"
  "target_calendars": [{
    "sub": "acc_5ba21743f408617d1269ea1e",
    "calendar_id": "cal_n23kjnwrw2_jsdfjksn234",
     "event": {
        "conferencing": {
          "profile_id": "pro_YABpIfWqk4wjcW5t"
  "callback_url": "",
  "tzid": "Europe/London"

Once this call has been made, it will return a URL that encapsulates all this information into a booking link that can be forwarded to the recipient. That response will look a little something like this:

  "real_time_scheduling": {
    "real_time_scheduling_id": "sch_64b1859e8090ea21640c915f",
    "url": ""

Notes #

Taking each section in turn:

event  #
  • “event” allows you to edit the details of the event such as the "event_id" and "summary". This is a template and will be created in all the “participants” calendars.
availability  #
  • The Real-Time Scheduling service is built on top of our Availability engine. This means that any availability query with any supported combination of participants can be used to generate booking links.

    • Here you can include the "participants" using their sub (account ID) given to you when creating their account. The account ID will look like this: acc_5ba21743f408617d1269ea1e
    • The "required" parameter allows you to select the minimum number of participants required for the slot to be shown as available. It is currently set to "all", therefore everyone who’s availability we are querying needs to be available.
    • The "required duration" of the event is how long you want the event to be. When querying the participants availability it will only show slots to the recipient if the participants have that amount of time free.
    • "query_period" is the range of time you want to poll for availability
target_calendars  #
  • "target calendars" is a little different to participants. It confirms which calendars you want the event to be uploaded too. This is a useful tool if the participants have multiple calendars for different parts of their scheduling life such as a family calendar or an interview calendar.
  • "event" parameter overrides the event template used when the account is selected as the organizer of the event. This can only be used, and only allowed, when event_creation is set to single.
  • "conferencing" allows you to override the conferencing for the event on a per-organizer basis. This lets you have multiple potential event organizers, each with their own personal conferencing profile. The format follows the format used when specifying conferencing on an event.
callback_url  #
  • This is the URL the Cronofy API will use to send a webhook to when a booking slot is chosen and will contain all of the information about the event that’s been created.

You can find more in-depth documentation about the parameters used on the Real-Time Scheduling API reference.