> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/calcom/cal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Calendar apps

> Connect calendar providers to sync availability and automatically create events for confirmed bookings.

Calendar integrations enable Cal.com to check your availability across connected calendars and automatically create events when bookings are confirmed. Cal.com supports two-way sync with all major calendar providers.

## Available calendar integrations

<CardGroup cols={2}>
  <Card title="Google Calendar" icon="google">
    Most popular - full two-way sync with Google Workspace
  </Card>

  <Card title="Outlook Calendar" icon="microsoft">
    Microsoft 365 and Exchange Server support
  </Card>

  <Card title="Apple Calendar" icon="apple">
    iCloud calendar integration
  </Card>

  <Card title="CalDAV" icon="calendar">
    Connect any CalDAV-compatible calendar provider
  </Card>
</CardGroup>

### Other supported calendars

* **Exchange 2013** - Legacy Exchange Server 2013
* **Exchange 2016** - Exchange Server 2016
* **Lark Calendar** - Lark Suite integration
* **Feishu Calendar** - ByteDance Feishu/Lark
* **Zoho Calendar** - Zoho suite calendar
* **ICS Feed** - Subscribe to read-only ICS calendar feeds

## Google Calendar

### Setup instructions

<Steps>
  <Step title="Install the integration">
    Navigate to Settings > Apps, search for "Google Calendar", and click Install.
  </Step>

  <Step title="Authenticate with Google">
    You'll be redirected to Google to grant calendar access permissions. Sign in with your Google account.
  </Step>

  <Step title="Grant permissions">
    Approve access to view, edit, and create calendar events. Cal.com needs these permissions to check availability and create bookings.
  </Step>

  <Step title="Select calendars">
    Choose which Google Calendars to check for conflicts. You can select multiple calendars.
  </Step>

  <Step title="Choose destination calendar">
    Select which calendar should receive new Cal.com bookings. This can be different from your conflict-check calendars.
  </Step>
</Steps>

### Features

* **Two-way sync** - Events created in either system appear in both
* **Conflict prevention** - Cal.com checks selected calendars before offering time slots
* **Multiple calendar support** - Check conflicts across multiple Google Calendars
* **Automatic event creation** - Bookings appear in your Google Calendar instantly
* **Event updates** - Reschedules and cancellations sync automatically
* **Guest management** - Attendees added to Google Calendar events with video links

### Configuration

After connecting Google Calendar:

```typescript theme={null}
// Calendar is configured via UI, but stored metadata looks like:
{
  type: "google_calendar",
  calendarsToCheckForConflicts: ["primary", "work@company.com"],
  destinationCalendar: "primary"
}
```

<Note>
  Google Calendar requires OAuth credentials. Self-hosted instances need to set `GOOGLE_API_CREDENTIALS` in environment variables.
</Note>

### Troubleshooting

<AccordionGroup>
  <Accordion title="Events not syncing">
    * Verify calendar permissions in Google Account settings
    * Check that the destination calendar is selected
    * Ensure the calendar isn't full (Google has a 25,000 event limit per calendar)
    * Re-authenticate by disconnecting and reconnecting the integration
  </Accordion>

  <Accordion title="Availability showing incorrect times">
    * Confirm your timezone is set correctly in Cal.com Settings
    * Check that conflict calendars are selected
    * Verify events in Google Calendar have the correct timezone
    * Allow up to 5 minutes for calendar sync
  </Accordion>

  <Accordion title="OAuth redirect errors">
    For self-hosted: Verify `GOOGLE_API_CREDENTIALS` is valid JSON and includes correct redirect URIs matching your Cal.com domain.
  </Accordion>
</AccordionGroup>

## Outlook Calendar (Microsoft 365)

### Setup instructions

<Steps>
  <Step title="Install Outlook Calendar">
    Go to Settings > Apps, find "Outlook Calendar", and click Install.
  </Step>

  <Step title="Sign in with Microsoft">
    Authenticate with your Microsoft 365 or Outlook.com account.
  </Step>

  <Step title="Grant permissions">
    Allow Cal.com to read and write calendar data.
  </Step>

  <Step title="Configure calendars">
    Select which Outlook calendars to monitor for conflicts and where to create new events.
  </Step>
</Steps>

### Features

* **Microsoft 365 integration** - Full support for Office 365 and Outlook.com
* **Exchange Server compatibility** - Works with Exchange 2013, 2016, and Online
* **Teams integration** - Can create MS Teams meetings (requires separate MS Teams app)
* **Shared calendar support** - Access to shared and delegate calendars
* **Recurring event handling** - Respects recurring event patterns for availability

<Warning>
  Microsoft personal accounts (Outlook.com, Hotmail) have limited API access compared to work/school accounts. Some features may require a Microsoft 365 Business subscription.
</Warning>

## Apple Calendar (iCloud)

### Setup instructions

<Steps>
  <Step title="Install Apple Calendar">
    Find "Apple Calendar" in Settings > Apps and click Install.
  </Step>

  <Step title="Provide credentials">
    Enter your iCloud email and an app-specific password (not your regular iCloud password).
  </Step>

  <Step title="Generate app-specific password">
    Visit appleid.apple.com > Sign-In and Security > App-Specific Passwords to create one.
  </Step>

  <Step title="Complete setup">
    Cal.com will connect to your iCloud calendar using CalDAV protocol.
  </Step>
</Steps>

### Requirements

* iCloud account with calendar enabled
* App-specific password (required for third-party access)
* Two-factor authentication enabled on your Apple ID

