November 2, 2023

Embedded Scheduling for Product Teams

BambooHR have recently gone live as the first partner of our new Embedded Scheduler. Their customers can now install Cronofy into their BambooHR instance and get full access to multi-person scheduling linked in real-time to their and their colleagues’ calendars.
4 min read
Profile photo of Adam Bird
Adam Bird
Co-Founder and CEO of Cronofy
Blog post Hero Image

BambooHR have recently gone live as the first partner of our new Embedded Scheduler. Their customers can now install Cronofy into their BambooHR instance and get full access to multi-person scheduling linked in real-time to their and their colleagues’ calendars.

I’m delighted that the team at BambooHR have taken this path. They recognised that building native scheduling into their Hiring module was going to be a significant undertaking. Recruiters schedule interviews in myriad ways, a product team’s nightmare. Far more pragmatic to let the specialist team at Cronofy solve for all of the ways and focus on other more important, differentiating features.

It all started with the API

Of the many hundreds of SaaS applications that Cronofy already powers the scheduling for, over 70 are supporting recruiting workflows. This has given us a front row seat to the challenges product teams face when delivering native interview scheduling to their users.

To date this has been through a white label API. Cronofy provides the infrastructure to connect with calendars securely, maintain data in real-time and provide methods for conducting complex queries to find times for meetings to happen. The product teams at our customers then build the UI, with help from our components, to manage the rules, decide who’s suitable, and allow times to be selected.

Despite us taking on the infrastructure and scheduling calculation burden for our customers, the effort required to support all of their customers scheduling needs can be still be significant. Whilst our Availability API supports multiple group options with the ability to set quotas for numbers of meetings, the integrating application still needs to provide the UI to allow their customers to define their specific version of those rules.

For many product teams, providing a native user experience is paramount. They are prepared to take on the additional effort required in order to maintain that high level of control. Our API stack is deliberately designed to give product teams like this exactly the level of control they want and need.

However, for many teams the priority is on delivering value as quickly as possible. We see a large number of product teams wanting to focus on building differentiating features. For them, something like scheduling is a table-stakes features that should ideally be outsourced.

For this reason we’ve built the Scheduler on top of our existing stack, provided an API and made it embeddable.

First came the Scheduling Assistant

Over the last couple of years, here at Cronofy we’ve been building out our own scheduling assistant app called the Scheduler.

We refer to it as a scheduling assistant because it is designed to work alongside an existing app that manages a business workflow. For example, it extends the scheduling capabilities of recruiting systems like Greenhouse, Lever, SmartRecruiters and SuccessFactors without the recruiter having to leave that software.

Recruiters are both wonderful and terrible to serve from a scheduling perspective. Wonderful because scheduling interviews is such an important part of the role that any improvements can have a significant impact on key KPIs like time to hire. Terrible because scheduling interviews is a messy business involving multiple people with all sorts of demands on their time.

The messiness is where we focused our efforts. Automation is ‘easy’. Happy path scheduling makes for a wonderful demo but rarely survives contact with the real world. Interviewers have jobs, responsibilities, family commitments and sometimes fragile bodies, all of which must be worked around by a recruiter whilst at the same time doing the best by the candidates.

Our solution is a scheduling assistant that, of course, allows for automation but importantly allows for control to be taken by the recruiter when needed. Flexibility to book over blocked, times, chose a specific panel, offer pre-agreed times, all whilst giving the candidate the control to book when suits them. And, most importantly have everything updated back in the recruiting system.

Then we made it embeddable

The design approach to the Scheduler has always been to ultimately allow any developer to embed it into their applications with as little effort as possible. No complex authentication flows. No onerous onboarding process. Just add an npm package to your repo, mark up the appropriate pages and you’ve got scheduling embedded, almost natively, into your application.

We have a rich set of javascript callbacks and webhooks that allow developers to surface latest status information about scheduling processes natively in app. So that they can progressively enhance their implementation as they learn more how their customers are actually scheduling from their app now that they can.

The feedback from early developers using the embed is consistent surprise at how little they have to do in order to get it live. The software contract is a simple one. Embed this component, add some context and Cronofy will return scheduled meetings, in BambooHR’s case these are interviews. How complex it was to craft the rules for who should be involved and when should be considered become Cronofy’s concern.

More to come

With more developers working with the embedded Scheduler and associated APIs I’m looking forward to seeing how many more use cases we can support. For example, we have high touch financial institutions plugging into their internal systems and using it to deliver personalised scheduling for their clients. We also have our existing white label API customers using it as an upgrade path for clients who need more customisable scheduling options than they’ve included natively.

You can find out more about the Embedded Scheduler here. Try it and let us know what you’ve built.