Friday, November 18, 2022 · 4 min read

Powering a scheduling marketplace

Sydney Olejnik
Sydney OlejnikAdministrative Coordinator
Powering a scheduling marketplace

A Scheduling Marketplace: What does it mean? How do we use it?

Cal.com was built to power your scheduling marketplace, but many people get confused when they hear the words “scheduling marketplace.”

What exactly does it mean to power a scheduling marketplace?

The ideal scenario for any company is for a customer to stay on their site and not be redirected to another site for any action. Cal.com’s scheduling infrastructure makes this easy for organizations to accomplish. 

The best way to fully explain how this works is by using an example. 

Let’s say you’ve chosen to use Cal.com’s APIs to power your business’ scheduling marketplace. What does this look like? It all starts when a customer signs up on your brand new platform, which we’re going to call BestDogSitting. When the customer creates an account on BestDogSitting, that account is also created on Cal.com via the API (Single Sign On); the customer can then add their availabilities which are pulled into the Cal.com platform via API, and then they can select the event pages they want. As Cal.com grows and adds more APIs, both sides benefit from the solid infrastructure.

With Cal.com’s scheduling infrastructure, BestDogSitting is also able to build front-end UI components and, using one of our over 40+ API endpoints, send that data to and from the Cal.com platform, thus creating a native scheduling experience for customers without having to rebuild the entire scheduling solution. If there’s anything our team has learned, it’s that scheduling and time zones are extremely tough and take way more work than most engineers realize.

Where did all of this come from? The answer is simple: Lean Hire.

Lean Hire is a hiring marketplace originally created by our CEO, Peer Richelsen. When using Lean Hire, organizations have the option to contract-to-hire as a trial period with their prospective candidates rather than go all in right away. The idea was widely used at OnDeck (where it was eventually acquired) and is still in use as the main way to bring on new team members at Cal.com as well.

With Lean Hire, every time a new user was created, the candidate either had to add their own Calendly link or Peer needed to manually create a new account for them. This wasn't the greatest experience because it took them away from the Lean Hire website, and Peer had no data or control over what was going on at the receiving end.

As he went into problem-solving mode, Peer realized that he needed a scheduling product that could either be fully embedded into the website or have robust APIs to basically automate tasks such as creating a new user, creating event types, creating availabilities, and more.

Ok, that’s interesting, but what does that all mean? 

Fully powering a scheduling marketplace requires strong automation done through APIs. These APIs give the ability to fully create the scheduling experience for companies to appear as native as if they created it on their own.

Cal.com is widely solving this solution. As we continue to grow and add more APIs, our Platform product becomes more powerful, and organizations, in addition, can self-host so they have access to all the data from end to end. Any org can run multiple different types of queries to understand what their users are doing. This is currently not possible with other products and is specific to what Cal.com offers. With Cal, organizations can be totally in control of their data to best serve their needs.

On-Premise

The Platform product is also one of the few on-premise products that is offered. On-premise means that organizations can self-host their data on their own servers. By self-hosting, organizations have full control of their user data. With this holistic control, companies can make use of their user data however they see fit. In addition, this provides much more control and security for them.

This is awesome; how can I use this to benefit my business?  

When you self-host with Cal.com, you create the ability to start taking back control of your data. This is best done through our powerful API endpoints with our Platform product. To lay out some ideas of what can be done, here are some of our most popular API endpoints to date:

API Endpoints [CRUD]:

Attendees

Availabilities

Booking References

Bookings

Custom Inputs

Destination Calendars

Event References

Event Types

Memberships

Payments

Schedules

Selected calendars

Teams

Users

Webhooks

Here are some examples of how to use those API endpoints: 

Event Type API

Our APIs can be customized and forked to fit your exact needs. Below are a few examples of some current and in-use customizations.

To create a new event type, you could do something like the following:

[POST] : htttps://www.example.com/api/v1/event-types?apiKey=1234abcd

Body Raw Parameters:

{

    "userId": 4,

    "title": "Tennis class",

    "slug": "tennis-class-{{$guid}}",

    "length": 60,

    "hidden": false,

    "position": 0,

    "teamId": null,

    "eventName": null,

    "timeZone": null,

    "periodType": "UNLIMITED",

    "periodStartDate": null,

    "periodEndDate": null,

    "periodDays": null,

    "periodCountCalendarDays": null,

    "requiresConfirmation": true,

    "recurringEvent": {

        "interval": 2,

        "count": 10,

        "freq": 2

    },

    "disableGuests": false,

    "hideCalendarNotes": false,

    "minimumBookingNotice": 120,

    "beforeEventBuffer": 0,

    "afterEventBuffer": 0,

    "schedulingType": null,

    "price": 0,

    "currency": "usd",

    "slotInterval": null,

    "successRedirectUrl": null,

    "description": null,

    "locations": [

        {

            "address": "London",

            "type": "inPerson"

        }

    ],

    "metadata": {}

}




To GET all the event types, you could do something like the following:

[GET] : htttps://www.example.com/api/v1/event-types?apiKey=1234abcd

To UPDATE/PATCH an individual event type, you could do something like the following:

[PATCH] : htttps://www.example.com/api/v1/event-types/:id?apiKey=1234abcd

where :id is the event-type ID (numeric)

Body Raw Parameters:

{

    "title": "Football class",

     ...other_changes

}


To DELETE an individual event type, you could do something like the following:

[DELETE] : htttps://www.example.com/api/v1/event-types/:id?apiKey=1234abcd

where :id is the event-type ID (numeric)

To GET an individual event type, you can do something like the following:

[GET] : htttps://www.example.com/api/v1/event-types/:id?apiKey=1234abcd

where :id is the event-type ID (numeric)


Cal.com is the premier scheduling solution that is prioritizing your ability to power a scheduling marketplace. We're here to help you make your organization successful.

Want to get started? Check out our documentation here: https://developer.cal.com/api/quick-start 

Cal.com is now FREE for individuals - sign up here

Related Articles