Don’t Build Appointment Scheduling Software from Scratch; Integrate with an API

Don’t Build Appointment Scheduling Software from Scratch; Integrate with an API

11 min read

Offering appointment scheduling software within your application not only dramatically boosts your customer’s operational efficiency (saving them 8 hours or more per week), it also reduces churn and increases customer satisfaction. The statistics speak for themselves – 94% of customers would be more likely to choose a new service provider if that provider offered online booking options. 

But as any developer will tell you, building scheduling solutions is incredibly hard. It takes tens of thousands of hours for a talented team of senior engineers to scope the project, test it, build a POC, pursue the security certificates, push the POC live, and maintain the integration(s). Meanwhile, relying on third party scheduling tools can more often than not make for an unfortunate user experience.

From our extensive experience building scheduling APIs, we’ve encountered numbers technical challenges of building scheduling software, includluding:

  • Calendar Connectivity
  • Recurring Events
  • Availability Logic
  • Time Zone Support
  • Event Reminders
  • Building Scheduling UI
  • Race Conditions

Technical Challenges with Building Scheduling Software Yourself

Seemingly simple features like building calendar connectivity and supporting recurring events can actually yield complex technical challenges. As any developer knows, the problem is almost always more complex than it seems on the surface.

Here, we’ll dive into a few of the technical blockers that often prevent developers from building scheduling features as quickly as they would like to.

Connectivity 

When building scheduling capabilities within an application, the first feature you’ll likely need to build is calendar connectivity. Connecting to users’ calendars allows your scheduling software to update with users’ real-time availability, whether they schedule on Google, Microsoft, Apple Calendar, or another service.

This simple step is often underestimated when considering the complexity that exists with being able to connect to every calendar provider used by your customers. Providers such as Google, Microsoft, iCloud, and Yahoo all have similar approaches to how they operate and provide data, but the devil is in the details. 

Building an enterprise-grade scheduling solution requires your app to automatically identify primary calendars (rather than secondary calendars) for booking, incorporating different defaults for each provider. For example, on Office 365, the user’s primary calendar is  Main Cal , and in most iCloud accounts it is Home or a locale-specific synonym. It’s also important to parse provider-specific free/busy event info (including states like Out of Office in Exchange) to correctly understand the user’s availability and present accurate timeslots.

Building a secure authentication process that syncs calendar data instantly without performance degradations is challenging in and of itself, and this is just the beginning of the scheduling software journey.

Recurring Events

Underneath this simple “Repeat” checkbox on a calendar event is a surprising amount of complexity resulting from years of legacy standards with backward compatibility. Recurring events and RRULES introduce a host of technical challenges:

  • When a timezone transitions into or out of daylight savings, repeating events are expected to remain at the same local time. This can cause its share of headaches, especially when you represent datetimes globally in UTC.
  • Given an RRULE, you can figure out when a specific repeating event is going to occur. But what about one-off changes to the event? When a change is made to a specific instance of a repeating event, you get out of RFC territory and into something more like a Calendar Wild West.
  • Google Calendar exposes canceled events as separate, individual events alongside the original repeating events. 
  • The underlying Microsoft Exchange ActiveSync protocol expresses recurrences and exceptions in a completely different format from Google, via WBXML.

Availability Logic 

Meetings are scheduled for a variety of use cases. In the most straightforward case — a one-on-one meeting with one other person — all you need is the organizers’ calendar availability and the attendee’s timeslot preference.

However, the use cases become more complex as soon as you incorporate more than one event owner and invitee. At Nylas, one of our most-used features of Nylas Scheduler (a customizable scheduling tool that allows users to send a link to their calendar, display real-time availability, and book meetings without back-and-forth conversation) is round-robin team booking.

With round-robin booking, a guest selects a time slot from a shared pool of the entire team’s availability and meets with a single team member.  These pages aggregate the availability of many people and accounts.

