Skip to main content
The Booker Embed atom lets you integrate your Cal.com booking page on your website. It’s perfect for those who want to add their booking link to their own site, blog, or app. Attendees would directly see your booking link inside your own webpage like it’s part of your website. You can also heavily customize the embed styling. Using the embed, the entire booking would happen on your website, making it a seamless end-user experience. Below code snippet can be used to render the Booker Embed atom
For a demonstration of the Booker Embed atom, please refer to the video below.

It is also possible to change the booker layout into a week or column view, you just need to pass in the view prop the layout you want to use. The layouts are as follows: MONTH_VIEW, WEEK_VIEW and COLUMN_VIEW. Below code snippet can be used to render the Booker Embed atom with week view
For a demonstration of the Booker Embed atom along with week view, please refer to the video below.

For team events, you need to pass isTeamEvent and teamId prop to the booker along with the other necessary props. The teamId is the ID of the team that owns the event type. Here is an example of how to use the Booker Embed atom for a team event:
We offer all kinds of customizations to the Booker Embed atom via props and customClassNames. Below is a list of props that can be passed to the Booker Embed atom.

Required props vary by usage:
  1. Individual booking: username + eventSlug
  2. Team booking: teamId + isTeamEvent + eventSlug

Styling

Booker Embed atom accepts custom styles via the customClassNames prop. This prop is an object that contains root level styles and nested objects for styling different parts of the booker component. Each nested object groups related styles for a specific section of the booker (e.g., eventMeta, datePicker, availableTimeSlots, etc). Here is an example booker with root level style bookerContainer and nested object datePickerCustomClassNames with datePickerDatesActive style:
Below is a list of customClassNames properties grouped by their parent objects:

Root Level Styles

Event Meta Styles (eventMetaCustomClassNames)

Date Picker Styles (datePickerCustomClassNames)

Available Time Slots Styles (availableTimeSlotsCustomClassNames)

Confirmation Step Styles (confirmStep)

Here is an example with more custom styles:

Rescheduling a booking

The Booker Embed atom also supports rescheduling a booking. To reschedule a booking, you need to pass in the rescheduleUid prop to the booker atom along with the other necessary props. This will allow the booker to display the reschedule form and handle the rescheduling process. The rescheduleUid is the booking uid you get when you create a booking.

Host busy slot indicators

When an authenticated host reschedules their own booking, all time slots are displayed — including those that conflict with existing calendar events. Each slot shows a color-coded dot indicator: green for free and red for busy. This lets hosts intentionally double-book if needed. Guests only see genuinely available slots.
For team events, the host sees their own busy slot indicators but other team members’ availability constraints remain enforced.
Here is an example of how to use the Booker Embed atom for rescheduling an individual event:
For team events, you need to pass isTeamEvent and teamId prop to the booker along with the other necessary props. This will allow the booker to display the reschedule form and handle the rescheduling process. The teamId is the team ID you get when you create a team event. Here is an example of how to use the Booker Embed atom for rescheduling a team event: