chore: moved /help to github.com/calcom/help (#19554)
@@ -1,20 +0,0 @@
|
||||
---
|
||||
title: "Adding your first app"
|
||||
---
|
||||
|
||||
Head over to the **apps** page, where you'll find our app store. We suggest firstly adding a calendar integration, then optionally a video conferencing platform, and then try out the other apps.
|
||||
|
||||
<Frame>
|
||||
<iframe width="100%" height="100%" src="https://www.youtube.com/embed/V6mwvgcAxi0?si=SIdKJt4JyWTZXba4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</Frame>
|
||||
|
||||
Find the app you'd like to install, and either click **Install** in the top right of that app's card to add it right away, or click on the app's card to view more details.
|
||||
|
||||
In the details page you can read more about each app, then click **Install** in the top right of the page to add it to your account.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1599x929-tUttNKwBum0Z_p1vwkt.png"
|
||||
legend="The app details page for Google calendar" />
|
||||
</Frame>
|
||||
|
||||
If the app requires authentication, for instance to connect your Google Account, a dialog will be opened prompting you to authenticate. Once complete, the app will be successfully installed.
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
title: "App Store"
|
||||
---
|
||||
|
||||
The whole idea behind Cal.com is to make scheduling easy, we want it to be an effortless process, and we want everybody to be able to access it.
|
||||
|
||||
With this in mind, we built an app store. Our apps let you extend cal.com features, and makes integrating other services effortless. This makes it easy to customize your cal.com experience. Apps can be used to do things like add extra calendar connections or host a virtual team-building session.
|
||||
|
||||
The Cal app store also makes it easy to coordinate things like podcast production, twitch streaming, and CMS outreach. With Cal.com, calendar scheduling is simple, effortless and whenever you need it to be fun.
|
||||
|
||||
Currently, we have 45+ apps in our app store which can assist you in your scheduling experience, from Calendar apps to Automation apps. You can use the built-in search bar to look for the app quickly if you'd prefer that.
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
title: "Apps"
|
||||
---
|
||||
|
||||
Apps are extensions within Cal.com that extend the functionality of the software. Most commonly, apps are integrations with various calendar providers, video conferencing software and other platforms. However, apps also provide the ability to add extra features to the software, such as the _Wipe my cal_ app which offers the ability to mass-reschedule your entire day. Check out the Cal.com [app store](https://cal.com/apps) now
|
||||
|
||||
<Note>
|
||||
**Looking to build an app for Cal.com?** Check out our [guide](https://cal.com/docs/how-to-guides/how-to-build-an-app) for more information on building an app for our app store.
|
||||
</Note>
|
||||
|
||||
Clicking **Apps** in the sidebar will take you to the app store, which is the marketplace to find and install apps. They are divided into categories which you can browse through.
|
||||
|
||||
You can click on any app's card to view the detailed view, which gives you a description for the app, as well as additional information about it. If you want to install it, simply hit the **Install** button and it will be added. If the app requires authentication, for instance to connect your Google Account, a dialog will be opened prompting you to authenticate. Once complete, the app will be successfully installed.
|
||||
|
||||
Clicking on **Installed apps** in the sidebar takes you to a page detailing which apps you have installed and any relevant settings for them. Here, you can do things like enabling and disabling certain calendars, adding webhooks, uninstalling apps and more.
|
||||
@@ -1,33 +0,0 @@
|
||||
---
|
||||
title: Assign people to a call from a CRM or database
|
||||
---
|
||||
|
||||
## Option #1 Based on CRM integration
|
||||
|
||||
If you are working with a CRM such as Salesforce, Hubspot, Close.com or similar, you can use our integrations to connect to your apps.
|
||||
|
||||
We're using the Assignee APIs from each service to understand which person is assigned to an email of a new lead.
|
||||
|
||||
By prefilling your booking link with ?email=[name@acme.com](https://cal.com/help/en/articles/) our integration will look up who has spoken to [name@acme.com](https://cal.com/help/en/articles/) before and skip all round-robin logic.
|
||||
|
||||
Here is an example URL: i.cal.com/sales/exploration?email=[name@acme.com](https://cal.com/help/en/articles/)
|
||||
|
||||
This works with Embeds as well, just add the parameter to your CalLink property.
|
||||
|
||||
## Option #2 Based on Emails
|
||||
|
||||
If you are using a different product that we don't integrate with, or you need something more custom you can also achieve this with our Organization plan.
|
||||
|
||||
We've built our Organization system in a way where every email can be turned into a scheduling link with your company subdomain:
|
||||
|
||||
[jane@acme.com](https://cal.com/help/en/articles/) → acme.cal.com/jane (or schedule.acme.com/jane)
|
||||
|
||||
This means if you have a table:
|
||||
| **User** | **AccountExecutive** |
|
||||
| --- | --- |
|
||||
| [peer@cal.com](https://cal.com/help/en/articles/) | [jane@acme.com](https://cal.com/help/en/articles/) |
|
||||
|
||||
You could show [peer@cal.com](https://cal.com/help/en/articles/) an embed inside your application simply by using the value from AccountExecutive to build the link:
|
||||
|
||||
[jane@acme.com](https://cal.com/help/en/articles/) → acme.cal.com/jane either with a string replace function or a simple regex.
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: "How to Cal.com with Attio"
|
||||
---
|
||||
|
||||
To use Cal.com with Attio, you only need two things:
|
||||
|
||||
1. You need to have an account on both platforms
|
||||
2. You need to connect Google Calendar to Attio
|
||||
3. You need to connect Google Calendar to Cal.com
|
||||
@@ -1,78 +0,0 @@
|
||||
---
|
||||
title: "Build a greeter app"
|
||||
---
|
||||
|
||||
## Building a **Greeter** app
|
||||
|
||||
**Step 1:** Create an app with the title "**Greeter".** Run the following command and provide the information it is looking for.
|
||||
|
||||
```
|
||||
yarn app-store create
|
||||
```
|
||||
|
||||
<Frame>
|
||||
<iframe src="https://www.loom.com/embed/b0fd31cc11444799af7a6f12a01d4321" width="100%" height="100%" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</Frame>
|
||||
|
||||
**Step 2:** App is created now. Go and install it.
|
||||
|
||||
**Step 3:** The app is installed but it doesn't do anything because we haven't written any code to make it do something. Let's add a button in the main navigation that greets the user
|
||||
|
||||
1. Create a component `greeter/components/GreeterButton.tsx` - You can name it whatever you want.
|
||||
|
||||
2. Import this component in `Shell.tsx` and add it wherever you want to so that the button is available on all pages.
|
||||
|
||||
```js
|
||||
/**
|
||||
* GreeterButton.tsx
|
||||
* It creates a button that can be added anywhere. The button is visible only if the app is installed.
|
||||
*/
|
||||
import useApp from "@calcom/lib/hooks/useApp";
|
||||
import showToast from "@calcom/lib/notification";
|
||||
import { Button } from "@calcom/ui";
|
||||
|
||||
import useMeQuery from "@lib/hooks/useMeQuery";
|
||||
|
||||
export default function GreeterButton() {
|
||||
const { data: user } = useMeQuery();
|
||||
const { data: greeterApp } = useApp("greeter");
|
||||
// Make sure that greeterApp is installed. We shouldn't show the button when app is not installed
|
||||
if (!user || !greeterApp) {
|
||||
return null;
|
||||
}
|
||||
return (
|
||||
<Button
|
||||
onClick={() => {
|
||||
showToast("Hello, " + user.name, "success");
|
||||
}}
|
||||
>
|
||||
Greet Me!
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
```;
|
||||
/**
|
||||
* Shell.tsx
|
||||
*/
|
||||
// ...
|
||||
import GreeterButton from "@calcom/app-store/greeter/components/GreeterButton";
|
||||
// ...
|
||||
|
||||
<GreeterButton />;
|
||||
```
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1280x250-dXnl-QuzSMbl_xydd9y.png" />
|
||||
</Frame>
|
||||
|
||||
A sample line where I used the component in the demo
|
||||
|
||||
<Frame>
|
||||
<iframe src="https://www.loom.com/embed/b0fd31cc11444799af7a6f12a01d4321" width="100%" height="100%" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</Frame>
|
||||
|
||||
|
||||
|
||||
That's it. You now have a fully functional Greeter app. This is the simplest possible demonstration of how you can build an app and what it can do. There are simply no restrictions on what an app can achieve.
|
||||
@@ -1,80 +0,0 @@
|
||||
---
|
||||
title: "How to build an app"
|
||||
---
|
||||
|
||||
Since Cal.com is open source we encourage developers to create new apps for others to use. This guide is to help you get started.
|
||||
|
||||
You can create an app by simply running the following command. It creates a new directory under [`packages/app-store/`](https://github.com/calcom/cal.com/tree/main/packages/app-store)``
|
||||
|
||||
```
|
||||
yarn create-app
|
||||
```
|
||||
|
||||
You just need to provide a few inputs and then you will have your app created within a few seconds. [See, how you can build a very simple app that greets your users.]()
|
||||
|
||||
### Steps in creating an app
|
||||
|
||||
* Create the app using the `create-app` command
|
||||
* The app can be installed now. But at this moment it isn't doing anything. It is just installed and ready to do what you want it to do.
|
||||
* There is pretty much no restriction on what an App can do. Some of the examples are:
|
||||
* Hooking into existing functionalities to enhance them - _In all these cases you need to first check if the app is installed or not. There is_ `_useApp(appSlug)_` _react hook to do that. It gives you the app details if the app is installed._
|
||||
* Apps that need to connect with third parties like Google Calendar, Apple Calendar, Google Meet.
|
||||
* A super powerful app that has its own data and pages - [Routing Forms App](https://github.com/calcom/cal.com/tree/main/packages/app-store/ee/routing_forms) is a great example of this.
|
||||
* There are so many powerful apps already in the [App Store](https://app.cal.com/apps) for time. You can get an idea of what the apps can do from it.
|
||||
|
||||
### Structure
|
||||
|
||||
All apps can be found under [`packages/app-store`](https://github.com/calcom/cal.com/tree/main/packages/app-store). In this folder is `_baseApp` which shows the general structure of an app.
|
||||
|
||||
```
|
||||
├──_example
|
||||
| ├──config.json -> Autogenerated by cli. You are free to edit it.
|
||||
| ├──api
|
||||
| | ├──add.ts -> Autogenerated by cli. You would want to edit it if your app needs to connect with a third party
|
||||
|
|
||||
| ├──components
|
||||
|
|
||||
| ├──static -> Add all static assets here
|
||||
| | ├──icon.svg -> This is used as the logo for your App.
|
||||
|
||||
| ├──index.ts
|
||||
| ├──package.json
|
||||
| ├──.env.example -> Specify the environmental variables (ex. auth token, API secrets) that your app will need if it's applicable
|
||||
| ├──README.mdx -> Customize your app description. You can add an image slider as well.
|
||||
```
|
||||
|
||||
### Other Commands
|
||||
|
||||
**Deleting an app:**
|
||||
|
||||
```
|
||||
yarn app-store delete --slug APP_NAME
|
||||
```
|
||||
|
||||
**Editing an app:**
|
||||
|
||||
```
|
||||
yarn app-store edit --slug APP_NAME
|
||||
```
|
||||
|
||||
### Important Points
|
||||
|
||||
* Make sure to have `yarn app-store:watch` command running when developing an app so that autogenerated files are always up to date.
|
||||
|
||||
* If app-store cli fails at this step, try to run this command manually first. Solve that problem and then re-run cli. The command can fail because there are Prisma migrations that can't be applied automatically.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1600x120-WfEdMhsOOLSg_sitk6a.png" />
|
||||
</Frame>
|
||||
|
||||
A sample failure in create command
|
||||
|
||||
* When you edit an app following things aren't updated.
|
||||
|
||||
* README.mdx - It would still have the old description. Feel free to edit it manually.
|
||||
|
||||
### Publishing Your App to the Cal.com App Store
|
||||
|
||||
Once your app is working in your environment, you can publish it to Cal.com App Store by opening a PR [here](https://github.com/calcom/cal.com).
|
||||
|
||||
If you need any help feel free to join us on [Discord](https://go.cal.com/discord).
|
||||
@@ -1,72 +0,0 @@
|
||||
---
|
||||
title: "How to use OAuth to authorize apps with cal.com accounts"
|
||||
---
|
||||
|
||||
As an example, you can view our OAuth flow in action on Zapier. Try to connect your cal.com account [here](https://zapier.com/apps/calcom/integrations).
|
||||
To enable OAuth in one of your apps, you will need a Client ID, Client Secret, Authorization URL, Access Token Request URL, and Refresh Token Request URL.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/oauth-zapier.png" />
|
||||
</Frame>
|
||||
|
||||
### OAuth Client Credentials
|
||||
Only the cal.com team can create new OAuth clients. Please contact us at [support@cal.com](mailto:support@cal.com) with the following details: client name, redirect URI (provided by the app), app logo, and a link to the app.
|
||||
|
||||
The Cal.com team will register the app and provide you with the Client ID and Client Secret. Keep these credentials confidential and secure.
|
||||
|
||||
### Authorization URL
|
||||
To initiate the OAuth flow, direct users to the following authorization URL:
|
||||
- `https://app.cal.com/auth/oauth2/authorize`
|
||||
- URL Parameters:
|
||||
- *client_id*
|
||||
- *state*: A securely generated random string to mitigate CSRF attacks
|
||||
- *redirect_uri*: This is where users will be redirected after authorization
|
||||
- *scope*: Specify the required scopes. Current scopes include READ_BOOKING and READ_PROFILE. Additional scopes can be added as needed.
|
||||
|
||||
After users click *Allow*, they will be redirected to the redirect_uri with the code (authorization code) and state as URL parameters.
|
||||
|
||||
### Access Token Request
|
||||
Endpoint: `POST https://app.cal.com/api/auth/oauth/token`
|
||||
|
||||
Request Body:
|
||||
- *code*: The authorization code received in the redirect URI
|
||||
- *client_id*
|
||||
- *client_secret*
|
||||
- *grant_type*: "authorization_code"
|
||||
- *redirect_uri*
|
||||
|
||||
Response:
|
||||
```
|
||||
{
|
||||
access_token: “exampleAccessToken”
|
||||
refresh_token: “exampleRefreshToken”
|
||||
}
|
||||
```
|
||||
|
||||
### Refresh Token Request
|
||||
Endpoint: `POST https://app.cal.com/api/auth/oauth/refreshToken`
|
||||
|
||||
Request Body:
|
||||
- *grant_type*: "refresh_token"
|
||||
- *client_id*
|
||||
- *client_secret*
|
||||
|
||||
Response:
|
||||
```
|
||||
{
|
||||
access_token: “exampleAccessToken”
|
||||
}
|
||||
```
|
||||
|
||||
### Testing OAuth Credentials
|
||||
To verify the correct setup and functionality of OAuth credentials you can use the following endpoint:
|
||||
`GET https://app.cal.com/api/auth/oauth/me`
|
||||
|
||||
Headers:
|
||||
- Authorization: Bearer *exampleAccessToken*
|
||||
|
||||
|
||||
### Authorize requests with Bearer token
|
||||
Ensure that Cal.com endpoints accessed by the app support authentication via Bearer Token.
|
||||
If this is not the case, it will be necessary to update the code accordingly.
|
||||
Here is an example of an endpoint that supports both apiKey and Bearer token authentication: [/listBookings endpoint](https://github.com/calcom/cal.com/blob/main/packages/app-store/zapier/api/subscriptions/listBookings.ts)
|
||||
@@ -1,35 +0,0 @@
|
||||
---
|
||||
title: "How to use open-source scheduling infrastructure with HubSpot"
|
||||
---
|
||||
|
||||
To use Cal.com with HubSpot, you only need two things:
|
||||
|
||||
1. You need to have an account on both platforms
|
||||
|
||||
2. You'll need to go to the [HubSpot app page](https://app.cal.com/apps/hubspot) and click the "Install" button ⬇
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1599x807-x2DRUUT-DkbF_yljih9.png" />
|
||||
</Frame>
|
||||
|
||||
|
||||
|
||||
3. After clicking the "Install" button, you will need to select the HubSpot account you want to use Cal.com with⬇
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1600x1287-XKGU-PMvAkrB_zq004d.png" />
|
||||
</Frame>
|
||||
|
||||
|
||||
4. Then, you will need to give the listed permissions to Cal.com clicking the button "Connect app" in order to manage certain aspects of your account, in order to provide you with the functionality you are looking for. By the way, we are making our app official with HubSpot, so you will not be seeing the warning very soon ⬇
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1600x1253-8BQ3KGqrqGTp_xrhqzd.png" />
|
||||
</Frame>
|
||||
|
||||
|
||||
5. Done! You will be redirected to Cal.com Installed Apps showing your newly installed app ready for you to take advantage of ⬇
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1600x813-fFKsveiL2GuM_wk8cv1.png" />
|
||||
</Frame>
|
||||
@@ -1,44 +0,0 @@
|
||||
---
|
||||
title: "How to sync third party apps with a self-hosted Cal.com instance"
|
||||
---
|
||||
|
||||
1. Add the required variables in your `.env` file
|
||||
1. `CALCOM_WEBHOOK_SECRET`
|
||||
1. You can generate this by running `openssl rand -base64 32`. This is required when sending 3rd party app credentials from your platform to your instance of Cal.com.
|
||||
2. On your self-hosted instance of Cal.com visit settings/admin/apps under an admin account. Here you can enable/disable apps on Cal.com and set the app keys (client id, client secret, etc.). These keys should match the ones on your platform.
|
||||
3. `CALCOM_WEBHOOK_HEADER_NAME`
|
||||
1. The header name is expected to contain the webhook secret. The default is `calcom-webhook-secret`
|
||||
5. `CALCOM_CREDENTIAL_SYNC_ENDPOINT`
|
||||
1. The endpoint on your platform that your instance of [Cal.com](http://Cal.com) will make a request to if the 3rd party app credentials are expired.
|
||||
5. `CALCOM_APP_CREDENTIAL_ENCRYPTION_KEY`
|
||||
1. When sending 3rd party app credentials between your platform and your instance Cal.com, we expect these to be encrypted using AES256. When you encrypt the 3rd party app credentials, ensure the same key is used.
|
||||
2. When a user adds a 3rd party app on your platform, you should send the credentials that are created to your instance of [Cal.com](http://Cal.com) to `${CALCOM_WEBAPP_URL}/api/webhook/app-credential` . The payload should contain the following
|
||||
|
||||
```javascript
|
||||
{
|
||||
// UserId of the Cal.com user
|
||||
userId: number;
|
||||
|
||||
// The app slug that is on Cal.com.
|
||||
// Can be found in the Cal.com database in the App table
|
||||
appSlug: string;
|
||||
|
||||
// The credentials from the 3rd party app. (ex. Access token, refresh token).
|
||||
// Ideally it should contain the access token and expiry date
|
||||
// AES256 encrypted with CALCOM_APP_CREDENTIAL_ENCRYPTION_KEY
|
||||
keys: string;
|
||||
}
|
||||
```
|
||||
3. When [Cal.com](http://Cal.com) needs to refresh the app credentials it will make a request to `CALCOM_CREDENTIAL_SYNC_ENDPOINT`. The request contains the following.
|
||||
|
||||
```javascript
|
||||
{
|
||||
calcomUserId: string;
|
||||
// App slug on Cal.com
|
||||
appSlug: string;
|
||||
}
|
||||
```
|
||||
|
||||
<Note>
|
||||
This only works if you have integrated [Cal.com](http://cal.com/) into your platform. Users **must** consent to give access to your platform, and you are simply using [Cal.com](http://cal.com/)'s code within your platform.
|
||||
</Note>
|
||||
@@ -1,186 +0,0 @@
|
||||
---
|
||||
title: "Webhooks"
|
||||
---
|
||||
|
||||
Webhooks offer a great way to automate the flow with other apps when invitees schedule, cancel or reschedule events, or when the meeting ends.
|
||||
|
||||
<Frame>
|
||||
<iframe width="100%" height="100%" src="https://www.youtube.com/embed/Yy9me5E09LA?si=bhjQfHegY-ImFQYH" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />
|
||||
</Frame>
|
||||
|
||||
The webhook subscription allows you to listen to specific trigger events, such as when a booking has been scheduled, for example. You can always listen to the webhook by providing a custom subscriber URL with your own development work. However, if you wish to trigger automations without any development work, you can use the integration with Zapier which connects Cal.com to your apps.
|
||||
|
||||
<Note>
|
||||
Please note that the webhooks can be associated with user as well as individual event types, including team event types.
|
||||
</Note>
|
||||
|
||||
### Creating a webhook subscription
|
||||
|
||||
To create a new webhook subscription, visit `/settings/developer/webhooks` and proceed to enter the following details:
|
||||
|
||||
1. Subscriber URL: The listener URL where the payload will be sent to, when an event trigger is triggered.
|
||||
|
||||
2. Event triggers: You can decide which triggers specifically to listen to. Currently, we offer listening to `Booking Cancelled`, `Booking Created`, `Booking Rescheduled`, `Booking Rejected`, `Booking Requested`, `Booking Payment Initiated`, `Booking Paid`, `Meeting Started`, `Recording Ready`, `Form Submitted`, `Meeting Ended` and `Instant Meeting Created`.
|
||||
|
||||
3. Secret: You can provide a secret key with this webhook and then [verify it](/docs/core-features/webhooks#verifying-the-authenticity-of-the-received-payload) on the subscriber URL when receiving a payload to confirm if the payload is authentic or adulterated. You can leave it blank, if you don't wish to secure the webhook with a secret key.
|
||||
|
||||
4. Custom Payload: You have the option to [customize the payload](/docs/core-features/webhooks#adding-a-custom-payload-template) you receive when a subscribed event is triggered.
|
||||
|
||||
### An example webhook payload
|
||||
|
||||
```json
|
||||
{
|
||||
"triggerEvent": "BOOKING_CREATED",
|
||||
"createdAt": "2023-05-24T09:30:00.538Z",
|
||||
"payload": {
|
||||
"type": "60min",
|
||||
"title": "60min between Pro Example and John Doe",
|
||||
"description": "",
|
||||
"additionalNotes": "",
|
||||
"customInputs": {},
|
||||
"startTime": "2023-05-25T09:30:00Z",
|
||||
"endTime": "2023-05-25T10:30:00Z",
|
||||
"organizer": {
|
||||
"id": 5,
|
||||
"name": "Pro Example",
|
||||
"email": "pro@example.com",
|
||||
"username": "pro",
|
||||
"timeZone": "Asia/Kolkata",
|
||||
"language": {
|
||||
"locale": "en"
|
||||
},
|
||||
"timeFormat": "h:mma"
|
||||
},
|
||||
"responses": {
|
||||
"name": {
|
||||
"label": "your_name",
|
||||
"value": "John Doe"
|
||||
},
|
||||
"email": {
|
||||
"label": "email_address",
|
||||
"value": "john.doe@example.com"
|
||||
},
|
||||
"location": {
|
||||
"label": "location",
|
||||
"value": {
|
||||
"optionValue": "",
|
||||
"value": "inPerson"
|
||||
}
|
||||
},
|
||||
"notes": {
|
||||
"label": "additional_notes"
|
||||
},
|
||||
"guests": {
|
||||
"label": "additional_guests"
|
||||
},
|
||||
"rescheduleReason": {
|
||||
"label": "reschedule_reason"
|
||||
}
|
||||
},
|
||||
"userFieldsResponses": {},
|
||||
"attendees": [
|
||||
{
|
||||
"email": "john.doe@example.com",
|
||||
"name": "John Doe",
|
||||
"timeZone": "Asia/Kolkata",
|
||||
"language": {
|
||||
"locale": "en"
|
||||
}
|
||||
}
|
||||
],
|
||||
"location": "Calcom HQ",
|
||||
"destinationCalendar": {
|
||||
"id": 10,
|
||||
"integration": "apple_calendar",
|
||||
"externalId": "https://caldav.icloud.com/1234567/calendars/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/",
|
||||
"userId": 5,
|
||||
"eventTypeId": null,
|
||||
"credentialId": 1
|
||||
},
|
||||
"hideCalendarNotes": false,
|
||||
"requiresConfirmation": null,
|
||||
"eventTypeId": 7,
|
||||
"seatsShowAttendees": true,
|
||||
"seatsPerTimeSlot": null,
|
||||
"uid": "bFJeNb2uX8ANpT3JL5EfXw",
|
||||
"appsStatus": [
|
||||
{
|
||||
"appName": "Apple Calendar",
|
||||
"type": "apple_calendar",
|
||||
"success": 1,
|
||||
"failures": 0,
|
||||
"errors": [],
|
||||
"warnings": []
|
||||
}
|
||||
],
|
||||
"eventTitle": "60min",
|
||||
"eventDescription": "",
|
||||
"price": 0,
|
||||
"currency": "usd",
|
||||
"length": 60,
|
||||
"bookingId": 91,
|
||||
"metadata": {},
|
||||
"status": "ACCEPTED"
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### Verifying the authenticity of the received payload
|
||||
|
||||
1. Simply add a new **secret key** to your webhook and save.
|
||||
|
||||
2. Wait for the webhook to be triggered (event created, cancelled, rescheduled, or meeting ended)
|
||||
|
||||
3. Use the **secret key** to create an `hmac`, and update that with the webhook payload received to create an SHA256.
|
||||
|
||||
4. Compare the hash received in the header of the webhook `(X-Cal-Signature-256)` with the one created using the **secret key** and the body of the payload. If they don't match, the received payload was adulterated and cannot be trusted.
|
||||
|
||||
### Adding a custom payload template
|
||||
|
||||
Customizable webhooks are a great way reduce the development effort and in many cases remove the need for a developer to build an additional integration service.
|
||||
|
||||
An example of a custom payload template is provided here:
|
||||
|
||||
```json
|
||||
{
|
||||
"content": "A new event has been scheduled",
|
||||
"type": "{{type}}",
|
||||
"name": "{{title}}",
|
||||
"organizer": "{{organizer.name}}",
|
||||
"booker": "{{attendees.0.name}}"
|
||||
}
|
||||
```
|
||||
|
||||
where `{{type}}` represents the event type slug and `{{title}}` represents the title of the event type. Note that the variables should be added with a double parenthesis as shown above. Here’s a breakdown of the payload that you would receive via an incoming webhook, with an exhaustive list of all the supported variables provided below:
|
||||
|
||||
#### Webhook variable list
|
||||
|
||||
| Variable | Type | Description |
|
||||
| ------------------ | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| triggerEvent | String | The name of the trigger event \[BOOKING\_CREATED, BOOKING\_RESCHEDULED, BOOKING\_CANCELLED, MEETING\_ENDED, BOOKING\_REJECTED, BOOKING\_REQUESTED, BOOKING\_PAYMENT\_INITIATED, BOOKING\_PAID, MEETING\_STARTED, RECORDING\_READY, FORM\_SUBMITTED] |
|
||||
| createdAt | Datetime | The Time of the webhook |
|
||||
| type | String | The event type slug |
|
||||
| title | String | The event type name |
|
||||
| startTime | Datetime | The event's start time |
|
||||
| endTime | Datetime | The event's end time |
|
||||
| description | String | The event's description as described in the event type settings |
|
||||
| location | String | Location of the event |
|
||||
| organizer | Person | The organizer of the event |
|
||||
| attendees | Person\[] | The event booker & any guests |
|
||||
| uid | String | The UID of the booking |
|
||||
| rescheduleUid | String | The UID for rescheduling |
|
||||
| cancellationReason | String | Reason for cancellation |
|
||||
| rejectionReason | String | Reason for rejection |
|
||||
| team.name | String | Name of the team booked |
|
||||
| team.members | String\[] | Members of the team booked |
|
||||
| metadata | JSON | Contains a metadata of the booking, including the meeting URL (videoCallUrl) in case of Google Meet and Cal Video |
|
||||
|
||||
#### Person Structure
|
||||
|
||||
| Variable | Type | Description |
|
||||
| ---------------- | ------ | ---------------------------------------------------------------------- |
|
||||
| name | String | Name of the individual |
|
||||
| email | Email | Email of the individual |
|
||||
| timezone | String | Timezone of the individual ("America/New\_York", "Asia/Kolkata", etc.) |
|
||||
| language?.locale | String | Locale of the individual ("en", "fr", etc.) |
|
||||
@@ -1,51 +0,0 @@
|
||||
---
|
||||
title: "Setting up OIDC with okta"
|
||||
---
|
||||
|
||||
1. Set SAML_DATABASE_URL to a Postgres database. Please use a different database than the main Cal instance since the migrations are separate for this database. For example `postgresql://postgres:@localhost:5450/cal-saml`. If you are using a self-signed certificate for Postgres then use the `sslmode=no-verify` query param in the database URL. For example `postgresql://postgres:@localhost:5450/cal-saml?sslmode=no-verify`.
|
||||
2. Set SAML_ADMINS to a comma separated list of admin emails who can configure the OIDC.
|
||||
3. Create an application with your OIDC provider. For example, in Okta, once you create an account, you can click on Applications on the sidebar menu:
|
||||
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-oVjaQ0tU3AnO_wrzp85.png" />
|
||||
</Frame>
|
||||
4. Click on `Create App Integration`
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-wrIlZkLdZ6kL_wf7mxn.png" />
|
||||
</Frame>
|
||||
5. Select OIDC in the modal form, along with Web App and click Next.
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-IfRWYg8XuCMI_tkwyft.png" />
|
||||
</Frame>
|
||||
6. Enter the Sign in redirect URL (or auth URL) as
|
||||
```
|
||||
{BASE_URL}/api/auth/oidc
|
||||
```
|
||||
And the sign out URL as
|
||||
```
|
||||
{BASE_URL}/auth/login
|
||||
```
|
||||
where {BASE_URL} is your app's base URL, and click save.
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-TqgDJpBoiR-C_onrwit.png" />
|
||||
</Frame>
|
||||
<Note>
|
||||
Please replace `{BASE_URL}` here with respective URL, such as `localhost:3000` for localhost testing, for example.
|
||||
</Note>
|
||||
7. Now you should have the Client Secret and Client ID with you. You would also need the Well Known URL which for Okta is generally of the type:
|
||||
```
|
||||
https://{yourOktaDomain}/.well-known/openid-configuration
|
||||
```
|
||||
So, if your okta domain is `dev-123456.okta.com`, your well known URL would be
|
||||
```
|
||||
https://dev-123456.okta.com/.well-known/openid-configuration
|
||||
```
|
||||
8. Now spin up cal.com on your server and login with the Admin user (the email ID of which was provided in step 2 for SAML_ADMINS environment variable).
|
||||
9. Visit `{BASE_URL}/settings/security/sso` and you should see something like this:
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-8ufcUyCOVwV6_hdudno.png" />
|
||||
</Frame>
|
||||
10. Click on Configure SSO with OIDC, and then enter the Client Secret, Client ID and Well known URL from the Step 7, and click save.
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-GN1NLgrcf5r4_tmhni3.png" />
|
||||
</Frame>
|
||||
@@ -1,77 +0,0 @@
|
||||
---
|
||||
title: "Setting up SCIM with Okta"
|
||||
---
|
||||
1. Set SAML_DATABASE_URL to a Postgres database. Please use a different database than the main Cal instance since the migrations are separate for this database. For example `postgresql://postgres:@localhost:5450/cal-saml`. If you are using a self-signed certificate for Postgres then use the `sslmode=no-verify` query param in the database URL. For example `postgresql://postgres:@localhost:5450/cal-saml?sslmode=no-verify`.
|
||||
2. Set SAML_ADMINS to a comma separated list of admin emails who can configure the OIDC.
|
||||
3. Create an application with your OIDC provider. For example, in Okta, once you create an account, you can click on Applications on the sidebar menu:
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-oVjaQ0tU3AnO_wrzp85.png" />
|
||||
</Frame>
|
||||
4. Click on `Create App Integration`
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-wrIlZkLdZ6kL_wf7mxn.png" />
|
||||
</Frame>
|
||||
5. Select SAML or OIDC in the modal form, along with Web App and click Next.
|
||||
- Note you will have to fill in the appropriate fields for the SAML or OIDC setup to continue.
|
||||
- [SAML Setup](/docs/introduction/quick-start/self-hosting/sso-setup#setting-up-saml-login)
|
||||
- [OIDC Setup](/docs/how-to-guides/how-to-setup-oidc-with-okta)
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-IfRWYg8XuCMI_tkwyft.png" />
|
||||
</Frame>
|
||||
6. Once the application is created, under General -> App Settings, click "Edit" and click the checkbox "Enable SCIM provisioning
|
||||
"
|
||||
<Frame>
|
||||
<img src="/images/scim/app-settings-enable-scim.png" />
|
||||
</Frame>
|
||||
7. Next go to your instance of Cal.com and navigate to `{BASE_URL}/settings/organization/dsync` and click configure.
|
||||
<Frame>
|
||||
<img src="/images/scim/dsync-configure.png" />
|
||||
</Frame>
|
||||
8. In the "Configure Directory Sync" from choose a directory sync name and choose "Okta SCIM v2.0" as the "Directory Provider"
|
||||
<Frame>
|
||||
<img src="/images/scim/dsync-configure-provider.png" />
|
||||
</Frame>
|
||||
9. Take note of the "SCIM Base URL" and "SCIM Bearer Token"
|
||||
<Frame>
|
||||
<img src="/images/scim/dsync-configure-info.png" />
|
||||
</Frame>
|
||||
10. Okta go to your application. Navigate to the "Provisioning" tab and click "Integration" under "Settings".
|
||||
<Frame>
|
||||
<img src="/images/scim/okta-dsync-options.png" />
|
||||
</Frame>
|
||||
- Under "SCIM connector base URL" enter the "SCIM Base URL" from Cal.com
|
||||
- Under "Unique identifier field for users" enter "email"
|
||||
- Under "Supported provisioning actions" enable:
|
||||
- "Import New Users and Profile Updates"
|
||||
- "Push New Users"
|
||||
- "Push Profile Updates"
|
||||
- "Push Groups"
|
||||
- Under "Authentication Mode" choose "HTTP Header"
|
||||
- Under "Authentication" enter the "SCIM Bearer Token" from Cal.com
|
||||
- When you hit save it will make a test call to the "SCIM Base URL"
|
||||
11. When you hit save navigate to "To App" settings, still under the "Provisioning" tab
|
||||
12. Under "Provisioning to App" click "Edit" and enable:
|
||||
- "Create User"
|
||||
- "Update User Attributes"
|
||||
- "Deactivate User"
|
||||
12. Under "`{Your application name}` Attribute Mapping", remove all fields except for:
|
||||
- "username"
|
||||
- "givenName"
|
||||
- "familyName"
|
||||
- "email"
|
||||
- "displayName"
|
||||
13. Set each of these of these properties to "Map from Okta Profile" and the related field. Under "Apply On" select "Create and Update"
|
||||
<Frame>
|
||||
<img src="/images/scim/okta-property-settings.png" />
|
||||
</Frame>
|
||||
14. You can now assign users and groups to the app.
|
||||
|
||||
## Mapping Okta Groups to Cal.com Teams
|
||||
When provisioning groups to your organization, Okta groups can be mapped to teams within your organization and users will be auto assigned to these teams.
|
||||
|
||||
On `{BASE_URL}/settings/organization/dsync` there is a table with the teams under your organization. Click on "Add group name" to map the Okta group to the team. **Note:
|
||||
The group name must be spelt exactly as it is shown on Okta.**. When you push the group to your organization then those users will automatically be added to the team.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/scim/group-team-mapping.png" />
|
||||
</Frame>
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
title: "Date overrides"
|
||||
---
|
||||
|
||||
Cal.com allows you to create date overrides so that you can dictate when you wish to be unavailable within your typical schedule. Often times, you become unavailable for various reasons within your regular schedule and you don't have an event created in either Cal.com or any connected calendar, but you are busy to take any meetings. In such cases, you can simply make use of the Date overrides and block your otherwise bookable calendar out as per your requirements, whether it is for a few hours on a particular day, or for entire days at a stretch.
|
||||
|
||||
With availability date overrides, you can now pick any date that you're currently available and set specific hours for availability on that day or mark yourself entirely unavailable. Taking a half day next Thursday and Friday to do some last-minute shopping? Simply set an override on those specific days to block yourself off.
|
||||
|
||||
You can learn more about [Adding date override](https://cal.com/docs/platform/atoms/availability-settings#availability-settings) by simply following the guide.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1600x899-RzQm726OebFh_pej5va.png" alt="Date overrides interface" />
|
||||
</Frame>
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
title: "Multiple schedules"
|
||||
---
|
||||
|
||||
You can set multiple schedules in the availability section of the application and organize your event types better by customizing your availability, quite simply, by selecting respective schedule as the availability for an individual event type. You can check [Setting up your availability](https://cal.com/docs/platform/atoms/availability-settings#availability-settings) to link your created availability schedule with an event type.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1600x899-oXaqBFnOdR-p_kvdzt6.png" alt="Multiple schedules interface" />
|
||||
</Frame>
|
||||
|
||||
This feature is particularly useful if you wish to dedicate different event types over different time-zones as you can set up an availability schedule for every time-zone you wish to schedule around.
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: "Multiple time slots per day"
|
||||
---
|
||||
|
||||
Cal.com allows you to break your regular schedule day into multiple slots, allowing you to easily take time out of the calendar for consistent events such as lunch breaks, coffee breaks, or even recreational breaks.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1600x899-UbaoT5R8c9Dq_st91js.png" alt="Multiple time slots interface" />
|
||||
</Frame>
|
||||
@@ -1,45 +0,0 @@
|
||||
---
|
||||
title: 'Set up your availability'
|
||||
---
|
||||
|
||||
Follow these step-by-step instructions to configure your availability in Cal.com based on your individual preferences:
|
||||
|
||||
<Steps>
|
||||
<Step title="Access availability settings">
|
||||
* Log in to your Cal.com account.
|
||||
* Click Availability in the sidebar. You’ll see your existing availability schedules, such as "Working Hours" or any other you’ve added before.
|
||||
</Step>
|
||||
<Step title="Create a new availability schedule">
|
||||
* Click New in the top-right corner.
|
||||
* Enter a name for your schedule (e.g., "Test Availability").
|
||||
* Click Continue to create your schedule.
|
||||
By default, the schedule is set to 9:00 AM to 5:00 PM.
|
||||
</Step>
|
||||
<Step title="Customize your availability">
|
||||
* Enable/Disable Days:
|
||||
Toggle days on or off based on when you're available.
|
||||
For example, you can set availability until 1:00 PM on a Saturday.
|
||||
* Edit Times for Specific Days:
|
||||
Click a time box to adjust availability for specific days.
|
||||
For example, change Monday’s availability to 9:00 AM to 6:00 PM.
|
||||
* Copy Times to Other Days:
|
||||
After setting times for one day, click Copy Times To and select other days (e.g., Tuesday–Friday).
|
||||
* Add Multiple Time Slots:
|
||||
Add additional time slots to split your availability (e.g., 9:00 AM–11:00 AM and 5:00 PM–7:30 PM).
|
||||
</Step>
|
||||
<Step title="Add Day overrides">
|
||||
Use day overrides for special cases when your availability changes for specific dates.
|
||||
* Click Add an Override.
|
||||
Example: Choose a date (e.g., Wednesday) and mark yourself as completely unavailable.
|
||||
Overrides are automatically archived once the date has passed.
|
||||
</Step>
|
||||
<Step title="Adjust your time zone">
|
||||
Set a specific time zone for your availability.
|
||||
Useful if your availability changes when traveling to another country.
|
||||
</Step>
|
||||
<Step title="Troubleshoot availability issues">
|
||||
If you notice times not showing up as expected, click Launch Troubleshooter.
|
||||
This tool helps identify issues based on how Cal.com determines your availability.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
---
|
||||
title: "Mark guests as no show"
|
||||
---
|
||||
|
||||
You can now mark guests as "No Show" for past bookings where one or more attendees did not attend.
|
||||
|
||||
### How to Mark Attendees as No-Show
|
||||
|
||||
1. **Navigate to Past Bookings**
|
||||
- Go to `bookings/past`
|
||||
|
||||
2. **Select the Attendee**
|
||||
- Click on the name or email of the attendee you wish to mark as "No-Show"
|
||||
|
||||
3. **Mark as No-Show**
|
||||
- From the dropdown menu, select "Mark as No Show"
|
||||
|
||||
4. **Unmark if Necessary**
|
||||
- If you marked an attendee as "No-Show" by mistake, you can easily undo it
|
||||
- Click on the name or email of the attendee again and select "Unmark as No Show"
|
||||
|
||||
### Handling Attendees grouped in 'n' more
|
||||
|
||||
For meetings with more than two attendees:
|
||||
|
||||
1. **Open the Checklist**
|
||||
- Click on "& n more" attendees. This will open a checklist
|
||||
|
||||
2. **Mark/Unmark Multiple Attendees**
|
||||
- Use the checklist to mark or unmark multiple guests as "No Show" simultaneously
|
||||
|
||||
This feature allows you to accurately record attendance and manage your bookings more effectively.
|
||||
@@ -1,21 +0,0 @@
|
||||
---
|
||||
title: Paid Bookings
|
||||
---
|
||||
|
||||
With Cal.com you can monetize your bookings. We offer the best platform to ensure appointment scheduling and payment collection is an effortless process.
|
||||
|
||||
<Frame className="aspect-video">
|
||||
<iframe
|
||||
width="100%"
|
||||
height="100%"
|
||||
src="https://www.youtube.com/embed/xopxmk2H4Ng?si=46yMKT7u2OT8HXQv"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
</Frame>
|
||||
|
||||
From RSVPs to coaching and consultancy sessions, Cal.com makes it easy to get paid before your meeting even starts. Enable our stripe app, and decide which of your bookable events have charges and exactly how much those are.
|
||||
|
||||
To learn more about the set up process of paid bookings, please take a look at **[How to set up an event type to receive payments](https://cal.com/help/event-types/how-to-receive-payments)**
|
||||
@@ -1,101 +0,0 @@
|
||||
---
|
||||
title: Pre-fill fields/questions
|
||||
---
|
||||
|
||||
You can pre-fill all the fields/questions on the booking form by using their corresponding **identifiers** that you can see under Advanced -> Booking Questions.
|
||||
|
||||
e.g. for the following field(shown in screenshot), the field would show up as *Agree with your rules* and its identifier is *agreed*. So, we would use
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198198797/bfc5b45f2c0ac0a6704f1a40/i1600x899-lK5qA-PWor5w_nda2mw.png?expires=1736325000&signature=000158c0966e05bb5d50ed593b6a94d04c908568625cc3d18d9a68541f449da6&req=dSEuHsh3lYZWXvMW1HO4zR%2BTJg3Fl6l4ywMHZCHu9egE5fWqiRo4u%2BWPHXxD%0AfGr0JKz%2B%2BGcs7dmJJh4%3D%0A)
|
||||
|
||||
*agreed* as query param name to prefill the field.
|
||||
|
||||
This can include the user’s name and email, notes, guests, event location, Reason for reschedule. You can prefill any field added by you as well.
|
||||
|
||||
You can add anywhere in the booking flow before the booking form page or in the booking form page itself. Simply add these in the URL and you're good to go!
|
||||
|
||||
Pre-filling booking fields can save a lot of time and speed up processes with filling out these forms, and assist with a smooth integration with your existing website or app.
|
||||
|
||||
An example URL with a few prefill fields is given below:
|
||||
```https://cal.com/johndoe/book?type=12345&duration=30&email=johndoe%40example.com¬es=Test+Notes```
|
||||
You can integrate the prefill-fields with your booking page URL in a similar way.
|
||||
|
||||
## Pre-filling all fields
|
||||
|
||||
**A sample booking form with various fields prefilled.**
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198198793/7bc4b1b4b584d4824880d5da/i1600x899--qO8QnRKDrjU_kyp2hw.png?expires=1736325000&signature=10a3362b2faab0ec78c8e2ffa1bbb1fc5f7b9dab0e15298152e335f3661ea6cd&req=dSEuHsh3lYZWWvMW1HO4za%2ByuRsspnytuNu0%2FFrf6odTakjQnLnHIsBeeJvQ%0ANsCB4u65V8zAB1DolSA%3D%0A)
|
||||
|
||||
**Here is how the fields are setup**
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198198798/d0baeba0d2e0e4f3161075ec/i1600x899-0PXSUpvs2z-W_wox48k.png?expires=1736325000&signature=89f6fde016650f907ef3e033088a45ad16657821dd3941e78ed62ee264b9b714&req=dSEuHsh3lYZWUfMW1HO4zb4YAwmw7asrMlnecn80g7UbIo4WLX9UdTxHu0J3%0AQjwXhXtQ6eI%2BWusGR%2BY%3D%0A)
|
||||
|
||||
Here is the query used to prefill that form above.
|
||||
|
||||
```
|
||||
name=John Doe&email=johndoe@example.com¬es=Test Notes&Text=TEXT&number=123&select=Option 1&Multiselect=Option 1&Multiselect=Option 2&guests=b&phone=+91&agreed=true
|
||||
```
|
||||
## Fields with multiple values
|
||||
|
||||
For questions that accept multiple values, you can pass them multiple times using same identifier. So, e.g. Multiselect has been passed twice and thus it prefills both the values.
|
||||
|
||||
Similarly, you can pass *guests* twice to add one more guest.
|
||||
|
||||
## Prefilling location
|
||||
|
||||
Different type of locations are selected using different values of location. location param value has to be a valid JSON.
|
||||
|
||||
## Pre-filling Attendee Address
|
||||
|
||||
```
|
||||
...other-params...&location={"value":"attendeeInPerson","optionValue":"Delhi"}
|
||||
```
|
||||
[](https://downloads.intercomcdn.com/i/o/1198198795/149eb8a19c7c9b87e9207cda/i1600x899-Ty_oorQmXnjJ_cm5ysq.png?expires=1736325000&signature=b5595771bfc49d36da0b4e67f8440a2c5c874c674c799c6d9023b1593c5fc465&req=dSEuHsh3lYZWXPMW1HO4zXIZpSF682jQ431%2F0%2B57t2z4o8aUSXcM9w0n8f8e%0Aa5feONJm%2FqwDk3Nxf5g%3D%0A)
|
||||
|
||||
## Pre-selecting Organizer Address in Location
|
||||
|
||||
```
|
||||
...other-params...&location={"value":"inPerson","optionValue":""}
|
||||
```
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198198794/4983c503a9ce5201e0c1bba8/i1600x899-AlmOt5E4diMC_nkjeb4.png?expires=1736325000&signature=4d46fb2749e119580fab04853978f7338ae1b49f7b47c27bcc0e1496745ad183&req=dSEuHsh3lYZWXfMW1HO4zfhh%2BpZqpU47epa9VDhCuWvhAe0fXXhWclcsJTld%0AHrJR7dP6os%2FtnThVdsI%3D%0A)
|
||||
## Pre-filling Attendee Phone
|
||||
|
||||
```
|
||||
...other-params...&location={"value":"phone","optionValue":"%2B919999999999"}
|
||||
```
|
||||
|
||||
*Note: %2B is encoded form of +*
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198198790/02943b0276723d5effc1ed0b/i1600x899-wVkiblWj8CDH_iwhwrd.png?expires=1736325000&signature=1244214d7c9fcfd16b6edc4b71a4267c3a0bf9c4ad5c91a93ee447cd65c1b3f9&req=dSEuHsh3lYZWWfMW1HO4zQf94cG%2FKVtkygk%2BlF1g7HiXVwSfutAPEbSq%2B3Jv%0A3p3Pf5Mj3PVQ%2F3avvp8%3D%0A)
|
||||
|
||||
## Pre-selecting Link Meeting
|
||||
|
||||
```
|
||||
...other-params...&location={"value":"link","optionValue":""}
|
||||
```
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198198791/0db8619aabbf65a0fa3709fd/i1600x899-sGCDXGlvVYT4_uwhpa8.png?expires=1736325000&signature=c48817776ddbbe02a9df71b8a9e3f44fcd90c48584ead67834eb2e820f3a1bdc&req=dSEuHsh3lYZWWPMW1HO4zZBGiRHaqpAigQ%2BNxkzSzI7cRhRRKup7Hujf8NW7%0ATAW65srvCSLYe46eo%2BU%3D%0A)
|
||||
## Pre-selecting a video meeting
|
||||
|
||||
Specify location param like this
|
||||
|
||||
```
|
||||
...other-params...&location={"value":"integrations:{VIDEO_APP_IDENTIFIER}","optionValue":""}
|
||||
```
|
||||
|
||||
| **App Name** | **`{VIDEO\_APP\_IDENTIFIER}`** |
|
||||
| --- | --- |
|
||||
| Zoom | zoom |
|
||||
| Cal Video | daily |
|
||||
| Office365 | office365\_video |
|
||||
| Facetime | facetime\_video |
|
||||
| Campfire | campfire\_video |
|
||||
| Around Video | around\_video |
|
||||
| Ping | ping\_video |
|
||||
| Riverside | riverside\_video |
|
||||
| Signal | signal\_video |
|
||||
| Sirius | sirius\_video |
|
||||
| Telegram | telegram\_video |
|
||||
| Whatsapp | whatsapp\_video |
|
||||
| Whereby | whereby\_video |
|
||||
@@ -1,26 +0,0 @@
|
||||
# How to Connect Your Apple Calendar
|
||||
|
||||
Connecting your Apple Calendar helps Cal.com check when you're free or busy. This avoids double bookings and ensures new bookings are added to the right calendar.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. **Log in to your Cal.com account**.
|
||||
- Go to **Settings** and click the **Calendars** tab.
|
||||
|
||||
2. **Add a Calendar**:
|
||||
- Click **Add Calendar**.
|
||||
- You’ll be taken to our App Store.
|
||||
|
||||
3. **Install the Calendar**:
|
||||
- Choose **Apple Calendar** and click **Install**.
|
||||
|
||||
4. **Log in with Your Apple ID**:
|
||||
- Sign in with your Apple ID.
|
||||
- Allow the permissions if asked.
|
||||
|
||||
5. **Set Up and Adjust Settings**:
|
||||
- You’ll see your calendar in the **Installed Calendars** section.
|
||||
- Select which calendar to check for conflicts.
|
||||
- Add more calendars if needed.
|
||||
|
||||
You're all set! Cal.com will now manage your availability and prevent scheduling conflicts.
|
||||
@@ -1,26 +0,0 @@
|
||||
# How to Connect Your Google Calendar
|
||||
|
||||
Connecting your Google Calendar lets Cal.com check when you're free or busy. This helps prevent double bookings and ensures new bookings are added to the correct calendar.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. **Log in to your Cal.com account**.
|
||||
- Go to **Settings** and click the **Calendars** tab.
|
||||
|
||||
2. **Add a Calendar**:
|
||||
- Click **Add Calendar**.
|
||||
- You’ll be directed to our App Store.
|
||||
|
||||
3. **Install the Calendar**:
|
||||
- Choose **Google Calendar** and click **Install**.
|
||||
|
||||
4. **Log in with Your Google Account**:
|
||||
- Sign in with your Google account.
|
||||
- Confirm the Google permissions to ensure smooth integration with our system.
|
||||
|
||||
5. **Set Up and Adjust Settings**:
|
||||
- You’ll see your calendar in the **Installed Calendars** section.
|
||||
- Choose which calendar to check for conflicts.
|
||||
- Add more calendars if needed.
|
||||
|
||||
You're all set! Cal.com will now sync with your Google Calendar to manage your availability and prevent scheduling conflicts.
|
||||
@@ -1,71 +0,0 @@
|
||||
---
|
||||
title: Adding embed to your webpage
|
||||
---
|
||||
|
||||
<Frame className="aspect-video">
|
||||
<iframe
|
||||
width="100%"
|
||||
height="100%"
|
||||
src="https://www.youtube.com/embed/fMHW6jYPIb8?si=ohBU_CMRBWFrQx6L
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowfullscreen
|
||||
></iframe>
|
||||
</Frame>
|
||||
|
||||
You can get the embed snippet, to install on your webpage, from the Embed Snippet Generator, within the app.
|
||||
|
||||
<Note>
|
||||
{" "}
|
||||
The snippets provided are automatically updated as per the cal.com instance. **So, even when self hosting, you
|
||||
can simply copy and paste the snippets from there{" "}
|
||||
</Note>
|
||||
.
|
||||
|
||||
There are three ways in which you can embed your cal.com link to your webpage.
|
||||
|
||||
<img src="//images/i1600x900-APQPQxcN1aZt_m0casf.png" alt="Embed options overview" />
|
||||
|
||||
## Inline
|
||||
|
||||
Show the embed inline anywhere on the webpage. It let's you show the embed at a particular place in your webpage.
|
||||
|
||||
[CodeSandbox link[React]](https://codesandbox.io/s/inline-demo-react-for-docs-xps99g?file=/src/App.js)
|
||||
[CodeSandbox link[HTML]](https://codesandbox.io/s/vanillajs-week-view-inline-y9wgxc?file=/index.html)
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1600x900-RDSMehJ8vTwZ_zcals5.png" alt="Inline embed example" />
|
||||
</Frame>
|
||||
|
||||
## Pop-up via element click
|
||||
|
||||
Show the embed, on click of any element on your webpage, in a popup
|
||||
|
||||
[CodeSandbox link[React]](https://codesandbox.io/s/element-click-popup-h5c5v2?file=/public/index.html)
|
||||
[CodeSandbox link[HTML]](https://codesandbox.io/s/popup-on-click-of-an-existing-element-framework-agnostic-forked-7pl95c?file=/index.html)
|
||||
|
||||
<Frame>
|
||||
<img src="/images/i1600x900-IQ6S7Rq9d94T_d5vl8m.png" alt="Pop-up embed example" />
|
||||
</Frame>
|
||||
|
||||
## Floating button pop-up
|
||||
|
||||
Adds a floating button that can be customized and on clicking that the embed shows up in a popup.
|
||||
|
||||
[CodeSandbox link[React]](https://codesandbox.io/s/floating-button-popup-react-forked-9y5g95?file=/public/index.html)
|
||||
[CodeSandbox link[HTML]](https://codesandbox.io/s/embed-floating-button-popup-framework-agnostic-mg7339?file=/src/index.js)
|
||||
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-PNSh9u2m_QV2_v80gvk.png" alt="Floating button embed example" />
|
||||
</Frame>
|
||||
|
||||
## What can you embed?
|
||||
|
||||
- You can embed your cal.com link for an event type e.g. `rick/get-rick-rolled`. You can get the snippet from the event-type page.
|
||||
- You can embed your profile page e.g. rick. For this, you can just update the snippet to replace your cal.com event type link with your username. e.g. `rick/get-rick-rolled => rick`
|
||||
- You can embed your Routing Form e.g. `forms/YOUR_FORM_ID`. You can get the snippet for that from the Routing Form page.
|
||||
|
||||
<Frame>
|
||||
<img src="//images/i1600x900-iihnWwzsuARg_llvldw.png" alt="Routing form embed example" />
|
||||
</Frame>
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
title: Adding slots to your email
|
||||
---
|
||||
|
||||
You can add the slots to your email as well using `Email Embed`. When composing an email, this method of embedding streamlines the process, allowing you to effortlessly share available time slots with recipients.
|
||||
|
||||
This ensures seamless scheduling and improved communication efficiency.
|
||||
|
||||
<img src="//images/i1600x900-z2MekYaA6oWf_nzivcl.png" alt="Email embed interface" />
|
||||
|
||||
<img src="//images/i1600x900-CYkkzVSEXUuc_epdmrm.png" alt="Email embed example" />
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
title: Embed Events
|
||||
---
|
||||
|
||||
## Actions
|
||||
|
||||
You can listen to an action that occurs in embedded cal link as follows. You can think of them as DOM events. We are avoiding the term "events" to not confuse it with Cal Events.
|
||||
|
||||
```js
|
||||
<script>
|
||||
Cal("on", {
|
||||
action: "ANY_ACTION_NAME",
|
||||
callback: (e)=>{
|
||||
// `data` is properties for the event.
|
||||
// `type` is the name of the action(You can also call it type of the action.) This would be same as "ANY_ACTION_NAME" except when ANY_ACTION_NAME="*" which listens to all the events.
|
||||
// `namespace` tells you the Cal namespace for which the event is fired/
|
||||
const {data, type, namespace} = e.detail;
|
||||
}
|
||||
})
|
||||
</script>
|
||||
```
|
||||
|
||||
## Following are the list of supported actions.
|
||||
| Action | Description | Properties |
|
||||
|--------|-------------|------------|
|
||||
| eventTypeSelected | When user chooses an event-type from the listing. | eventType:object // Event Type that has been selected |
|
||||
| bookingSuccessful | When the booking is successfully done. It might not be confirmed. | confirmed: boolean; //Whether confirmation from organizer is pending or not<br/>eventType: "Object for Event Type that has been booked"<br/>date: string; // Date of Event<br/>duration: number; //Duration of booked Event<br/>organizer: object //Organizer details like name, timezone, email |
|
||||
| linkReady | Tells that the link is ready to be shown now. | None |
|
||||
| linkFailed | Fired if link fails to load | code: number; // Error Code<br/>msg: string; //Human Readable msg<br/>data: object // More details to debug the error |
|
||||
| __iframeReady | It is fired when the embedded iframe is ready to communicate with parent snippet. This is mostly for internal use by Embed Snippet | None |
|
||||
| __windowLoadComplete | Tells that window load for iframe is complete | None |
|
||||
| __dimensionChanged | Tells that dimensions of the content inside the iframe changed. | iframeWidth:number, iframeHeight:number |
|
||||
|
||||
<Note>
|
||||
Actions that start with `__` are internal.
|
||||
</Note>
|
||||
|
||||
To get more details on how Embed actually works, you can refer to this [Embed Flowchart](https://www.figma.com/file/zZ5oaUpg12Fuu5mGZrPlP5/Embed-Flowchart).
|
||||
@@ -1,42 +0,0 @@
|
||||
---
|
||||
title: Embed instructions
|
||||
---
|
||||
An instruction is how you configure the embed. These instructions can be added immediately after the embed snippet.
|
||||
An instruction is technically a function with the same name, that would be called with the given arguments.
|
||||
|
||||
You would not normally need to learn about these instructions in detail, as the **Embed Snippet Generator** automatically updates the snippet with these instructions in the way you configure it but still they could be useful.
|
||||
|
||||
#### Inline
|
||||
|
||||
Appends embed `inline` as the child of the element.
|
||||
|
||||
```js
|
||||
<script>
|
||||
Cal("inline", { elementOrSelector, calLink });
|
||||
</script>
|
||||
```
|
||||
- `elementOrSelector` - Give it either a valid CSS selector or an HTMLElement instance directly
|
||||
- `calLink` - Cal Link that you want to embed e.g. john. Just give the username. No need to give the full URL https://cal.com/john. It makes it easy to configure the calendar host once and use as many links you want with just usernames
|
||||
|
||||
#### UI
|
||||
|
||||
Configure `ui` for embed. Make it look part of your webpage.
|
||||
|
||||
```js
|
||||
<script>
|
||||
Cal("ui", { styles });
|
||||
</script>
|
||||
```
|
||||
- `styles` - It supports styling for body and eventTypeListItem. Right now we support just background on these two.
|
||||
|
||||
#### Preload
|
||||
|
||||
To open cal link on some action, make it pop open instantly by using `preload`.
|
||||
|
||||
```js
|
||||
<script>
|
||||
Cal("preload", { calLink });
|
||||
</script>
|
||||
```
|
||||
|
||||
- `calLink` - Cal Link that you want to embed e.g. john. Just give the username. No need to give the full URL https://cal.com/john
|
||||
@@ -1,37 +0,0 @@
|
||||
---
|
||||
title: Getting Embed Code Snippets
|
||||
---
|
||||
|
||||
You can get code snippets for **React** or **HTML** and also configure many different aspects of embeds using the **Embed Snippet Generator**. The code snippet is automatically updated with the changes you make in it.
|
||||
|
||||
Here is how you can access it.
|
||||
|
||||
1. Click on three dots of the event type and click on the option `Embed`
|
||||
<img src="//images/i1600x900-h7erbVhGt9X5_uth9oa.png" alt="Accessing embed option" />
|
||||
|
||||
2. Configure as you require and then
|
||||
a. Copy the HTML code snippet
|
||||
<img src="//images/i1600x900-mdLN0kkooRVB_juid5h.png" alt="Copy HTML code snippet" />
|
||||
|
||||
or,
|
||||
|
||||
b. Copy the React code snippet
|
||||
<img src="//images/i1600x900-pDo66wyQ4Zxc_zmljxo.png" alt="Copy React code snippet" />
|
||||
|
||||
### What can you configure
|
||||
|
||||
- Size of embed
|
||||
- Theme
|
||||
- Toggle event type details
|
||||
- Brand color
|
||||
- Layout
|
||||
- Floating button text
|
||||
- Floating button position at the bottom
|
||||
|
||||
<img src="//images/i1600x900-LOniVJNguQth_oibmdv.png" alt="Configuration options" />
|
||||
|
||||
You can also configure all the custom CSS variables supported by cal.com app. [Here is a list of all the supported CSS variables](https://github.com/calcom/cal.com/blob/main/packages/config/tailwind-preset.js#L18).
|
||||
|
||||
Also, [here is the codeSandbox demo](https://codesandbox.io/s/embed-advanced-css-vars-x2sdgy?file=/src/App.tsx) for a configuration where the look and feel of the embed is changed.
|
||||
|
||||
<img src="//images/i1600x900-6CcRzVIWmCTJ_dnnrqu.png" alt="Advanced CSS configuration example" />
|
||||
@@ -1,112 +0,0 @@
|
||||
---
|
||||
title: Prefill booking form in Embed
|
||||
---
|
||||
|
||||
Booking form inside an embed can be prefilled as well.
|
||||
|
||||
## Inline Embed
|
||||
|
||||
```js
|
||||
// Prefill Name, Email, Attendee Address and passing metadata - React.
|
||||
// You can specify config property to do prefilling
|
||||
// React Demo Link - https://codesandbox.io/s/react-prefill-attendee-address-email-sqhf7r
|
||||
<Cal
|
||||
// .... other props in here
|
||||
config={{
|
||||
name: "Name",
|
||||
email: "booker@example.org",
|
||||
// You will receive the value in payload.metadata["myKey"] in webhook.
|
||||
// Also, it would be stored in booking table under metadata column
|
||||
// It won't be shown on the booking details page.
|
||||
"metadata[myKey]": "myValue",
|
||||
location: JSON.stringify({
|
||||
value: "attendeeInPerson",
|
||||
// It can be any string that defines an address where the meeting would occur
|
||||
optionValue: "New York"
|
||||
})
|
||||
}}
|
||||
></Cal>
|
||||
```
|
||||
|
||||
```js
|
||||
// Prefill Name, Email, Attendee Address and passing metadata - Vanilla JS
|
||||
// You can use 'inline' instruction to do the prefill
|
||||
// VanillaJS Demo link - https://codesandbox.io/s/prefill-embed-fields-vanilla-js-zft44w?file=/index.html
|
||||
Cal("inline", {
|
||||
config: {
|
||||
name: "Name",
|
||||
email: "booker@example.org",
|
||||
// You will receive the value in payload.metadata["myKey"] in webhook.
|
||||
// Also, it would be stored in booking table under metadata column
|
||||
// It won't be shown on the booking details page.
|
||||
"metadata[myKey]": "myValue",
|
||||
location: JSON.stringify({
|
||||
value: "attendeeInPerson",
|
||||
// It can be any string that defines an address where the meeting would occur
|
||||
optionValue: "New York"
|
||||
})
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
```js
|
||||
// Prefill Name, Email, Attendee Phonenumber and passing metadata - React
|
||||
<Cal
|
||||
// .... other props in here
|
||||
config={{
|
||||
name: "Name",
|
||||
email: "booker@example.org",
|
||||
// You will receive the value in payload.metadata["myKey"] in webhook.
|
||||
// Also, it would be stored in booking table under metadata column
|
||||
// It won't be shown on the booking details page.
|
||||
"metadata[myKey]": "myValue",
|
||||
location: JSON.stringify({
|
||||
value: "phone",
|
||||
// Any valid phonenumber in here
|
||||
optionValue: "+919999999999"
|
||||
})
|
||||
}}
|
||||
></Cal>
|
||||
```
|
||||
|
||||
```js
|
||||
// Prefill Name, Email and Attendee Phone - Vanilla JS
|
||||
// You can use 'inline' instruction to do the prefill
|
||||
Cal("inline", {
|
||||
config: {
|
||||
name: "Name",
|
||||
email: "booker@example.org",
|
||||
location: JSON.stringify({
|
||||
value: "phone",
|
||||
// Any valid phonenumber in here
|
||||
optionValue: "+919999999999"
|
||||
})
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
|
||||
## Floating button popup
|
||||
```js
|
||||
// Prefill Name, Email, Attendee Phone and passing metadata - Vanilla JS
|
||||
// You can use 'floatingButton' instruction to do the prefill
|
||||
// This is common for React and VanillaJS embeds.
|
||||
// Note that for React, Cal is not Cal component here it is Cal API.
|
||||
Cal("floatingButton", {
|
||||
config: {
|
||||
name: "Name",
|
||||
email: "booker@example.org",
|
||||
// You will receive the value in payload.metadata["myKey"] in webhook.
|
||||
// Also, it would be stored in booking table under metadata column
|
||||
// It won't be shown on the booking details page.
|
||||
"metadata[myKey]": "myValue",
|
||||
location: JSON.stringify({
|
||||
value: "phone",
|
||||
// Any valid phonenumber in here
|
||||
optionValue: "+919999999999"
|
||||
})
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
Other location types and other fields can be prefilled in the similar way. You can find the correct value to give from [here](https://cal.com/docs/core-features/bookings/prefill-fields#fields-with-multiple-values)
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
title: Adding events to your calendar
|
||||
---
|
||||
|
||||
Cal.com offers the possibility of automatically adding events to the calendars connected to your account. You can follow the video in case you don't have a calendar connected to your cal.com account yet.
|
||||
|
||||
<Frame className="aspect-video">
|
||||
<iframe
|
||||
width="100%"
|
||||
height="100%"
|
||||
src="https://www.youtube.com/embed/OUOume6QKuw?si=515WRYt3nXLcmUGZ"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
</Frame>
|
||||
|
||||
If you have connected a calendar with your Cal account, you can easily select where the events should be created, in case anyone books you through Cal.
|
||||
|
||||
You can select default calendar to add the booked events to by going to **`/settings/my-account/calendars`**
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195325982/a676e2389294a6d23331a50f/i1600x900-c6HXJn-S_2Gc_oqfadd.png?expires=1736325900&signature=e88d558f2c4a3cd6d8d502e71fcbf36724505fb08739be4b09406e67d22d5eff&req=dSEuE8p8mIhXW%2FMW1HO4zTNuus9eBSV1uCoAh4BY%2BosKu2LJGgkb7DA9ZN0P%0AHd27AWIbsfjlNobwZxI%3D%0A)
|
||||
|
||||
You can even select different connected calendars for different event types to create events on, in case that's preferable. Thus, offering you complete control of where your booked events are created, helping you organize your events as you please.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195325984/7b534952abfd2d83836b660b/i1600x900-sw0cvLcwYOXe_uwukmo.png?expires=1736325900&signature=ff2234be31d54a0c903ca6a1ff16cf9965453147a27d7c6c6ba771cc2c9ac8fd&req=dSEuE8p8mIhXXfMW1HO4ze%2BzIrRSrlcf5oQTNzvbQ2%2FbwkUGwTqfpSrXs3Zn%0AkOPaTrTOSubGOV9CqvU%3D%0A)
|
||||
@@ -1,17 +0,0 @@
|
||||
---
|
||||
title: Adding your first app
|
||||
---
|
||||
|
||||
Head over to the **apps** page, where you'll find our app store. We suggest firstly adding a calendar integration, then optionally a video conferencing platform, and then try out the other apps.
|
||||
<Frame>
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/V6mwvgcAxi0?si=VSB3FxY7u3jNOMMp" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
</Frame>
|
||||
Find the app you'd like to install, and either click **Install** in the top right of that app's card to add it right away, or click on the app's card to view more details.
|
||||
|
||||
In the details page you can read more about each app, then click **Install** in the top right of the page to add it to your account.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198457500/67d59b2f585662232ecb9234/i1599x929-tUttNKwBum0Z_p1vwkt.png?expires=1736325900&signature=4be1dab66e95c9805ce6c52175c068e56e3a788e71972767c6678ac536987ea6&req=dSEuHs17moRfWfMW1HO4zelr4Ap6IxDuOfHKMIiIDJIrnbu7OMKkYODsafGE%0AbYmJUmUo8uV%2Fv6q%2BrLA%3D%0A)
|
||||
|
||||
The app details page for Google calendar
|
||||
|
||||
If the app requires authentication, for instance to connect your Google Account, a dialog will be opened prompting you to authenticate. Once complete, the app will be successfully installed.
|
||||
@@ -1,31 +0,0 @@
|
||||
---
|
||||
title: Adding Zoom as the Meeting Location for Your Event Type
|
||||
---
|
||||
To add zoom as the meeting location for your event type, you need to follow these steps:
|
||||
|
||||
|
||||
<Steps>
|
||||
<Step title="First, you need to visit the Cal.com app store">
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195436790/81ca1d9e2b973fc254f65261/i1600x900-BEH3mBiQAI9x_uh9ogi.png?expires=1736301600&signature=99a661652ee3f121cebc9a8506229e9e5d827d799b7c142a4e7d59f6dc7d08fa&req=dSEuE819m4ZWWfMW1HO4zbzDS5K6BwZYXADO%2Bxr93a89AdJlrw3a2D3z9L9x%0Axeu5%0A)
|
||||
</Step>
|
||||
<Step title="Next, go to video conference apps, find Zoom in the list and click on details">
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195436817/cb69b60ff68a2c632b3f6774/i1600x900-BLQh5zDyQGTt_uebqir.png?expires=1736301600&signature=fcae398d07ffbe99f4363ada7dcc6e8bf5d358d289a9a64a9f83cf5f48234224&req=dSEuE819m4leXvMW1HO4zeDT6ICBbebrplt0n4o4xbKXOBP7SNiFbvM12my6%0AMlRn%0A)
|
||||
</Step>
|
||||
<Step title="Once the Cal.com's Zoom app page opens up, click on Install">
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195436842/9e2b5d04426ca8dbe75e00d0/i1600x900-jVFhWIwoSrqR_pcsvgw.png?expires=1736301600&signature=a486b9345c969f734558ba129dd4b49da113fc3cdba8bde97114dc69622b76c9&req=dSEuE819m4lbW%2FMW1HO4zf0nzqrYbRnYCedeQDUXOIepWjoGZuFAaE0O8MDY%0AHRYf%0A)
|
||||
</Step>
|
||||
<Step title="Once you click on Install, you'll be redirected to your Zoom account (sign in if you haven't already) and allow the necessary permissions.">
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195436865/47f7c4ebb6d72a20dc6d9f0e/i1600x900-0xbwqaAe_V2R_pumupp.png?expires=1736301600&signature=385a59e697d73dc1942f1bde27d602db6c3c31aefda4c8923cfb86e262c1b85c&req=dSEuE819m4lZXPMW1HO4zWq02GAhsUGVoY%2FR3MM3wNXKhoZoUaSoAgZg%2F0Ox%0ABVMQ%0A)
|
||||
</Step>
|
||||
<Step title="Now, you should be redirected to Cal.com's Installed Apps page with Conferencing Tab selected, and you should see Zoom Video in the list.">
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195436885/cbadd504ee38a38d04a4e3b0/i1600x900-4xL_INEpD40Q_vfxmvv.png?expires=1736301600&signature=898b4bcd310930e58ac0194f2e1792ebd11bdfe7f6e191eb0c4a0657fbeb2e55&req=dSEuE819m4lXXPMW1HO4zXXH0lIAkcVHfWyR%2B8JqPmCMSSevEFrU5r4WwyWm%0A9Z1w%0A)
|
||||
</Step>
|
||||
<Step title="Now, you should be redirected to Cal.com's Installed Apps page with Conferencing Tab selected, and you should see Zoom Video in the list.">
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195436885/cbadd504ee38a38d04a4e3b0/i1600x900-4xL_INEpD40Q_vfxmvv.png?expires=1736301600&signature=898b4bcd310930e58ac0194f2e1792ebd11bdfe7f6e191eb0c4a0657fbeb2e55&req=dSEuE819m4lXXPMW1HO4zXXH0lIAkcVHfWyR%2B8JqPmCMSSevEFrU5r4WwyWm%0A9Z1w%0A)
|
||||
</Step>
|
||||
<Step title="Once you have added Zoom as your event-type location, you will see it as shown in the image below. Click on Save and all your meetings should now have Zoom video as the default location.">
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195436924/7a88ec7a77429a24a9a75471/i1600x900-vYzr65Ib7Uv9_jjyzah.png?expires=1736301600&signature=21a18b9ff1b375ca6ec4792d3727b3c2e16e8db18ec29760491692200d6870da&req=dSEuE819m4hdXfMW1HO4zanktiNfj1eIe0J%2Fp9MMDKIRdtA6YQ1HRSUX1hIW%0AkiHT%0A)
|
||||
</Step>
|
||||
</Steps>
|
||||
That's it!
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
title: Booking frequency
|
||||
---
|
||||
We feel that our users must have a feature that will help them limit their booked events on a daily basis and deal better with the stresses of modern life. Every event carries different weight of stress and burnout, and so the events that lead to higher burnout should ideally be controllable in the frequency per day.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195332624/43843b20afd9f1de0e63b10c/i1600x900-18YHphbgt72V_sgiczh.png?expires=1736299800&signature=2f7b71afb859388017f4f6a920810e265ca37eddc7e70d53b5af2ee08ec3097e&req=dSEuE8p9n4ddXfMW1HO4zVf2vWFUOliCIN1RHjbTm4seHq%2Bxvf9sIlyG5cpo%0A0nABO7KL%2BW2tU%2FcYQdo%3D%0A)
|
||||
|
||||
If you don't want more than five bookings of any specific event per day so you can focus on other things or control stress and burnout through certain events, you can do just that with this feature.
|
||||
@@ -1,28 +0,0 @@
|
||||
---
|
||||
title: Booking Questions
|
||||
---
|
||||
|
||||
When you create a new event type, a few basic booking questions are already created for your new event type.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195328674/5cf0671a1754c2bcc14d0b0f/i1600x900--EhZhhVDENeT_d5hqpa.png?expires=1736299800&signature=25673b792b5aead285d43bf05aa9ce6b6279635144f252f04069d69f83560df0&req=dSEuE8p8lYdYXfMW1HO4zS7cwFu2lo5k0J6%2B3ZaX8mGAis1BLuI1sEfhFDSZ%0AL5j6u6B7boAdZhNhQBo%3D%0A)
|
||||
|
||||
If you'd like to collect more information about your attendees, you can use our booking questions feature and get the necessary information filled out by your attendees when booking. The booking questions can be either required or optional, depending on your needs.
|
||||
|
||||
Let's say that you require the phone number of each attendee. You must select the correct input type, write up your placeholder and label, and tick the requirement.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195328673/189deb6c226b121876c46d36/i1600x899-jFm4d0m-YSZS_gxjbj9.png?expires=1736299800&signature=a442bc45f8b35fe17b675408dac269849f288c39bda1a166e1ada14607832c45&req=dSEuE8p8lYdYWvMW1HO4zRWpinJEZZIX4EiI22oOYTl%2FHb8z4XcsP9o%2BLxet%0AU07q271Ul8%2F0pwom%2BwI%3D%0A)
|
||||
|
||||
A new field will appear on the booking page where attendees enter the booking details.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195328672/a1e140f558e697a4e9c7e5c3/i1600x899-tqxx1R_u8ZX8_pmcadu.png?expires=1736299800&signature=4ba4ce84326b48fe642414cfb2841883d2eadc6f342dca40fdabea047ce5f0d3&req=dSEuE8p8lYdYW%2FMW1HO4zaD8%2FCEXyPDUc9WC%2FX6ewRZlNJ1h%2F0w0ckZONRrc%0AupyqbQfJY3to2UPRmAs%3D%0A)
|
||||
|
||||
You can also make use of the booking questions feature to allow prefilling the **[booking fields](https://cal.com/docs/core-features/bookings/prefill-fields)**
|
||||
|
||||
## Booking field identifier
|
||||
|
||||
The **`identifier`** for booking questions is a unique text input that users provide when creating a booking question. This identifier serves as a distinctive key for each specific booking question, establishing a clear and unique reference that can be used throughout the platform wherever that question is addressed or its answers are processed.
|
||||
|
||||
The primary utility of the identifier emerges when individuals schedule meetings. As they fill out booking forms, the responses they provide are tied back to the specific booking questions via these identifiers. This system ensures precision and clarity, as each answer is unmistakably linked to its corresponding question, eliminating any potential confusion especially when similar or related questions are present.
|
||||
|
||||
By utilizing the **`identifier`** for booking questions, users benefit from a more organized, efficient, and error-resistant way of handling booking data, both within the platform and in conjunction with external systems. This streamlined approach not only enhances data management and integrity but also contributes significantly to the overall user experience.
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Booking success URL
|
||||
---
|
||||
|
||||
If you want to redirect attendees to a custom URL after each completed booking, this feature will allow you to do just that.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195338040/668e8ccbc180bb13ccd454d3/i1600x900-k5I7jhKC_ej8_pmjpxc.png?expires=1736299800&signature=c822a91e8d9e8017a7a5f468a6bc177ebbd2e3e922ba5ec35d81777c42c49a9b&req=dSEuE8p9lYFbWfMW1HO4zbcHsYmzdsM4EJxOsiY5MAXdC2RQSzt6srJQCupm%0A%2FUQS8oHY6mp9yOPCsF0%3D%0A)
|
||||
|
||||
This feature is most commonly used to redirect your attendees to your website or a simple "Thank you" page after they submit their booking.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
title: Collective Events
|
||||
---
|
||||
|
||||
Collective event types are ideal when the booker needs to book a meeting with several team members at one time. With Cal.com Teams, you can easily create a team event type and select collective scheduling as the scheduling type. You can then pick exactly which team members should co-host this event type collectively.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198415245/17cad46157f1e76e621fd9c4/i1600x899-mIkRTG3JZGA-_t2q4de.png?expires=1736325000&signature=23aa1e5df707fe86cbedd8ca76557261ab0ddf5394ffa7a4ccb298c471a9a4ec&req=dSEuHs1%2FmINbXPMW1HO4zc%2BQhQ6N1u12gGNXud8OL2HWw%2FiHm13enr9VaIBj%0AZ%2B6%2FYd9Z13GLMPcKfP0%3D%0A)
|
||||
|
||||
Cal.com then evaluates availability on the basis of each member's availability by default. However, you also have an option to put forward a common schedule for this specific event type which will be used as the availability and over-ride each member's availability for this event type.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198415242/81e383ef1ad8f3e70cdadb91/i1600x899-C7et3rTz2nGC_zkie4g.png?expires=1736325000&signature=43fc3e00c6ea9d350bc59c65b0f58d7479309f022e861a85d1e67c36c037b6f8&req=dSEuHs1%2FmINbW%2FMW1HO4zRJuiACbPhZnvVY8S0WiTS3gy%2BPssvqX2wPEZE5k%0A7n3wYZmf9TWaJcDdeEE%3D%0A)
|
||||
|
||||
When you need a group of team members to attend the same meeting, collective events are fantastic. Seeking a convenient time for all of your team members to attend the meeting is a breeze with this method.
|
||||
@@ -1,33 +0,0 @@
|
||||
---
|
||||
title: Create your first event type
|
||||
---
|
||||
|
||||
<Frame className="aspect-video">
|
||||
<iframe
|
||||
width="100%"
|
||||
height="100%"
|
||||
src="https://www.youtube.com/embed/DboZrQjHgWU?si=D6cj8e7absHolPLA"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
</Frame>
|
||||
A quick walkthrough of how to create event types.
|
||||
|
||||
## The basics
|
||||
|
||||
Head over to the **event types** page, then click the **New event type** button in the top right.
|
||||
|
||||
You'll now be presented with the create event type dialog, which prompts you to enter in the basic information needed to get a working event type set up:
|
||||
|
||||
- Title
|
||||
- URL (e.g. cal.com/bailey/**example-event**)
|
||||
- Description
|
||||
- Length
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195433173/459d590315726cde2c3da6a6/i973x933-2xQuLlTcg2xz_cvs7li.png?expires=1736301600&signature=cb4a1bc917705b98367e3e8b391fcde42d13240eeb044c61f2d3805509eec0e5&req=dSEuE819noBYWvMW1HO4zdvMofsCtCGMAPo%2BOL%2BAzF%2B0SWwGv6se8fklfFKd%0ARDLOujK%2Boq3LGcxdQ5Q%3D%0A)
|
||||
|
||||
New event type dialog
|
||||
|
||||
This is all you need to get an event type up and running, but you can configure additional settings for greater control.
|
||||
@@ -1,42 +0,0 @@
|
||||
---
|
||||
title: Create a phone-only event type
|
||||
---
|
||||
|
||||
> **Note:** This feature is currently only available for organization team event types.
|
||||
|
||||
To create a phone-only event type where attendees only need to provide their phone number, follow these steps:
|
||||
|
||||
1. Navigate to any team event type settings page and click on the "Advanced" tab.
|
||||
|
||||
2. In the "Booking questions" section, you'll need to modify two fields:
|
||||
|
||||
### Email Field
|
||||
<Frame>
|
||||
<img src="/images/EditEmailQuestion.jpg" />
|
||||
</Frame>
|
||||
- Click the "Edit" button next to the Email field
|
||||
- Uncheck the "Required" option
|
||||
- Click "Save"
|
||||
|
||||
Then:
|
||||
<Frame>
|
||||
<img src="/images/EmailToggle.jpg" />
|
||||
</Frame>
|
||||
- Toggle off "Show on booking page" to hide the email field completely
|
||||
|
||||
### Phone Number Field
|
||||
<Frame>
|
||||
<img src="/images/EditPhoneNumber.jpg" />
|
||||
</Frame>
|
||||
- Click the "Edit" button next to the Phone number field
|
||||
- Check the "Required" option
|
||||
- Ensure "Show on booking page" is toggled on
|
||||
- Click "Save"
|
||||
|
||||
3. After saving your changes, your booking page will now only show the phone number field as required:
|
||||
<Frame>
|
||||
<img src="/images/PhoneOnlyBookingPage.jpg" />
|
||||
</Frame>
|
||||
|
||||
This setup is perfect for scenarios where you only need the attendee's phone number for communication.
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
---
|
||||
title: Create a recurring event
|
||||
---
|
||||
|
||||
Recurring event types are ideal when the booker needs to schedule a meeting that happens on a regular basis. With Cal.com, you can easily create an event type and select recurring scheduling as the scheduling type. You can then define the frequency and duration of the recurring meetings and customize the availability settings to fit your needs. This makes managing ongoing appointments seamless and efficient.
|
||||
|
||||
<Frame className="aspect-video">
|
||||
<iframe
|
||||
width="100%"
|
||||
height="100%"
|
||||
src="https://www.youtube.com/embed/yGiZo1Ry5-8?si=wocHjzqdiTtKOMwV"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
</Frame>
|
||||
|
||||
Suppose you are a manager and would like to offer weekly one-on-one meetings for your team members, with a maximum of 12 sessions per person. You can set up a recurring event to accommodate this by:
|
||||
|
||||
<Steps>
|
||||
<Step title="Creating a new Event Type in your Cal.com account">
|
||||
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195431722/4c2af5a1046f7eb81fd8214a/i1600x900-TOyuB4IVrvj9_ciusy5.png?expires=1736301600&signature=1ef7fc8228d481d21dc30b29be55fdfa8cbacea367d5cfda187cbf384ea0bdba&req=dSEuE819nIZdW%2FMW1HO4zaktYQsofYsrkIv8vi63YefChbwCOro9YA1180EI%0AdDGJ%0A)
|
||||
|
||||
</Step>
|
||||
<Step title="Toggling on the Recurring Events option in the Event Type settings to enable a repeating schedule for these meetings.">
|
||||
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195431747/0d20785d293e3d7a9e987f4c/i1600x900-RzNl_eQIOUZ7_qmawjw.png?expires=1736301600&signature=517dbb203b7ab96662861135e1eed820e704638584143b27e56870f8b44acfc7&req=dSEuE819nIZbXvMW1HO4zdMmCQ4J5zwW2Te%2B3EUjp%2Byo9rb%2BtPSXv3eyJ0Xe%0AYBFN%0A)
|
||||
|
||||
</Step>
|
||||
<Step title="Selecting the weekly frequency and setting a maximum number of events at 12, in this case - representing the maximum number of one-on-one sessions per team member.">
|
||||
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195431762/7c13ad854b946e464c0113f3/i1600x900-nPCQKbW_wsVq_abagc2.png?expires=1736301600&signature=3ebbf9ee246762e58c9732c6af2e0e96538501a7c5bcc94c427fdf89a2b7bac9&req=dSEuE819nIZZW%2FMW1HO4zVwBu8tAtUfAl5nOuLqnywtgheMUSU05aDD4%2BiDt%0APdOo%0A)
|
||||
|
||||
</Step>
|
||||
<Step title="Configuring the duration, availability, and other necessary settings for these meetings."/>
|
||||
</Steps>
|
||||
|
||||
By setting up the recurring event this way, your colleagues can easily subscribe and participate in the weekly one-on-one meetings with you, up to the maximum limit of 12 sessions.
|
||||
@@ -1,22 +0,0 @@
|
||||
---
|
||||
title: Create a secret event type
|
||||
---
|
||||
|
||||
<video
|
||||
controls
|
||||
className="w-full aspect-video"
|
||||
src="https://www.loom.com/share/5d15f435368d46518996ac2d6a478b2d?sid=fbeebb8b-fe1d-4888-ae04-48b3ca8320db"
|
||||
></video>
|
||||
|
||||
<Steps>
|
||||
<Step title="Login to the cal.com account, or if self-hosting, login to your instance of cal.com." />
|
||||
<Step title="Click on the event type you wish to hide, or you can proceed to create a new event type. If this is your first event type, you can proceed by following the guide for**[Creating your first event type](https://cal.com/docs/how-to-guides/creating-your-first-event-type)**" />
|
||||
<Step title="In your event type, you can simply toggle the option called **Hide from profile** as shown in the image.">
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195432525/cbdef8925389f7292cceb4b6/i1600x900-t8KSO9n6gszI_awkmub.png?expires=1736301600&signature=1dcc1c97cfa643273face3b04c10578e6255768a1b023fbc4c0b51bb885046e2&req=dSEuE819n4RdXPMW1HO4zXQjYu4IdbcKXa9WZR%2Bm9OZiQb438W3tAstFgGxM%0AnQmt%0A)
|
||||
</Step>
|
||||
<Step title="Click on **Update** to save your changes. That's it. Your event type should now be a secret, and will not show up on your public page." />
|
||||
</Steps>
|
||||
|
||||
Alternatively, as of V2.0 you can simply visit the **`/event-type`** where the list of all your event types shows up, and simply click on the toggle as shown in the image below to confirm if you wish them to show up on your public page. Please note that when this toggle is enabled, it means that the event type **will** show up in your public page and to hide them, they need to be **toggled off**
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195432336/49859ca12304fc6b9b5c7dab/i1600x900-borJe29sxBQD_acs2bv.png?expires=1736301600&signature=fd59e80b05d114599f3c33b0cfdc25aa56579bc6e79cb9c6bb8f729d4d916a93&req=dSEuE819n4JcX%2FMW1HO4zXBJMPnnLagXHLYdT7k7w9tnkoc%2Fbor51oMxhkys%0AzjZH6YjlTLrX5uCpYzs%3D%0A)
|
||||
@@ -1,16 +0,0 @@
|
||||
---
|
||||
title: Custom event name in the booking
|
||||
---
|
||||
Custom event names allow bookings to take in information from the booking and add it to the title. This feature allows the option to breaks away from the default "Event name" with "Attendee".
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195339126/934290c58548d3f5a4620cb4/i1600x900-hFpSqIX3Hvsw_gsg746.png?expires=1736299800&signature=b09aa4b7123b081b8670ef3e86542adbb66028e618b1c3f64aec3ad2eee81730&req=dSEuE8p9lIBdX%2FMW1HO4zcnyVy187R6euhJKPXdNBy%2FBBk6%2FRnFtGhnUDMOV%0AYCkEbtLzNr73rWdLy%2Fo%3D%0A)
|
||||
|
||||
You can currently use the following variables here:
|
||||
|
||||
| **Name** | **Definition** | **Example** |
|
||||
| --- | --- | --- |
|
||||
| Event type title | The event type name | Weekly Meeting |
|
||||
| Organiser | Your full name | John Doe |
|
||||
| Scheduler | The full name of the scheduler | Jane Doe |
|
||||
| Location | The location of the event | Acme Cafe |
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
title: Custom time-slot intervals
|
||||
---
|
||||
Using the custom time-slot interval feature in your account settings, you can change the way your bookable appointment slots are displayed in your public booking page. The time slot intervals indicate the slots available for booking; therefore a smaller interval will mean lots of little slices, while a larger interval will mean a smaller amount of bigger durations.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195340149/eefebf83520a1f5b7f50b3fa/i1600x900-4WD80WUzPKcm_gxphaa.png?expires=1736299800&signature=c3bd15a367e0fadc0b0fb2045642937947c7ec9dcadd76193a97ca792dc375e2&req=dSEuE8p6nYBbUPMW1HO4zWv0CB59DH4hFWyZLHR3NNdQW93ThoswKl%2BqdfAB%0ApQyOJVSYL2CONGTpDTo%3D%0A)
|
||||
|
||||
This change allows you to have more freedom in case of long event types by increasing the number of potential slots available, and in case of small event types, you can put a good amount of breather between them.
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
title: Disable confirmation email for attendees
|
||||
---
|
||||
|
||||
Users who wish to disable booking confirmation emails sent from Cal.com to attendees can do so provided they have a workflow enabled to send an email to attendees upon booking for that specific event type. Follow the steps below to disable confirmation emails:
|
||||
|
||||
- **Create a workflow for that event:** Users must have a workflow enabled that sends an email to attendees upon booking for the specific event type. This workflow serves as an alternative method of confirmation. Make sure you select the correct event type for that workflow.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195423432/2c9c9f30ade7ee1ae173118a/disable-default-email-1.png?expires=1736300700&signature=355f39e9d380978670e8d39f8558f1ed6f895466fc02b0deeac68487797d7d97&req=dSEuE818noVcW%2FMW1HO4zR06qoPFOwUqcwWQl6bm09qm8kBenkGkUToi63NP%0ATboqv9IlDwE3eBHy7kA%3D%0A)
|
||||
|
||||
**Steps to Disable Confirmation Email:**
|
||||
|
||||
<Steps>
|
||||
<Step title="Access Event Settings">
|
||||
Navigate to the advanced settings of the event type for which you wish to disable confirmation emails.
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195423992/6fa76ec5fc271c2a020eaddd/disable-default-email-2.png?expires=1736300700&signature=b18f5c859e2de22ea4e6b4abbc0bc4a2f898b2ff4929afaeb128ab76180e28fb&req=dSEuE818nohWW%2FMW1HO4zQ3mS%2B7Q4M6D6Gtsh2Uduo%2BGXVPTmfoxpNfURrfP%0A9gGk%0A)
|
||||
</Step>
|
||||
<Step title="Toggle Confirmation Email Setting">
|
||||
Within the advanced settings of the event type, locate the option labeled **`Disable default confirmation emails for attendees`** at the very bottom. Toggle this option to disable confirmation emails for attendees.
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195424004/43841b519b9b91ea7dc0817c/disable-default-email-3.png?expires=1736300700&signature=d78a65cd60b7ed6e5024bab3f7dea191dd5bacbece2a5dc02e99865eddb1c55a&req=dSEuE818mYFfXfMW1HO4zZsqMYmVMVKhWCWFTtRcPSG%2Fny9YmVX6w78S8Tup%0AAmm8%0A)
|
||||
</Step>
|
||||
<Step title="Save Changes">
|
||||
After disabling confirmation emails, remember to save your changes to ensure they take effect.
|
||||
</Step>
|
||||
</Steps>
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
title: Disable guests
|
||||
---
|
||||
|
||||
If you do not wish for your booker to add other guests to your event type, you can make use of this feature to disable adding guests to the event during the booking of this event.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195341348/d2d8b869fda0990ad0d810f8/i1600x900-0UQQmiszv6Ol_pz3ogv.png?expires=1736299800&signature=9bd2f4ed8da52f7b22bb7255cbc8505e04d75cbf20515fe67a2c0164880ce492&req=dSEuE8p6nIJbUfMW1HO4zZmFRiEQe%2FmvLShNjDQR8WrjzS1rqweVFi5wuB1r%0ARK8eBgvIpsrvGrA0iAU%3D%0A)
|
||||
|
||||
It is part of the booking questions that you can make use of. By default, it is allowed for the booker to add guests. By default, the Add guests toggle is enabled which allows the booker to add guests to the booking. If you wish to disable it, simply toggle it off.
|
||||
|
||||
**Please note that they may still be able to invite guests using their personal calendar invites.**
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
title: Event type slot display issues
|
||||
---
|
||||
When encountering discrepancies in slot availability on the cal.com event type/booking page, follow these steps to troubleshoot and resolve the problem: **If Booking Slots Are Available When You Are Unavailable:**
|
||||
|
||||
<Steps>
|
||||
<Step title="Check Connected Calendar">
|
||||
- Review your connected calendar for events marked as "free" instead of "busy," particularly all-day events such as vacations or out-of-office days. Some calendar providers, like Google Calendar, default to marking such events as free.
|
||||
- Navigate to your cal.com settings under “**Settings**” > “**Calendars**” and ensure that the calendar containing busy events is toggled to be checked by cal.com for conflicts.
|
||||
</Step>
|
||||
<Step title="Verify Date Overrides">
|
||||
- If you've set up date overrides in the availability settings, ensure they are configured correctly. Date overrides may override your availability for specific time periods.
|
||||
</Step>
|
||||
</Steps>
|
||||
### If Booking Slots Are Unavailable When You Are Available:
|
||||
|
||||
<Steps>
|
||||
<Step title="Review Connected Calendar">
|
||||
|
||||
- Check your connected calendar to confirm that events marked as free are indeed marked as busy during your desired booking times.
|
||||
</Step>
|
||||
<Step title="Adjust Time Intervals">
|
||||
|
||||
- Verify the time intervals set for your event type. If your availability starts or ends at non-standard intervals (e.g., 8:15 - 11:30), adjust the time intervals accordingly. By default, cal.com displays slots starting on the hour only. Increasing intervals to 30 or 15-minute increments will display additional slots. Refer to the **[time slot interval documentation](https://cal.com/docs/core-features/event-types/custom-time-slot-intervals)** for more information.
|
||||
</Step>
|
||||
<Step title="Check Buffer Times">
|
||||
|
||||
- Review buffer times applied before or after meetings. Buffers subtract time before or after a meeting, potentially affecting slot availability. Refer to the **[buffer time documentation](https://cal.com/docs/core-features/event-types/event-buffer#an-example)** for guidance.
|
||||
</Step>
|
||||
<Step title="Verify Booking Frequency Limit">
|
||||
- Ensure that the booking frequency limit is set appropriately. Adjust settings accordingly if there are restrictions on how frequently bookings can be made. Refer to the **[booking frequency documentation](https://cal.com/docs/core-features/event-types/booking-frequency)** for assistance.
|
||||
</Step>
|
||||
<Step title="Check Limit Future Bookings">
|
||||
- Review the "Limit Future Bookings" setting to ensure it aligns with your availability preferences. Adjust this setting if necessary to allow for future bookings. Refer to the **[limit future bookings documentation](https://cal.com/docs/core-features/event-types/limit-future-bookings)** for more details.
|
||||
</Step>
|
||||
</Steps>
|
||||
By following these steps and checking each aspect meticulously, you should be able to effectively identify and resolve issues with slot availability on the cal.com event type/booking page. If the problem persists, don't hesitate to contact cal.com support for further assistance.
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
title: Dynamic Group Links
|
||||
---
|
||||
|
||||
With dynamic group links, bookers can dynamically create group links by adding users using + between their usernames.
|
||||
|
||||
<Frame className="aspect-video">
|
||||
<iframe
|
||||
width="100%"
|
||||
height="100%"
|
||||
src="https://www.youtube.com/embed/VZ5PfQzzxBw?si=JSMheVHG0SmRjnt2"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
</Frame>
|
||||
|
||||
This feature allows you to append virtually unlimited number of Cal.com users by simply adding their usernames with a **`+`** between adjoining usernames, and have a collective group. Try it now with Bailey and Peer, visit **[https://cal.com/bailey+peer](https://cal.com/bailey+peer)**
|
||||
|
||||
This is an opt-in feature where a cal.com user can enable/disable if they wish to participate in this and allow the bookers to add them as part of a dynamic collective group.
|
||||
|
||||
<Frame>
|
||||
[](https://downloads.intercomcdn.com/i/o/1198206973/d6552a57a7e6373ab7087a30/i1600x900-jTlC4G2v-FyV_ujxqws.png?expires=1736325000&signature=9d685e3ba68f1d0fabec8a286c8c790e09228e4e94b0c719b875dcfe9ff97f33&req=dSEuHst%2Bm4hYWvMW1HO4zVATLvPyLIQC%2B%2BKbvufXrzwWG%2B0uYgDqUHz1EKjy%0AhdxRQuo%2Bixvwt0XztFs%3D%0A)
|
||||
</Frame>
|
||||
|
||||
Learn more about dynamic links here:
|
||||
|
||||
<Frame className="aspect-video">
|
||||
<iframe
|
||||
width="100%"
|
||||
height="100%"
|
||||
src="https://www.youtube.com/embed/60HJt8DOVNo?si=1naHI1wcbN5_QOvw"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
</Frame>
|
||||
|
||||
Dynamic group links are enabled by default. If you wish to disable this feature in your account, you can head to **[settings/my-account-general](https://cal.com/settings/my-account/general)** and switch the toggle.
|
||||
@@ -1,35 +0,0 @@
|
||||
---
|
||||
title: Event buffer
|
||||
---
|
||||
|
||||
Event buffers are time spaces that can be appended before and/or after an event. This is helpful in scheduling your availability such that you have time to prepare for a meeting, take breather between two meetings/events or to accommodate travel time in case of events on a physical location.
|
||||
|
||||
You can customize buffer time for each event so that you can accommodate the needs of that specific event type to further optimize your event type setup.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195342457/4effb7e2ddca3abe6255f859/i1600x900-uzADteTYBNdE_dtrrdz.png?expires=1736299800&signature=8385572e45392f75874c3108b091b8aa45544b4bf94c30fa746eac0e977fe7e1&req=dSEuE8p6n4VaXvMW1HO4zYc2go6a4ghGZ5iwZ0kn3FIaHKGTu%2BwFrmbxkS2L%0A4jIA6QLEbqRSBwNBJak%3D%0A)
|
||||
|
||||
The before event buffer time allows the space of time of chosen length **before** the events being booked on Cal based on your availability. The after event buffer time allows the space of time of chosen length **after** the events being booked on Cal based on your availability. Hidden events are flexible; they can be whatever you need them to be. Whether you want to use hidden events to facilitate sponsorship meetings, organize a fundraising drive, or offer one-on-one mentoring sessions, this feature can help you make the most of your meetings while keeping them out of the public eye.
|
||||
|
||||
Event buffers are a great way to maintain a breathing space between multiple events in a day. Buffers are taken into consideration while booking a Cal event, if that Cal event has a buffer time selected. This simply means that buffers cannot overlap Cal events and thus a Cal event with buffer time can only be booked respecting the buffer time (before event, after event or both).
|
||||
|
||||
## An example
|
||||
|
||||
Given the availability from 9am to 5pm (09:00-17:00) and a 60-minute event with a 30-minute buffer before and a 30-minute buffer after, the total calendar time required for an event is indeed 120 minutes. But the buffer is applied around busy times and **not to the start or end of the working day**.
|
||||
|
||||
So, in this scenario (considering you didn't modify the **[Custom time-slot intervals](https://cal.com/docs/core-features/event-types/custom-time-slot-intervals)** in this example):
|
||||
|
||||
1. The first available time slot starts at 9am. The buffer before doesn't push this since there's no preceding busy time.
|
||||
2. The event itself is for 60 minutes.
|
||||
3. There's a 30-minute buffer before & 30-minute buffer after the event. But again, if there's no following busy time immediately after, this buffer doesn't push the next available slot.
|
||||
|
||||
Thus, the sequence is:
|
||||
|
||||
- **9:00-10:00am**: First available slot
|
||||
- a. **10:00-11:00am**: If Slot 1 is booked, this slot will be blocked as buffer (after) to allow the buffer period relative to the 9-10am slot.
|
||||
|
||||
b. **10:00-11:00am**: If Slot 1 is free, this slot will be free
|
||||
|
||||
c. **10:00-11:00am**: If Slot 2 (10:00-11:00) is booked, since booking slot 1 (9:00-10:00) would imply that there will not be an after buffer (as 10-11 is already booked). Hence, slot 1 will not remain bookable anymore.
|
||||
|
||||
You can take a look at our guide to learn **[How to set buffer time](https://cal.com/docs/how-to-guides/how-to-set-buffer-time)**.
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
title: Event Types
|
||||
---
|
||||
|
||||
Event types are your pre-set meetings, events, consultations, etc., which you can share with potential attendees. You can create as many event types as you need with each account, and each event type is customizable in terms of its name, URL, duration, availability, and location of the event.
|
||||
|
||||
<Frame className="aspect-video">
|
||||
<iframe
|
||||
width="100%"
|
||||
height="100%"
|
||||
src="https://www.youtube.com/embed/194kfVM6Zs4?si=7PXItDFQmKYA0ke-"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen
|
||||
/>
|
||||
</Frame>
|
||||
|
||||
A deep dive into the advanced settings of each event type.
|
||||
|
||||
Event types allow you to create different events for different occasions when booking a time with you in your calendar. These can be named differently, have different time durations and configurations.
|
||||
|
||||
**For example:** A HR person could have a "Job Interview" event type lasting 30 minutes, a "Performance Review" event type for 60 minutes both with different settings on each.
|
||||
|
||||
You can create event types either for your personal Cal.com link, or for your team (if you've joined one). Personal event types set up a meeting where people can book just you, whereas team event types allow you to either book one person from the team, or multiple people at the same time.
|
||||
|
||||
Once you preview the URL of your event type, that event type's availability will show in the form of slots that are available for booking. Your event type can also check your integrated calendar for conflicts; any current events in your calendar will occupy the associated time slot with that calendar event.
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Hide notes in calendar
|
||||
---
|
||||
|
||||
Toggling this option in the event type settings will hide additional inputs and notes in the calendar entry. They will still be sent in your email confirmation.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195343599/396f9884f47ed0dced3d95ec/i1600x900-e7gzhDg2A7wR_hxib3m.png?expires=1736299800&signature=101dcff39e5129a8ecc03308bfc1564dd293c1ef0b249b8fde74fcf1b3ef940d&req=dSEuE8p6noRWUPMW1HO4zfvmqQ%2B8IUVJyr7pDFsNo2IDz7nzO7RzPmtX9EvN%0A%2BHb3z6Vd%2Ft8pKIZiuFg%3D%0A)
|
||||
|
||||
Most of the entries in notes and additional inputs contain personal information, and if you have a team or shared calendar, for example, you can protect your attendee's privacy by hiding all this info.
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
title: How to add a location to your event type
|
||||
---
|
||||
To add a location to your event type, you simply click on the event type to customise it. Once in, all you need to do is click on the Location select-box and select the location of your choice.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195437585/99cefb7baf0e15668509ba2b/i1600x899-e_I3OOSl6l2B_zphipk.png?expires=1736302500&signature=d024df44cd510d22bd75edb86465de02ded18ea82e7b6aad582066f04ce491a9&req=dSEuE819moRXXPMW1HO4zfoMLzTp8oKn01fT03W3IVm90Ap%2FoYIcidcMJKD4%0AS5y4YXNBVjeTEzIybx0%3D%0A)
|
||||
|
||||
In this example, we're choosing Cal Video, and it shows up as shown in the following image. Finally, click on Save to confirm your selection (marked in green in the following image).
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195437584/a510ea6046a05567206c15d4/i1600x899-hfWqQvPszL3z_klomel.png?expires=1736302500&signature=210a293ffd14d518df0c1f9c6adfef1e060184905a73fa311428489e7c3bc8f7&req=dSEuE819moRXXfMW1HO4zR74VKbZE%2FpxdlufpVLwc7NXGOHFzurXy9egBkio%0AwVUjjVgg4OfrpKFNzHY%3D%0A)
|
||||
|
||||
To add any conferencing apps such as Zoom, Google Meet, etc. or messaging apps such as Whatsapp, Signal, etc. as the location of your event type, you would need to install the app from the Cal.com app store prior to following the steps mentioned in this guide.
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
title: How to set up an event type to receive payments
|
||||
---
|
||||
|
||||
Cal.com uses Stripe to allow you to receive payments when someone books your paid event type.
|
||||
|
||||
To start taking payments, please follow these steps:
|
||||
|
||||
1. Go to the Cal.com app store -> cal.com/apps
|
||||
2. Search for Stripe using the Cal.com's app store search
|
||||
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195438478/53cae3464237fe8b5b5732a3/i1600x784-4szl8RRLxFIG_rvkfwz.png?expires=1736302500&signature=3635138e8ed7605c1e32d37ef38dd7e278949c6b60af33d96569effa81c8dd49&req=dSEuE819lYVYUfMW1HO4zcdGv441K3iK4tfJRU7p9XL5f1ByiaXpxbigw5gc%0AiRDK%0A)
|
||||
3. Click install.
|
||||
4. Proceed through to connect your stripe account with Cal.com (if you don't already have an account with stripe, you can do so in this step as well)
|
||||
5. Now that stripe is connected to your account, you can either open an existing event type or create a new one
|
||||
6. In connected apps, you should see stripe. Simply confirm the price you wish your bookers to pay and click on **`save`**.
|
||||
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195438496/ed5264946d248e316c9ef8c8/i1600x141-u3PhP4xiRb84_qgagos.png?expires=1736302500&signature=9ee8e0ad21895dd5679a987b269955f6164d41dec3f113e1465cb19f1a16583c&req=dSEuE819lYVWX%2FMW1HO4zSQBmo484xTPzFvABQEK9J3qXPedIfx5IP8CgO0b%0A2E4k%0A)
|
||||
7. That's it. You will receive payments as soon as someone books you using this event type.
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
title: How to set up requires confirmation
|
||||
---
|
||||
|
||||
To set requires confirmation configuration, you simply need to:
|
||||
|
||||
<Frame className="aspect-video">
|
||||
<iframe
|
||||
width="100%"
|
||||
height="100%"
|
||||
src="https://www.youtube.com/embed/zGr_s-fG84k?si=tcWJVCS9injCY_ds"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
</Frame>
|
||||
|
||||
<Steps>
|
||||
<Step>Log in to your cal.com account</Step>
|
||||
<Step>Open the event-type from the **`cal.com/event-type`** page and click on -> Advanced tab</Step>
|
||||
<Step>Enable the toggle that reads **`Requires Confirmation`**</Step>
|
||||
<Step>
|
||||
From here, -> Select **Always** if you want it to be an event-type that requires confirmation at all times
|
||||
-> Select **When booked with less than** `{{ num }}` `{{ time }}` notice to only make it an opt-in event
|
||||
type when a booking is made within the selected/configured time-frame.
|
||||
</Step>
|
||||
</Steps>
|
||||
[](https://downloads.intercomcdn.com/i/o/1195442097/a5b0328b32e60f326620c303/i1600x380-Exh1QWe7r2We_olub0g.png?expires=1736324100&signature=5879cbffb49ab0e23ed07c6ac7d243c36d9b29e30a86bb493191a24f46d0a80c&req=dSEuE816n4FWXvMW1HO4zV01ZfG9ZHkZlrmJG14MYHPZ01wnUaDUdGPmycd3%0Ab80g%2F18HT6Ab%2Ba6Jahc%3D%0A)
|
||||
@@ -1,23 +0,0 @@
|
||||
---
|
||||
title: How to set buffer time
|
||||
---
|
||||
|
||||
You can either set a before event buffer time, an after event buffer time, or both. Here's how to do that:
|
||||
<Steps>
|
||||
<Step>
|
||||
Select your event type where you wish to add the buffer time
|
||||
</Step>
|
||||
<Step>
|
||||
To add a buffer time, click on the Limits tab
|
||||
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195439258/e54bb9bb9943d0e595412af1/i1600x899-j1Js2xXV665U_gkxhvi.png?expires=1736323200&signature=6a70d0e16718b9186f3e498c390f04420a8c6886c717cf41f54eddb080692f11&req=dSEuE819lINaUfMW1HO4zYWCHcw7kcR3sv4%2FP48yT8sEuvMT%2BWudvYYSHIoO%0ANKRQ%0A)
|
||||
</Step>
|
||||
<Step>
|
||||
Then, click on the before event, or after event select box to view the buffer time options in minutes and select the buffer time of your choice
|
||||
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195439285/5758803d6a12925922fe5db7/i1600x899-yn-lgJSvElO2_hxc61t.png?expires=1736323200&signature=35c70379597750a4de7f9432019f3316d8359ee16dbf58eb4baf49c846578a05&req=dSEuE819lINXXPMW1HO4zfvmVjIthaHibVb9tN3vljD3awd5W4TMrAha45Uu%0A8fNp%0A)
|
||||
</Step>
|
||||
<Step>
|
||||
Click on Update to save your changes. Your event type should now consider the newly added buffer time
|
||||
</Step>
|
||||
</Steps>
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
title: How to set time slot intervals
|
||||
---
|
||||
|
||||
With Cal, you can choose to have custom time-slot intervals. By default, a time-slot interval is of the same length as the event type. However, within each individual event-type, you have the option to choose a different time-slot interval. Here's how to do that:
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
Select your event type where you wish to customise the time-slot interval
|
||||
</Step>
|
||||
<Step>
|
||||
To change the time-slot interval, click on the Limits tab
|
||||
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195440623/76d104d7f0c180af98c193af/i1600x899-NNeD2mH2_Zb6_mxmah8.png?expires=1736323200&signature=825b2d64b94fdbab49750aa7e4dec34cf35103f5ed88b8ef50712ed3fdaeede5&req=dSEuE816nYddWvMW1HO4zXuoZWlv56lpfhgdr2Wa0FtAZFnzuitUbtou%2F5c6%0AD2lx%0A)
|
||||
</Step>
|
||||
<Step>
|
||||
Then, click on the time-slot interval select box to view the interval options in minutes and select the time interval of your choice
|
||||
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195440629/65767db77c5cf6f76b665677/i1600x899-55XOS7BonfK3_bh1e5t.png?expires=1736323200&signature=0ec1d25061ecf8849811e12c1f4a186cee46470d57896944666b7ff3e3ca4823&req=dSEuE816nYddUPMW1HO4zW%2B4IcZU7qYXzV%2BL4kVpX45zs5gArEyEAyFEoKTZ%0AGwZt%0A)
|
||||
</Step>
|
||||
<Step>
|
||||
Click on Update to save your changes. Your event type should now consider the newly added time-slot interval
|
||||
</Step>
|
||||
</Steps>
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
title: Limit future bookings
|
||||
---
|
||||
|
||||
If there is a period in the future after which you think managing your Cal.com events carries some level of uncertainty, with this feature, you can limit how far in the future your event can be booked. You can select how many calendar/business days will be displayed on your booking page as available for booking, or you can select a date range after there will be no slots showing. This can also be useful if you want to keep an eye on your immediate events to ensure no unwanted bookings appear on your calendar.
|
||||
|
||||
Let's say you want to be available for bookings only two weeks ahead at any point in time. In your Event Type settings, select a number of days for how far into the future an invitee can book an event with you and set it to 14 calendar days. Now, bookers can only book you for two weeks ahead at any point in time.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195344503/7bfd63370747d720b993720d/i1600x900-TVdNc-x2ILeF_j1yhir.png?expires=1736299800&signature=82d78ccc6928fd95cbbc69946f9491ba2ad973a7cb6540c9181237d1a922d51e&req=dSEuE8p6mYRfWvMW1HO4zZQmmHt0EVFu0sKZNMC3U1%2BmUGv7NmQsdhqs5UwJ%0AcqsAGY8AnbpenNk329g%3D%0A)
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
---
|
||||
title: Location of the event
|
||||
---
|
||||
|
||||
Cal.com offers a wide variety of supported locations for your event types. As of V2.0, we offer the following locations:e
|
||||
|
||||
- **In person** This could be an address and accepts a text input.
|
||||
- **Link** You can provide a custom meeting link by choosing this location
|
||||
- **Attendee phone number** Cal will ask the attendee to provide their phone number at the time of booking
|
||||
- **Organizer phone number** You can provide your phone number as the booking location
|
||||
- **Cal video** You can use this option to have Cal Video as the booking location.
|
||||
- **Third party web-conference** You can select from a range of third party web conference apps such as Google Meet, Zoom, Microsoft Teams, etc.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195345620/5132e3eb7715b9fa6dc7fc7b/i1600x900-hVOD3f4YnzbC_bnf3hi.png?expires=1736299800&signature=3a7f2c673478e60b1b8cd99678d49feda8df5aa0c62d1460f5e05971f24e277f&req=dSEuE8p6mIddWfMW1HO4zVCbo4OcU%2BOUpkpswk2gdiInRR348%2FK5WgLHIEtG%0AhdsrlsIwoaokvyyLnDY%3D%0A)
|
||||
|
||||
Each event type can have multiple locations, and you can decide which of those (if any) should be visible before the booking is confirmed. If they are hidden at the time of booking, the attendees will only get the location details after the booking confirmation.
|
||||
@@ -1,40 +0,0 @@
|
||||
---
|
||||
title: Managed Events
|
||||
---
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198428692/0ac44603574fc0df4c2cffc7/i1144x588-DMzoXoeMhoFx_luyjfk.png?expires=1736325900&signature=b00aa16b00b0899b93cd602c00ce9f22f67bdfdab97423aab9b1259be9aaf2c9&req=dSEuHs18lYdWW%2FMW1HO4zVjg3v%2FeBApbuy3Bbe5ssiIJE3zT8hD37ArDwoLZ%0AgaFfE276VkYqKmilRPc%3D%0A)
|
||||
|
||||
Team admins now have the ability to manage event-types for their members, to facilitate creating common event-types for all members and managing them from one place.
|
||||
|
||||
A managed event-type comes with certain fields locked by the team admin, and certain fields open to be modified by the team members receiving the managed event.
|
||||
|
||||
Please take into account that Managed Events v2 do not support Webhooks and Apps. Subsequent releases of this feature will tackle them.
|
||||
## Creation
|
||||
|
||||
Be sure to be a team admin, and in case you are self-hosting, have the \`managed-event-types\`\` operational feature flag turned on.
|
||||
|
||||
When creating a team event-type, you will be getting the option to create a Managed Event like so:
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198428689/658d13c25b0ca137264fe280/i1440x865-O6cdyRL2PjhC_ekdzts.png?expires=1736325900&signature=43aee7bea8286692622aa710694003e678abd47f673be0f4af48c5eb5005e993&req=dSEuHs18lYdXUPMW1HO4zYUu869t7BfcsG%2Bq1FW8BTxE6yJx3eyz5jcOByL9%0AFIVJyRpQLYdE35sPt7o%3D%0A)
|
||||
|
||||
## Management
|
||||
|
||||
Once the managed event-type is created, you will be able to set all the fields you want to manage as a team admin. You can distinguish fields that will be locked by team members by the "lock" icon next to the field label, like so:
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198428688/773f803a18253aa2a89d9a0f/i1440x865-uHGxkJQLhcQJ_gesom1.png?expires=1736325900&signature=40d08d1d6d2089a96675210bc68781269aafa27c6ed915b964f332bd5f539fbc&req=dSEuHs18lYdXUfMW1HO4zbDdLXfxx4nXDeySa4FnPx5U4BrcQ5hzmdV6Gsbq%0ATyWtO1yFP8VBxTOM%2BOE%3D%0A)
|
||||
## Assignment
|
||||
|
||||
A crucial part of a managed event-type is the assignment of team members, so managed event-types can be created on your behalf.
|
||||
|
||||
Think of the managed-event you created as a team admin as an event template, that team members will get regular event types from it once they are assign to it.
|
||||
|
||||
Whenever you make changes to locked fields, every team member will also get the same change on their regular event type created upon this managed event-type. Note that unlocked fields will not have any effect on already created event types for assigned members, only for new assign members.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198428690/1a3b31cd8694444de4065bf4/i1440x865-OGEnJZJWYYaT_vlbcoc.png?expires=1736325900&signature=49f6c0f40996297f800080d2f5ac26ada0a68f30dfd0bfc5788358f33fa1598a&req=dSEuHs18lYdWWfMW1HO4zbV3kNudgXACqBkzT6x%2FoGdfaFeooyaWiffaEin8%0AicKAdQdZON7jzxFWonI%3D%0A)
|
||||
|
||||
Take into consideration that whenever you try to assign a managed event-type to a team member that already has an event-type with the same slug, you will be getting a pop-up message to confirm you want to proceed to delete the existing conflicting event-type from the team member and notify them about this so the managed-event type can be created in its place. Like so:
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198428695/970beb20471348d62e8cb555/i1440x865-EzE4OB5J-IE0_aqui8e.png?expires=1736325900&signature=a1605ccb3a240bbb413af406cde0b18dccc1ae70a1088745e1c3b8b7aeff295b&req=dSEuHs18lYdWXPMW1HO4zXqKXoZopayl5oB7hOApF%2BA9xCsEcUam8fH%2Fe7Bc%0ArHvbQff3mzhnw2sm%2Bew%3D%0A)
|
||||
For which, team members notified will be getting the following email notification.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198428691/3182994c34c084e86fc0c423/i1440x865-wCPoQ4wsQacm_mp8gzw.png?expires=1736325900&signature=358a9539c9d147718f809d3d3c6f4b924533f6ad0462ab6269bf1ffb36ad625e&req=dSEuHs18lYdWWPMW1HO4zfQk1rm%2BGGYjQGVeZbOxAO0N14R4%2FmuHDj%2Fcnmyr%0AuAsn%2BGn6hPVcq9hfHqg%3D%0A)
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Minimum notice
|
||||
---
|
||||
|
||||
Cal.com allows you to set how many minutes, hours, and days are required before someone books your time. This minimum notice allows you to define the exact space of time that you might need as a notice period before any event can be booked.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195346357/f78fe12313340246526adbc0/i1600x900-b5emq7AZJs03_cnctxl.png?expires=1736299800&signature=dc03f4887de4dbc85ad116fc9cd4fc20030fe13c85c92d5a588ab3fd7b180d5b&req=dSEuE8p6m4JaXvMW1HO4zff1wPeNUbdir1Th4xNggL7ZyjjzEjhyvR%2BsVk%2Fk%0AayOs4D2EBysYFG0k5es%3D%0A)
|
||||
|
||||
For example, if the potential attendee wants to book the meeting with you tomorrow at 5:00 PM and you have set a minimum notice of 120 minutes (or 2 hours), they need to submit the booking by 3:00 PM at the latest on the same day.
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Multiple durations
|
||||
---
|
||||
|
||||
If you want to allow a client to choose between a meeting of 1 hour and one of 30 minutes, you don't have to create two different meetings; one of 60 minutes and one of 30 minutes. Instead, Cal.com offers you the possibility of using the same event-type and offer meetings with several durations where the booker can pick the preferred duration.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195347197/f1e403455555384ec38557cc/i1600x900-BgMltGEPb6Na_ovq8ua.png?expires=1736299800&signature=8ac66befe1b64dd2e3277aa603336a2ba3d39c7fa9d6ba2553a57618c0d09ded&req=dSEuE8p6moBWXvMW1HO4zW8jTdJYIEvemQ2XLldUYQGjype2juOD0dnBUZaP%0ACR0XuAJqPP9PDF2n8E0%3D%0A)
|
||||
|
||||
There are multiple options to choose from, and no limit on the number of durations to offer the booker from these options. You also have a default selectable for situations where the booker doesn't necessarily need to select a duration, just that they have an option to choose one.
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Offer seats
|
||||
---
|
||||
|
||||
If you have an event type with the "Offer seats" feature toggled, you can have more than one attendee book a specific slot.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195347848/5997a6b26c8533e1fbc728a5/i1600x900-V3uoAv_cFR4n_tmadtm.png?expires=1736299800&signature=3e880f4ec92be0e9f00b62c3186f5a5112254e4aa6f64e3231937ad6728c6e72&req=dSEuE8p6molbUfMW1HO4zeJNgjpqzF5BsxaeJjowKMaEkNLxe6fM%2BvfGX1yJ%0A%2F8HpdrSWHrbCY6y8xIA%3D%0A)
|
||||
|
||||
This feature would be useful for all those businesses, classes, seminars etc. that offer "seats" as in attendance spots. Just select the maximum number of seats in your event-type settings and your attendees will be able to book slots multiple times.
|
||||
@@ -1,16 +0,0 @@
|
||||
---
|
||||
title: Recurring events
|
||||
---
|
||||
|
||||
For users that want to offer an event that attendees can subscribe to, they can toggle Recurring Events in the Event Type settings and set up a repeating schedule. This can be pretty useful If you offer educational guidance, fitness sessions, tennis classes, seminars, etc., that your attendees can participate in on a weekly, monthly, or even yearly basis.
|
||||
|
||||
Currently, rescheduling a recurring event is not possible.
|
||||
|
||||
For example, if you are a yoga instructor and you offer a class that can be attended once a week for ten sessions, this feature allows you to do just that by selecting the weekly frequency and a maximum number of events, or in this case - sessions.
|
||||
|
||||
Similarly, suppose you are a manager and would like to offer weekly one-on-one meetings for your team members, with a maximum of 12 sessions per person. You can easily accomplish that by following **[our guide here.](https://cal.com/help/event-types/creating-recurring)**
|
||||
|
||||
If the booker unsubscribes to a recurring event, all the future events are automatically cancelled.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195348547/a7011bd66c97de345e039e17/i1600x900-7Tu-5CT7VJ-n_dqkwhl.png?expires=1736300700&signature=e764d2d3de302e37ed3a3e7a7de2473c5f3c0053bacaf85fbd4d0f83bcb8c594&req=dSEuE8p6lYRbXvMW1HO4zTu5t9XuHt1SGxvIV1QnQ4uVZE5LZauSGHpcj91O%0AysL5ZGJxs3p5VjnV0j0%3D%0A)
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Require a certain criteria for allowing a booking
|
||||
---
|
||||
|
||||
Cal.com offers you the possibility of creating secret events also known as **hidden** events. A hidden event is a bookable appointment that can only be accessed via a private link. By default, this means that a hidden event won't show up on your Cal.com booking page. Hidden events are just like regular events in that they can occur in-person, over the phone, or via video chat. Hidden events are a handy tool to use as part of your scheduling infrastructure arsenal. Since they don't show up on your main booking page, they are ideal for meetings of a sensitive nature or personal nature.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195411465/b9e2e44bfcfc50e9bcb29161/i1600x900-FLwHauFSTfJy_hoqypx.png?expires=1736299800&signature=8db878eb32cea060f991bbef9528635341c73253cefa11ea5b1fbcd7e053274b&req=dSEuE81%2FnIVZXPMW1HO4zbtNV4zAs9FUWFJsJMapnqeDwj3NXZu%2FH%2FmQbdXy%0AyuWcK1a5CRKSil4Iun0%3D%0A)
|
||||
|
||||
You can use hidden events for everything from auditioning talent to organizing surprise parties or hosting breakaway rooms at virtual conferences. You can easily share the hidden event type by copying the URL and then sharing via email, sms or any other form of communication.
|
||||
@@ -1,66 +0,0 @@
|
||||
---
|
||||
title: Round Robin Scheduling
|
||||
---
|
||||
|
||||
Round robin event types allow you to distribute meetings amongst team members. At the moment, the distribution is based on availability, optimizing all options regardless of individual load. The booking will be assigned to an available host based on weights, priorties or the person least recently booked.
|
||||
|
||||
<Frame className="aspect-video">
|
||||
<iframe
|
||||
width="100%"
|
||||
height="100%"
|
||||
src="https://www.youtube.com/embed/93iOmzHieCU?si=cT8uKL8NcPr2e-Rg"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
</Frame>
|
||||
|
||||
## Underlying Mechanism
|
||||
|
||||
The round robin events when **not** using a common schedule offer slots which are formed using the union of all slots available for each round robin host. Once an available slot is chosen by the scheduler, the underlying mechanism of host assignment kicks in. The mechanism has a couple of options:
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198422483/d14818f9c10783dc8476464c/i1600x900-C_UH53xMxD-i_qiunh8.png?expires=1736325000&signature=5df708fc851410990c6fea369b0b62f5b398789242bc5bdc1c22fba60b5635b4&req=dSEuHs18n4VXWvMW1HO4zWqmBkE%2BZ3JWMFTkdeiauZnQSHXvN06q9fSVaKip%0AavyHm5oVKIdbmgRQwr8%3D%0A)
|
||||
|
||||
## Priority Ranking
|
||||
|
||||
Every round-robin host has a priority, by default 'medium'. The priority level assigned to a host directly influences their likelihood of being selected for bookings. A higher priority signals a stronger preference, positioning them as a more desirable option for hosting duties. This system ensures that hosts with higher designated priorities are given precedence in the booking process, optimizing the allocation of resources and streamlining event organization.
|
||||
|
||||
For instance, if John Doe & Jane Doe are both available in the same slot, but John has a priority **`High`** compared to Jane's priority of **`Medium`**, John will be booked. If several users have the same priority it will choose the least recently booked user.
|
||||
|
||||
You have the option to select priority for each host and based on their priority (and availability in the selected slot), the hosts will be booked.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1198422484/7032e3d2d3ca3403d38c4f34/i1600x900-sPtSh0GS1Fh8_uxplud.png?expires=1736325000&signature=389e28b33024e295f72dbde7e2778493002c82112e6c53ad81c84158f9aca581&req=dSEuHs18n4VXXfMW1HO4zRlMb6yqKrOjx2NU4OrJKRSE0s%2FlRT5audRg00I%2B%0Aox9K1McHnyM9RL5a3lI%3D%0A)
|
||||
|
||||
## Weights
|
||||
|
||||
Weights are optional and must be enabled to use. They allow you to determine how meetings should be distributed among hosts. When enabled, every host has a default weight of 100%. This means each host should end up with the same number of bookings by default. However, hosts with fewer availabilities can still end up with fewer bookings. Only confirmed bookings count towards past bookings.
|
||||
|
||||
For instance, Jane Doe has a weight of 100% and already has 8 bookings while John Doe has a weight of 200% and already has 12 bookings. Assuming both of them are available, the next bookings would go to John Doe until a total of 16 bookings is reached.
|
||||
|
||||
**Weight Adjustment**: If new hosts are added to a round-robin event type that has weights enabled, their weights will be adjusted accordingly. New hosts will have their bookings adjusted proportionally to their weight, taking into account the bookings that existing hosts already have. This ensures a fair distribution of bookings when new hosts are added.
|
||||
|
||||
### Example:
|
||||
|
||||
Existing host 1: 100% weight, 5 bookings
|
||||
Existing host 2: 200% weight, 9 bookings
|
||||
New host: 50% weight
|
||||
|
||||
Weight Adjustment = (Bookings of existing hosts / Sum of weights of existing hosts) \* New host weight
|
||||
|
||||
Weight Adjustment = 14 / 300 \* 50 = 2.33
|
||||
The new host will have a weight adjustment of 2 bookings.
|
||||
|
||||
## Least Recently Booked
|
||||
|
||||
This is the fallback method where the available round robin host who was booked least recently is chosen. If more than one host meets this criteria, one of them is chosen at random.
|
||||
|
||||
## Fixed hosts
|
||||
|
||||
If you wish to bring in Collective behavior into round-robin events, it is possible with Cal.com. You can now select which hosts you wish to always attend the meeting whilst the other selected team members who are booked on a round-robin basis.
|
||||

|
||||
**Fixed Hosts** are individuals who are consistently present at every meeting.
|
||||
|
||||
**Round-Robin Hosts** are members of a group who take turns attending meetings. Rather than everyone in this group attending every meeting, only one person from the group will attend each time.
|
||||
|
||||
For tasks like scheduling sales calls or product demos, where you have a pool of people among whom you'd like to distribute meetings, round robin is the perfect choice.
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Secret events
|
||||
---
|
||||
|
||||
Cal.com offers you the possibility of creating secret events also known as **hidden** events. A hidden event is a bookable appointment that can only be accessed via a private link. By default, this means that a hidden event won't show up on your Cal.com booking page. Hidden events are just like regular events in that they can occur in-person, over the phone, or via video chat. Hidden events are a handy tool to use as part of your scheduling infrastructure arsenal. Since they don't show up on your main booking page, they are ideal for meetings of a sensitive nature or personal nature.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195411465/b9e2e44bfcfc50e9bcb29161/i1600x900-FLwHauFSTfJy_hoqypx.png?expires=1736299800&signature=8db878eb32cea060f991bbef9528635341c73253cefa11ea5b1fbcd7e053274b&req=dSEuE81%2FnIVZXPMW1HO4zbtNV4zAs9FUWFJsJMapnqeDwj3NXZu%2FH%2FmQbdXy%0AyuWcK1a5CRKSil4Iun0%3D%0A)
|
||||
|
||||
You can use hidden events for everything from auditioning talent to organizing surprise parties or hosting breakaway rooms at virtual conferences. You can easily share the hidden event type by copying the URL and then sharing via email, sms or any other form of communication.
|
||||
@@ -1,16 +0,0 @@
|
||||
---
|
||||
title: Setting up location of team events on cal.com
|
||||
---
|
||||
|
||||
When scheduling a Team Event on **[Cal.com](https://cal.com/)**, specifying the location is crucial for ensuring seamless coordination, especially when utilizing video conferencing apps like Zoom, Google Meet, or Microsoft Teams. Here's how it works:
|
||||
|
||||
- **Selecting the Location**: While creating a new Team Event, you'll notice a dropdown menu for selecting the event's location. If your event will be conducted using a video conferencing app, choosing "Organizer's default app" from the dropdown is essential.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195443719/229c978410d4f4b09411be8d/317731047-19cbf3eb-cd7a-47f8-b03d-956a81a333f9.png?expires=1736324100&signature=8cfe092adebaacc314e4c5ae26b6b39198ef1b4bdb501066937f86472a7807fc&req=dSEuE816noZeUPMW1HO4zS0bvZazP6Tbq4hwX2cSt1CShdZ7CvWUnjPPuYOP%0Am8EwPPmmmB50mLWPLX8%3D%0A)
|
||||
|
||||
- **Utilizing Default Video Conferencing Apps**: Video conferencing apps don’t appear in the Location dropdown menu for Team events. However, by selecting "Organizer's default app," you ensure that the appropriate video conferencing link will be generated for the event.
|
||||
- **Configuring Default Apps**: To ensure smooth operation, all team members assigned to that event type must have the preferred video conferencing app set as their default in the Installed Apps section. This can be done by navigating to: **[https://app.cal.com/apps/installed/conferencing](https://app.cal.com/apps/installed/conferencing)**.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195443721/bd5133d609c93832ee9ec8b7/317731109-78c6cb3a-01de-4678-8414-aa645f2200d5.png?expires=1736324100&signature=eee04b73595daacf4e4bc0f56d7861d0c8f0b585f2495cd3a762924e245e0553&req=dSEuE816noZdWPMW1HO4zRy79caKWxNZg1QHr3p5DK%2F9NTv5qFBtJOqlIteX%0A5Kzlyf7gTt1VEHzC19U%3D%0A)
|
||||
|
||||
- **Generating Meeting Links**: Once all team members have set their preferred app as the default, a meeting link will be automatically generated upon booking the Team Event. For instance, if Zoom is selected as the default app for all members, the event booking will generate a Zoom meeting link.
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
title: Single use private links
|
||||
---
|
||||
|
||||
As you may already know, the event types have their own URLs which you can share with your potential attendees. But if you want to prevent attendees from seeing your Cal.com username that leads directly to your booking page, you can use this feature to generate a single use private link.
|
||||
|
||||
This private link regenerates after each use, so your attendees won't be able to use this URL to book your time again.
|
||||
|
||||
[](https://downloads.intercomcdn.com/i/o/1195412260/a62ed7953bf69382295cbd76/i1600x900-BHVM1jwFyc0Q_bd5zvm.png?expires=1736299800&signature=d457f82d504e6ad1ff24efb4d1327dad91c5b6f1f3a1bc97a431aa0b055bda1c&req=dSEuE81%2Fn4NZWfMW1HO4zRSpZby1%2BOUeOcIqWKvxZxFvE7%2Bh2pHlxyC23Xm3%0AHMlBWfyHXRJeCHqzQBg%3D%0A)
|
||||
|
||||
Besides the privacy that it can provide, this feature can also help you prevent your Cal.com username from being shared around and to better manage the incoming booking requests.
|
||||
@@ -1,49 +0,0 @@
|
||||
---
|
||||
title: How to split fullname into firstname and lastname in the public booking page
|
||||
---
|
||||
|
||||
By default, Cal.com booking page has a fullname text input field for the scheduler to put their name in. This usually works just fine for most people. However, at times, it is preferable to take the firstname and lastname of the scheduler as separate inputs in the booking form.
|
||||
|
||||
Cal.com provides the option to split the fullname input field in the booking form into firstname and lastname. To do that, you can do the following:
|
||||
<Steps>
|
||||
<Step title="Access Event Type Settings">
|
||||
Head to the event type settings where you wish to split the fullname into firstname and lastname.
|
||||
</Step>
|
||||
<Step title="Click on Advanced Tab" />
|
||||
<Step title="Scroll to Booking Questions Section" />
|
||||
<Step title="Click on the Edit Button in Front of Your Name">
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195425758/45f47313a8550e6e2b33b426/i1600x900-WWEmqSwAOD4e_zntxhy.png?expires=1736300700&signature=5faca7a9dccf0d24cbf54cea1c0f06ea54e71d7cb3506a2b7521cf5dd254daae&req=dSEuE818mIZaUfMW1HO4zRpF%2F5DnwTb%2Buk6pbg5F7k82AtvKK9dbf%2FcOYFKU%0AWIVO%0A)
|
||||
</Step>
|
||||
<Step title="Click on the Toggle">
|
||||
In the dialog that opens, click on the toggle that says **`Split "Full name" into "First name" and "last name"`**
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195425775/c1a41f7b5fdbb5b98a555efc/i1600x900-je1Ro4IEzLFM_gm67e9.png?expires=1736300700&signature=5d0d4b83085ee6fc9a2c9936827f7fa2c96616be5bcc0dd55227d1cdab728975&req=dSEuE818mIZYXPMW1HO4zUCS0NRKkPxcOVoTwio4u55utG%2FVpYsTtKa3wkL3%0Ayo3l%0A)
|
||||
</Step>
|
||||
<Step title="Fill the label and optional placeholder values, and click on save">
|
||||
Fill the label and optional placeholder values, and click on **save**.
|
||||
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195425822/1bc89e286966e40fa419b9dd/i1600x900-5uEMac44YaIi_fqr7ov.png?expires=1736300700&signature=6246cd8489971ab67bead3b801c8ceea5d60b2633f847c092d1d4155eb592cf0&req=dSEuE818mIldW%2FMW1HO4zQ7YBJn9dmhxahYRRFXRaWeXimh0FediowPu1elr%0AaEJM%0A)
|
||||
</Step>
|
||||
<Step title="Save Changes">
|
||||
Remember to click on the **save** button in the event type settings as well.
|
||||
</Step>
|
||||
<Step title="Check the Public Booking Page">
|
||||
Head to the public booking page of this event type, you will notice the fullname is now split into firstname and lastname with the labels provided by you in step number 6.
|
||||
[](https://calcom-inc-0470baa6daee.intercom-attachments-1.com/i/o/1195425838/2315c39aa24abf12de2db543/i1600x900-lyOWGLVGiBPA_iia5p8.png?expires=1736300700&signature=2ea549b0539cc94beeb7e338e0c5d945d7b38cfbb5d7f15df8115b73a076563f&req=dSEuE818mIlcUfMW1HO4zdSy2asW%2Fn7YI92dfoGSkLXKz8GPUbKTFLnHqOG%2B%0Aj19S%0A)
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
You're all set!
|
||||
|
||||
## How this affects the Booking API requests
|
||||
|
||||
Please note that in case of API requests, your usual **responses object**:
|
||||
```json
|
||||
"responses": { "name": "John Doe", "email": "john.doe@example.com", "location": { "optionValue": "", "value": "Acme Industries" } }
|
||||
```
|
||||
|
||||
will now be updated to allow **name** to be converted into object containing **firstName** and **lastName** as follows:
|
||||
|
||||
```json
|
||||
"responses": { "name": { "firstName": "John", "lastName": "Doe" }, "email": "john.doe@example.com", "location": { "optionValue": "", "value": "Acme Industries" } }
|
||||
```
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
---
|
||||
title: Can Cal.com sponsor my open source project?
|
||||
---
|
||||
|
||||
Cal.com is a commercial open source company and thereby we fully support other open source projects, whether it's commercial or non-commercial. We're friends of many other COSS companies.
|
||||
|
||||
## Sponsorship Criteria
|
||||
- The project should be non-commercial or a commercial open source company with less than $2M in ARR
|
||||
- The project should be open source
|
||||
- Include our "Book us with Cal.com" banner in your footer and link to a Cal.com booking link of your choice
|
||||
- Include our "Book us with Cal.com" banner in your open source repository's README.md file and link to a Cal.com booking link of your choice
|
||||
- Add the UTM tag with the format for the banners: ?utm\_source=banner&utm\_campaign=oss
|
||||
|
||||
## HTML Code:
|
||||
```html
|
||||
<img alt="Book us with Cal.com" src="https://cal.com/book-with-cal-dark.svg" />
|
||||
```
|
||||
or
|
||||
```html
|
||||
<img alt="Book us with Cal.com" src="https://cal.com/book-with-cal-light.svg" />
|
||||
```
|
||||
|
||||
## How to apply
|
||||
|
||||
Please note that we have a limited number of openings for OSS sponsorships each month. If you're interested in applying for a sponsorship for your open source software project, please follow these steps:
|
||||
|
||||
- Ensure that you meet all the sponsorship criteria mentioned above.
|
||||
- Send an email to [peer@cal.com](https://cal.com/help/en/articles/) and explain what you are working on and confirm that you meet all the sponsorship criteria (watch out, Peer may invest a small angel check in your COSS company 👀)
|
||||
- Explaining why Cal.com's free tier or open core is insufficient for your project
|
||||
- Include your Cal.com team slug and provide a link to your open source repository in the email.
|
||||
|
||||
Please note that sponsorship requests are reviewed on a monthly basis, so allow some time before reaching out for updates. We reserve the right to reject any project at will without reason.
|
||||
@@ -1,56 +0,0 @@
|
||||
---
|
||||
title: How to troubleshoot symbolic link issues on Windows
|
||||
---
|
||||
If you're using Cal.com self hosting instance on windows, you might be struggling with Prisma Environment variables not working. One of the reasons why this happens is because by default, symbolic links are disabled on windows OS.
|
||||
|
||||
To test the state of symbolic links configuration in your local repo, please run the following command from your root
|
||||
|
||||
```bash
|
||||
git config --get core.symlinks
|
||||
```
|
||||
|
||||
This should return **`false`**. If that is the case, you can follow one of the two following methods to enable symbolic links
|
||||
|
||||
### Enable symbolic links
|
||||
Please make sure to open **gitbash** with elevated privileges (Admin) before running the following commands, or they may fail silently and just not work as expected.
|
||||
|
||||
### Create a new clone with symbolic links enabled (Recommended)
|
||||
|
||||
Please use the following steps to clone the repo with symbolic links:
|
||||
|
||||
<Steps>
|
||||
<Step title="Open your **`gitbash`** with elevated privileges (Admin) and run the following command:">
|
||||
|
||||
```bash
|
||||
git clone -c core.symlinks=true https://github.com/calcom/cal.com.git
|
||||
```
|
||||
</Step>
|
||||
<Step title="Complete the installation by following the post clone steps mentioned in **[Development Setup & Production Build](https://cal.com/docs/introduction/quick-start/self-hosting/installation#development-setup-and-production-build)**." />
|
||||
</Steps>
|
||||
|
||||
### Enable symbolic links in your existing cloned repo
|
||||
|
||||
This is quite tricky, and not the recommended way of troubleshooting this issue. Please use the following steps to troubleshoot:
|
||||
|
||||
<Steps>
|
||||
<Step title="Open your **`gitbash`** with elevated privileges (Admin), go to your Cal.com project root and run the following command:">
|
||||
|
||||
```
|
||||
git config core.symlinks true
|
||||
```
|
||||
</Step>
|
||||
<Step title="Now run the following command and confirm that it returns **`true`**">
|
||||
|
||||
```
|
||||
git config --get core.symlinks
|
||||
```
|
||||
</Step>
|
||||
<Step title="Next, simply remove the .env file located in **`packages/prisma/`**" />
|
||||
|
||||
<Step title="Finally, run the following command to restore the .env file but as a symbolic link">
|
||||
|
||||
```
|
||||
git restore packages/prisma/.env
|
||||
```
|
||||
</Step>
|
||||
</Steps>
|
||||
|
Before Width: | Height: | Size: 850 B |
|
Before Width: | Height: | Size: 190 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 298 KiB |
|
Before Width: | Height: | Size: 292 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 271 KiB |
|
Before Width: | Height: | Size: 437 KiB |
|
Before Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 209 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 274 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 241 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 453 KiB |
|
Before Width: | Height: | Size: 452 KiB |
|
Before Width: | Height: | Size: 417 KiB |
|
Before Width: | Height: | Size: 593 KiB |
|
Before Width: | Height: | Size: 267 KiB |
|
Before Width: | Height: | Size: 609 KiB |
|
Before Width: | Height: | Size: 676 KiB |
|
Before Width: | Height: | Size: 255 KiB |
|
Before Width: | Height: | Size: 442 KiB |
|
Before Width: | Height: | Size: 814 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 305 KiB |
|
Before Width: | Height: | Size: 873 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 739 KiB |