# Calendar Synchronization App

The Welkin Calendar Synchronization App provides two-way calendar sync between Welkin and external calendar systems (Google Calendar, Microsoft Outlook/Exchange). Unlike the basic Google Calendar integration, the Calendar Sync App is designed for organizations that need bidirectional sync and support for multiple calendar platforms.

## How it differs from the Google Calendar integration

| Feature              | Google Calendar Integration | Calendar Sync App                   |
| -------------------- | --------------------------- | ----------------------------------- |
| Direction            | One-way (Welkin → Google)   | Two-way (Welkin ↔ Calendar)         |
| Platforms            | Google Calendar only        | Google Calendar + Outlook/Exchange  |
| Setup                | Per-user, self-service      | Organization-wide, admin-configured |
| Availability changes | Not synced                  | Synced to Welkin scheduling         |

Use the Calendar Sync App if your organization uses Microsoft Outlook, wants availability updates to flow back into Welkin scheduling, or needs a centrally managed sync configuration.

## Setting up the Calendar Sync App

### Prerequisites

* Welkin Calendar Sync App enabled for your environment (contact your CSM)
* Admin access to Welkin
* For Google: Google Workspace Admin access (for service account setup)
* For Outlook/Exchange: Exchange admin access or Microsoft 365 Admin credentials

### Configure for Google Calendar (organization-wide)

1. Log in to the Welkin Admin portal
2. Navigate to **Integrations → Calendar Sync App**
3. Select **Google Calendar** as the platform
4. Follow the service account setup steps (Welkin provides a configuration guide specific to your environment)
5. Enter the Google service account JSON credentials
6. Select which user calendar data to sync
7. Save and test

### Configure for Microsoft Outlook / Exchange

1. Navigate to **Integrations → Calendar Sync App**
2. Select **Microsoft 365 / Exchange**
3. Enter your Microsoft tenant ID and client credentials (created in Azure Active Directory)
4. Grant the required Microsoft Graph API permissions:
   * `Calendars.ReadWrite`
   * `User.Read.All`
5. Save and test the connection

## Configuring sync behavior

After connecting the calendar platform:

1. Under **Sync Settings**, configure:
   * **Sync direction** – Welkin → Calendar only, Calendar → Welkin only, or bidirectional
   * **Which encounter types to sync** – filter to avoid syncing internal administrative encounters
   * **Block time sync** – whether non-Welkin calendar blocks (e.g., personal appointments) are reflected as unavailable in Welkin scheduling
   * **Event details** – control what PHI appears in calendar event titles and descriptions
2. Under **User Mapping**, match each Welkin user to their corresponding calendar account email
3. Save all settings

## Testing the sync

1. Create a test encounter in Welkin for a mapped user
2. Verify the encounter appears in the user's external calendar within a few minutes
3. If bidirectional sync is enabled, create a block in the external calendar and verify it shows as unavailable in Welkin's scheduling view
4. Cancel the Welkin encounter and verify it is removed from the external calendar

## Monitoring sync status

The Calendar Sync App dashboard in the Admin portal shows:

* Last successful sync time for each connected user
* Sync errors or conflicts that need attention
* Total events synced in the last 24 hours

If a user's sync is failing, check their calendar account mapping and verify they have not revoked Welkin's calendar access.

{% embed url="<https://www.youtube.com/watch?v=9nxPkEPm4Xo>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.welkinhealth.com/integrations/calendar/calendar-synchronization-app.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