<Info>
  Apple Calendar uses the CalDAV protocol under the hood. The integration automatically configures the correct CalDAV server settings for iCloud.
</Info>

## CalDAV

Connect any CalDAV-compatible calendar provider, including:

* Fastmail
* Nextcloud
* Radicale
* Baikal
* SabreDAV
* Custom CalDAV servers

### Setup instructions

<Steps>
  <Step title="Gather CalDAV details">
    You need: CalDAV server URL, username, and password from your calendar provider.
  </Step>

  <Step title="Install CalDAV integration">
    Go to Settings > Apps and install "CalDAV (Beta)".
  </Step>

  <Step title="Enter server details">
    Provide your CalDAV server URL (e.g., `https://caldav.example.com/`), username, and password.
  </Step>

  <Step title="Test connection">
    Cal.com will verify the connection and list available calendars.
  </Step>

  <Step title="Select calendars">
    Choose which calendars to use for conflict checking and event creation.
  </Step>
</Steps>

### Common CalDAV providers

<Tabs>
  <Tab title="Fastmail">
    **Server URL:** `https://caldav.fastmail.com/dav/calendars/user/{username}/`

    **Username:** Your Fastmail email

    **Password:** Use an app password from Settings > Privacy & Security > App Passwords
  </Tab>

  <Tab title="Nextcloud">
    **Server URL:** `https://nextcloud.example.com/remote.php/dav/calendars/{username}/`

    **Username:** Your Nextcloud username

    **Password:** Nextcloud password or app password
  </Tab>

  <Tab title="Generic CalDAV">
    **Server URL:** Varies by provider (check their documentation)

    **Username:** Usually your email or username

    **Password:** Account password or app-specific password
  </Tab>
</Tabs>

<Note>
  CalDAV is marked "Beta" because different CalDAV servers implement the specification differently. Most providers work well, but some may have quirks.
</Note>

## Calendar sync behavior

### Availability checking

When someone books a time with you:

1. Cal.com queries all connected calendars for events in the requested time range
2. Busy times are excluded from available slots
3. Only free times matching your availability rules are offered
4. Multi-calendar conflicts are detected automatically

### Event creation

When a booking is confirmed:

1. Cal.com creates an event in your selected destination calendar
2. The event includes:
   * Booking title and description
   * Attendee information (name, email)
   * Video conferencing link (if configured)
   * Location or meeting instructions
   * Cal.com metadata for tracking
3. Attendees receive calendar invitations
4. The event appears in both Cal.com and your calendar

### Updates and cancellations

* **Reschedules** - Original event is updated with new time
* **Cancellations** - Event is removed from calendar or marked as cancelled
* **Manual changes** - Editing events directly in your calendar provider may break sync

<Warning>
  Avoid manually editing Cal.com-created events in your calendar. Changes may not sync back to Cal.com and could cause booking conflicts.
</Warning>

## Multiple calendar setup

You can connect multiple calendar providers simultaneously:

```
Connected calendars:
  ✓ Google Calendar (work@company.com)
  ✓ Google Calendar (personal@gmail.com)
  ✓ Outlook Calendar (office365@company.com)
  ✓ Apple Calendar (icloud@icloud.com)

Conflict checking:
  Check all 4 calendars before offering availability

Destination:
  Create new bookings in work@company.com (Google)
```

This setup ensures no conflicts across all your calendars while centralizing bookings in one place.

## Best practices

<Check>**Connect all calendars you use regularly** - Include work, personal, and shared calendars to prevent double-bookings.</Check>

<Check>**Choose a primary destination calendar** - Pick the calendar you check most often to receive Cal.com bookings.</Check>

<Check>**Set consistent timezones** - Ensure your Cal.com timezone matches your calendar provider's timezone.</Check>

<Check>**Use all-day events for busy days** - Create all-day "Busy" events in your calendar for days you're unavailable.</Check>

<Check>**Test after setup** - Book a test appointment to verify events appear correctly in your calendar.</Check>

## Environment variables (self-hosted)

Self-hosted Cal.com instances require API credentials for some calendar providers:

```bash theme={null}
# Google Calendar
GOOGLE_API_CREDENTIALS='{"web":{"client_id":"...","client_secret":"...","redirect_uris":["https://yourdomain.com/api/integrations/googlecalendar/callback"]}}'

# Microsoft 365 / Outlook
MS_GRAPH_CLIENT_ID=your_client_id
MS_GRAPH_CLIENT_SECRET=your_client_secret
```

<Info>
  Apple Calendar and CalDAV don't require API keys - they use username/password authentication.
</Info>

## Troubleshooting common issues

### Events not appearing in calendar

1. Verify the integration is connected in Settings > Apps
2. Check that a destination calendar is selected
3. Confirm you have write permissions to the destination calendar
4. Re-authenticate the integration

### Incorrect availability

1. Ensure all calendars are selected for conflict checking
2. Verify events in your calendar have correct timezones
3. Check that availability rules in Cal.com match your schedule
4. Wait a few minutes for calendar sync (APIs can have delays)

### OAuth errors

1. For self-hosted: Verify redirect URIs in OAuth app settings match your domain
2. Check that environment variables are set correctly
3. Ensure your OAuth app has the required scopes/permissions
4. Try revoking access in your calendar provider and reconnecting

## Next steps

<CardGroup cols={2}>
  <Card title="Video conferencing" icon="video" href="/integrations/video-conferencing">
    Add video meeting links to calendar events
  </Card>

  <Card title="Event types" icon="calendar-check" href="/event-types">
    Configure event types with calendar integrations
  </Card>
</CardGroup>