A basic round-robin implementation might fetch each person’s calendar and aggregate the time slot results synchronously each time the booking page is viewed. In practice, achieving high performance and a reliable booking experience requires:

  • Pre-fetching and caching the availability of the participants to be resilient to downtime and latency spikes in the Google / Office365 / iCloud, etc. APIs, which may affect only a handful of the team’s accounts.
  • Using provider webhooks and event streams (through the Nylas Delta API) to invalidate and re-fetch calendar information as the team’s calendars change, keeping caches up-to-date.
  • Optimizing the aggregation of time slots so that scheduling can be performed for five team members or 50 team members rapidly, ensuring a smooth booking experience.

Further, you’ll likely want to tune the round-robin booking experience with two time slot algorithms that allow you to:

1) Balance the number of meetings assigned to each member of the team, or 

2) Present the maximum number of choices regardless of how the bookings (and workload!) are distributed

Most users expect “round-robin” scheduling pages to distribute work evenly, but also want them to offer time slots to their guests, even if it means giving one user yet another sales call. The optimal solution shows and hides a user’s calendar based on the recency of their last booking and the relative availability of their teammates, ensuring both scenarios are handled gracefully.

Time Zone Support

Building time zone support across each calendar provider presents its own unique set of challenges. Microsoft Exchange, for example, requires you to deduct time zone information by passing you the following data: 

  • The offset from UTC in minutes
  • The date during that calendar year when the time zone transitions to Daylight Saving Time (DST)
  • The date during that calendar year when the time zone transitions to Standard Time
  • The offset during Daylight Saving Time

From this data, you’re meant to derive a simple timestamp to shower the user – which requires some complex engineering logic.

In addition, normalizing for time zones across hemispheres presents its own set of issues. For example, the Southern Hemisphere’s summer is from December to March, and as such they go into DST in November and exit in April of the following year. Even within countries, like the United States, DST is observed in certain states but not in others. Engineers will need to write logic to support all the edge cases across states, countries, and hemispheres.

For full code examples demonstrating these complexities, see our blog on Developing For Time Changes in the Western Soviet Union here

Event Reminders

Reminders about upcoming, rescheduled, and canceled bookings are a core part of any scheduling software. While it might seem straightforward to email the calendar host and guest when a meeting is booked and remind them as the meeting approaches, there are several technical scenarios that applications need to handle to ensure a smooth booking experience:

  • When the participant declines the calendar event, it should notify the host that the meeting has been canceled.
  • When the host moves the event on their calendar, the booking should update accordingly.
  • When the host deletes the event on their calendar, it should notify the guest that the meeting has been canceled if they haven’t already declined.
  • When the guest books in another language, their reminders and emails should use the same language their browser was using during booking.
  • Email delivery or service issues should never result in reminders being delivered after the booking has taken place.

Building Scheduling UI/UX

Scheduling workflows require well-researched and intuitively designed interfaces in order to maximize productivity. The UI/UX must account for each workflow and edge case your users require. 

Simple workflows, like scheduling a single meeting directly from a web page, don’t require a particularly heavy design lift. As you add complexity to workflows, like personalized headshots, on-brand colors, elements, fonts, and more, supporting the vast array of user’s branding guidelines can take more time than you want to dedicate to the visual scheduling experience.

Race Conditions

When two people try to book the same time slot simultaneously, users will get double booked if you don’t implement calendar locking. Calendar providers don’t support locking calendars automatically, so you have to implement instant synchronization to prevent double booking. This is challenging to do in a distributed system without having a negative performance impact to sync speed, and requires coordinating across multiple systems at scale.  

Build Full-Featured Scheduling Software that Connects to 100% of Your User’s Calendars

Nylas’ full-featured appointment scheduling software solution allows you to easily launch appointment scheduling solutions natively in your application.  

The Nylas Scheduler— which pairs a front-end, feature-rich calendar widget with our suite of universal communications APIs— is the fastest way to add full calendar scheduling functionality to your application. Even better, the scheduler is included free-of-charge with your existing Nylas platform subscription – no need to upgrade to more expensive tiers.

