Add Cal.com's react components to your application

Seamlessly integrate our scheduling atoms into your app with customizable UI components powered by the battle-tested Cal.com infrastructure.

1

// Style Atoms with Javascript

2

3

const appearance = {

4

theme : Custom ,

5

variables : {

6

fontFamily : ' Comic sans ' ,

7

colorPrimary : ' #101010 ' ,

8

colorBackground : ' #ffffff ' ,

9

colorText : ' #374151 ' ,

10

borderRadius : ' 6px ' ,

11

spacingUnit : ' 8px ' ,

12

}

13

} ;

14

const atoms = cal.atoms ( { clientSecret , appearance } ) ;

15

Cédric van Ravesteijn

Partnerships Meeting

Are you an agency, influencer, SaaS founder, or business looking to collaborate with Cal.com? Let's chat!

15m

30m

45m

1h

Cal Video

Europe/Amsterdam

May

2025

SUN

MON

TUE

WED

THU

FRI

SAT

0

15

15

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

0

Cédric van Ravesteijn

Partnerships Meeting

Are you an agency, influencer, SaaS founder, or business looking to collaborate with Cal.com? Let's chat!

15m

30m

45m

1h

Cal Video

Europe/Amsterdam

May

2025

SUN

MON

TUE

WED

THU

FRI

SAT

0

15

15

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

0

Trusted by fast-growing companies around the world

Trusted by fast-growing companies around the world

Trusted by fast-growing companies around the world

Customizable components for any scheduling workflow

Use our developer suite of atomic UI components to connect to various calendars, set availabilities, collect guest information and schedule appointments.

Connect to any calendar

Reads your availability from Google Calendars ensuring you never get double booked.

import { Connect } from "@calcom/atoms";

export default function Connect() {
  return (
      <>
        <Connect.GoogleCalendar isMultiCalendar={true} />
        <Connect.OutlookCalendar isMultiCalendar={true} />
        <Connect.AppleCalendar isMultiCalendar={true} />
      </>
  )
}

Availability

Set repeating schedules for the times of the day and week that you want people to be able to book.

import { AvailabilitySettings } from "@calcom/atoms"

export default Availability = () => {
  return (
    <AvailabilitySettings
      enableOverrides={true}
      customClassNames={{
        subtitlesClassName: "text-gray",
        editableHeadingClassName: "font-bold",      
      }}
    />
  );
}

Create event type

Easily create individual and team event types.

import { CreateEventType } from "@calcom/atoms";

export default function EventType() {
  return (
    <>
      <CreateEventType
        onSuccess={(eventType) => {
          console.log("EventType created successfully", eventType);
        }}
        customClassNames={{
          atomsWrapper: "border p-6 rounded-md",
          buttons: { submit: "bg-green-500", cancel: "bg-gray-300" },
        }}
      />
    </>
  )
}

Event type settings

Manage your event types and their settings.

import { EventTypeSettings } from "@calcom/atoms";  

export function EventTypeTabs(eventTypeId: number) {      
  return (
    <>
      <EventTypeSettings
        id={eventTypeId}
        allowDelete={false}
        onSuccess={(eventType) => {
          console.log("EventType settings updated successfully", eventType);
        }}
      />
    </>
  );
}

Calendar settings

Manage your calendar settings.

import { EventTypeSettings } from "@calcom/atoms";  

export function EventTypeTabs(eventTypeId: number) {      
  return (
    <>
      <EventTypeSettings
        id={eventTypeId}
        allowDelete={false}
        onSuccess={(eventType) => {
          console.log("EventType settings updated successfully", eventType);
        }}
      />
    </>
  );
}

Booking form

Completely customizable booking forms.

import { Booker } from "@calcom/atoms";

export default function Booker( props : BookerProps ) {
  return (
    <>
      <Booker
        eventSlug={props.eventTypeSlug}
        username={props.calUsername}
        onCreateBookingSuccess={() => {
          console.log("booking created successfully");
         }}
      />
    </>
  )
}

Get started with Cal Atoms

Start integrating a fully compliant scheduling workflow with only a few lines of code.

01

Integrate

For now Cal Atoms can be used with react.js. Once installed, you can use the components in your client-side application.

1

import { CalProvider , Booker } from "@calcom/atoms" ;

2

3

export default function App ( ) {

4

return (

5

<CalProvider accessToken= "30AadwEContactSalesToGetAKey42069" >

6

<Booker username= "jane-doe" eventSlug= "weekly-sync" />

7

</CalProvider>

8

) ;

9

}

10

02

Customize

Each Atom can be fully configured to match your brand.

Primary color

Text color

Background

FFFFFF

E6E7E4

Text color

242424

FFFFFF

03

Collect

Once your Atom has been integrated and styled, you can start accepting bookings!

Secure, compliant and fully customizable

Cal atoms were designed to simplify the process of building compliant scheduling workflows. They're flexible, secure and fully compliant under HIPAA, etc.

Fully compliant and secure

Cal atoms are fully compliant with standards like HIPAA, SOC2 and GDPR.

Infinitely customizable

Choose the Atoms you need and match them to the look and feel of your site with CSS-level styling.

Easy integration

Cal Atoms simplifies the integration process, allowing developers to seamlessly add powerful scheduling capabilities within hours, not weeks.

Multiple components

Whether you're taking guest information or payment details, there's an Atom for it.

Reliable and scalable

Cal Atoms are built on the rock-solid scheduling foundation of Cal.com. We've scheduled millions of bookings to date.

Translation support

Support multiple languages by passing a translations object to any Cal Atoms.

Fundamentally configurable

Configure errors, breakpoints and loading states using a simple API.

Developer friendly

Cal.com was built by developers, for developers. Our comprehensive docs and developer resources make integration a breeze.

The power of customizability without the pain of self-hosting

Cal Atoms can fit an almost unlimited number of use cases. Below are just some of the most common.

Plug & play components

We'll focus on timezone problems, so you can focus on building the parts of your business that deliver value to your customers.