Skip to main content
The event type atom enables a user to create events that others can use to book them. The events can be created for an individual or a team. However, a team event type can only be created by a team admin or owner.

Individual event type

Below code snippet can be used to render the create event type atom, which is a form with all the required input fields needed to create an event type.
For a demonstration of the create event type atom, please refer to the video below.

Team event type

For creating an event type for a team, you need to provide the team id of your particular team as a prop to the create event type atom. Importantly, a team event type can only be created by a managed user who has an accepted admin or owner role within the team. That means you have to create a managed user and then add an accepted membership with an admin or owner role by making a request to the memberships endpoint. Example body:
then you have to pass the access token of this managed user to the CalProvider to then finally be able to use the <CreateEventType /> component while passing teamId={teamId} to it to create a team event type:
For a demonstration of the create event type atom, please refer to the video below.

Below is a list of props that can be passed to the create event type atom

Along with the props, create event type atom accepts custom styles via the customClassNames prop. Below is a list of props that fall under this customClassNames prop.

Individual and team event types take in the same props.

Event type settings

The event type settings contains various tabs that can be used to configure or make modifications to the event type that has just been created. Below code snippet can be used to render the event type settings atom.
To show only specific tabs, remove the ones you don’t want from the array:
If the eventTypeId is of a team event type id, then only the owner or admin of the team can update the event type settings. That means you have to create a managed user and then add an accepted membership with an admin or owner role by making a request to the memberships endpoint. Example body:
then you have to pass the access token of this managed user to the CalProvider to then finally be able to use the <EventTypeSettings /> component while passing id of a team event type enabling admin or owner to edit team event types. For a demonstration of the event type settings atom, please refer to the video below.

Below is a list of props that can be passed to the event type settings atom.

Along with the props, event type settings atom accepts custom styles via the customClassNames prop. Below is a list of props that fall under this customClassNames prop.

Please ensure all custom classnames are valid Tailwind CSS classnames.

Programmatic Form Validation and Submission

The EventTypeSettings component supports programmatic form validation and submission through a ref-based API. This allows you to validate form data and submit forms programmatically without user interaction.

Ref Methods

Callbacks

The handleFormSubmit method accepts an optional callbacks object with the following properties:
  • onSuccess: Called when the form submission is successful. This allows you to execute additional logic after a successful update.
  • onError: Called when an error occurs during form submission. The error parameter contains details about what went wrong, allowing you to handle specific error cases or display custom error messages.
The validateForm method returns an EventTypeFormValidationResult object with:
  • isValid: Boolean indicating if the form passed validation
  • errors: Object containing any validation errors found
Note: If a required field is not filled in, the validateForm method will not return any error. The validation focuses on the format and consistency of provided data rather than enforcing required field completion. Following are the tabs that are available in the event type settings atom:

1. Event Setup The event setup tab allows users to configure the fundamental aspects of their events. In this tab, users can define or update essential details such as the event title, description, duration, slug, location as well as the event URL. Event Setup tab 2. Availability The availability tab allows users to manage their scheduling preferences effectively. Within this tab, users can edit their existing availability or set new availability options based on the preferences they have previously established. User availability For team event types, availability for a specific event can also be configured for the entire team based on a common schedule. Otherwise each host can be assigned their own specific availability based on their schedules. Team availability 3. Assignment The assignment tab is only available for team event types. It lets you configure what kind of scheduling you want to enable for your team event, where you can choose from a collective, round robin or managed event. You can also choose who amongst your team can or cannot attend the event. Assignment tab 4. Limits The limits tab lets you configure how often you can be booked. You can add a lot of configurations via this tab, such as a buffer time before or after the event and a minimum notice period. Also if you want to select how many time a particular event can be booked, or how far in the future the event can be booked that is also possible. Or if you want to limit the event to a specific amount of time, that can also be done via the limits tab. Below video shows a demonstration of the limits tab.

5. Advanced The advanced tab lets you customize your event type with a lot more options. For example, you can set a custom name for the event type that will appear in your calendar, or add questions that will appear on your booking page. Another option would be to add an email verification for the person who is booking the event.
To protect registered Cal.com users from impersonation, email verification is always required when the booker enters an email address that belongs to an existing Cal.com account. This check runs even if email verification is not enabled on the event type.
Below video shows a demonstration of the all the options you get in the advanced tab.

6. Recurring The recurring tab lets you set up a recurring event. You can set up recurring events such as weekly, monthly, yearly, etc, and choose how many times the event should repeat. You can schedule a recurring event for up to 32 occurrences. Recurring tab
Recurring events are currently experimental and causes some issues sometimes when checking for availability. We are working on fixing this.
7. Payments The payments tab lets you accept payments for your events. At the moment we only support payments via Stripe. Payments tab without stripe connected Once you connect your Stripe account, you can set a custom price along with the currency and payment option; which will determine when to charge your customers. Payments tab with stripe connected