Features of the Nylas Scheduler include the Schedule Editor, which makes it easy for your users to create multiple meeting invite types for every use-case; Customizable Themes, which allows users to select their company logo, customize color schemes, and branding elements; White Labeling, so that customers users can design the Nylas Scheduler with custom colors, custom logos, and custom URL and slug; and Round-Robin Scheduler which allows scheduling based upon first availability, or set up rules that auto-route meeting requests between calendars. These features can reduce inefficiencies in your users’ companies by filling gaps in their service schedule. Best of all, it’s possible to launch the Nylas Scheduler in 5 minutes. 

Integrating Zoom Into Your Appointment Scheduling Software

Nylas’ Events endpoint allows you to seamlessly create events and generate Zoom conference links with omni-channel reminders for upcoming meetings via email, SMS, Slack, and/or MS Teams. This not only reduces a tedious business process to a single API request, but it helps you save money and time.  Setting up text reminders is as simple as sending a POST request:

curl -X POST \
  https://api.nylas.com/calendars/events \
  -d '{
    "title": "Your appointment with Dr. Elizabeth Blackwell",
    "when": {
        "start_time": 1577829600,
        "end_time": 1577844000
    },
    "calendar_id": "{calendar_id}",
    "location": "New London School",
    "participants": [         
     { 
            "email": "[email protected]"
     } 
    ],
video_conferencing: { type: "zoom"},
       "reminders": [
            {
                "type": "email",
                "time_before_event": "600",
                "subject": "Don't forget",
                "body": "Reminding you about your appointment",
                "file_ids": [
                    "string"
                ],
                "tracking": {
                    "links": true,
                    "opens": true,
                    "thread_replies": true,
                    "payload": "string"
                }
            },
            {
                "type": "sms",
                "time_before_event": "60",
                "message": "Don't forget!"
            },
            {
                "type": "sms",
                "time_before_event": "300",
                "message": "Don't forget!"
            },
           { 
            "type": "sms",
                "time_before_event": "300",
                "message": "Don't forget!"
          },
      {
                "type": "webhook",
                "time_before_event": "60",
                "url": "https://hooks.slack.com/services/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",
                "payload": "{\"text\" : \"Your Slack reminder goes here!\"}"
            },
      {
                "type": "webhook",
                "time_before_event": "60",
                "url": "https://hooks.teams.com/services/T01A03EEXDE/B01TBNH532R/HubIZu1zog4oYdFqQ8VUcuiW",
                "payload": "{\"text\" : \"Your MS Teams reminder goes here!\"}"
            },

}'   

Appointment reminders can reduce no-show appointments by more than 80%. It’s clear, then, how these features save money, and boost productivity and efficiency by keeping your users in your app for all scheduling needs. 

Build Better Appointment Scheduling Software, Faster with Nylas

Nylas’ APIs make it easy to build appointment scheduling software solutions that integrate with 100% of calendar providers. Our platform of universal calendar APIs comes with pre-built security features that provide a more secure, reliable connection than you’d get integrating with the service providers directly – out of the box, we’re SOC 2 certified, GDPR compliant, Privacy Shield certified and HIPAA and FINRA ready, and we have data centers in the US, EU, and Canada. 

Building your appointment scheduling software with Nylas allows you to build it once in a fraction of the time, then never have to think about the integration again. Sign up and try the API for free today, or schedule time to speak to a platform specialist now.

Related resources

Integrate customer communications in Salesforce with the Nylas Apex SDK

The Nylas Apex SDK gives systems integrators a toolkit to develop email, calendar, and contacts integrations in Salesforce fast.

Introducing Nylas ExtractAI: Sync, filter, and extract structured data from your user’s inbox

Nylas ExtractAI launches today for e-Commerce extraction in five markets, with support for over 30,000+ e-commerce merchants.

9+ best calendar APIs to streamline your scheduling process [2024]

Streamline your app development process with the best calendar APIs for 2024. Explore free and paid options to seamlessly integrate calendar functions.