# Calendar

> Part of the NocoDB documentation (Product docs > Sync > App Sync). Index of all pages: https://nocodb.com/llms.txt. Any docs page is available as Markdown by adding `.md` to its URL.

URL: https://nocodb.com/docs/product/sync/app-sync/calendar
Last updated: 2026-10-03

Bring your calendar events into NocoDB with automatic syncs from Google Calendar, Outlook Calendar, and CalDAV.

Calendar Sync brings your calendar events into NocoDB as a structured table that you can query. Use it to build a schedule dashboard, report on meeting load, or join event data with the rest of your workspace. Calendar Sync keeps a read-only copy of your events up to date at all times.

Current supported sources include:

* Google Calendar
* Outlook Calendar
* CalDAV (Apple iCloud, Fastmail, Nextcloud, and other CalDAV servers)

All three sources use the same setup steps and make the same **Event** table. You can mix them in one base and report across them together. Each sync tracks one calendar. To bring in another calendar, add another sync.

Calendar Sync uses one **Event** table. Thus, setup has no *All Tables* / *Select Tables* choice. The Event table is always included, and App Sync makes no relationships.

## Available Tables

### **Event**

Represents one calendar event. Each synced event maps to one record. The initial sync expands recurring events into individual occurrences, so each occurrence shows as its own record.

**Key fields include:**

| Field                   | Description                                                                                                                                    |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| **Title**               | The event summary. This is the display (primary) field.                                                                                        |
| **Start / End**         | The start and end date-time of the event. All-day events use dates without a time.                                                             |
| **All Day**             | Checked when the event has no specific time (a full-day event).                                                                                |
| **Recurring Event**     | Checked when the record is an occurrence of a recurring series.                                                                                |
| **Recurring Event ID**  | The identifier that links an occurrence to its recurring series.                                                                               |
| **Status**              | The event status: `confirmed`, `tentative`, or `cancelled`.                                                                                    |
| **Show as**             | Shows if the event marks you as **Busy** or **Free**.                                                                                          |
| **Visibility**          | The event visibility: `default`, `public`, `private`, or `confidential`.                                                                       |
| **Event Type**          | The source event type, such as `default`, `birthday`, `focusTime`, `fromGmail`, `outOfOffice`, or `workingLocation`. *(Google Calendar only.)* |
| **Location**            | The event location text.                                                                                                                       |
| **Description**         | The event description or notes.                                                                                                                |
| **Creator / Organizer** | The email addresses of the person who created the event and of the organizer.                                                                  |
| **Attendees**           | A comma-separated list of attendee names or emails.                                                                                            |
| **Attendee Count**      | The number of attendees on the event.                                                                                                          |
| **My Response**         | Your RSVP status: `needsAction`, `accepted`, `declined`, or `tentative`.                                                                       |
| **Attachments**         | The titles and links of files attached to the event. *(Google Calendar only.)*                                                                 |
| **Created / Updated**   | When the event was created and last changed in the source.                                                                                     |
| **Event ID / iCalUID**  | The source event identifiers.                                                                                                                  |
| **Event Link**          | A direct link that opens the event in the source calendar.                                                                                     |
| **Meeting Link**        | The video meeting URL (for example, a Google Meet link), when present.                                                                         |
| **Meeting Provider**    | The name of the conferencing solution, when present.                                                                                           |
| **Color**               | The color identifier of the event from the source calendar. *(Google Calendar and CalDAV; Outlook Calendar does not provide this.)*            |

The Event table has the same fields for every source. If a source does not give a value, App Sync creates the field but leaves it empty. Thus, views and formulas that you build on one calendar keep working when you add another calendar.

<Callout type="note">
  All synced fields are read-only and one-way (source → NocoDB). You can add your own custom fields, create views, filter, sort, and group, but changes made in NocoDB are not written back to your calendar.
</Callout>

### Calendar view and event button

On the first sync, Calendar Sync configures the Event table automatically, so you can use the synced events immediately:

* **Calendar view** – Calendar Sync creates a Calendar view with the name *Calendar*. The view is organized by the **Start** field and shows only the **Title**, so the timeline stays easy to read.
* **Open Event button** – An *Open Event* button field opens the **Event Link** of the event in the source calendar. Use it to go from a record directly to the original event.

<img alt="Calendar view of synced events" src={__img0} placeholder="blur" />

<Callout type="note">
  These are starting defaults. You can recolor the view, change which fields are shown, or adjust the date organization like any other Calendar view.
</Callout>

## Metadata Fields

Each synced record in the Calendar category includes a set of metadata fields. These fields track the lifecycle, state, and origin of each record. They show how data flows from the external source into NocoDB. They are important for traceability, debugging, and audit requirements.

App Sync manages these metadata fields automatically. They are read-only.

| Field                 | Description                                                                                                                                                              |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **RemoteId**          | The unique identifier of the event in the source calendar.                                                                                                               |
| **RemoteCreatedAt**   | The timestamp when the event was first created in the source.                                                                                                            |
| **RemoteUpdatedAt**   | The timestamp of the most recent update in the source.                                                                                                                   |
| **RemoteDeleted**     | Shows if the event was deleted (cancelled) in the source calendar. App Sync uses this especially when the delete behavior is set to **Ignore**.                          |
| **RemoteDeletedTime** | The timestamp when the event was deleted in the source, if applicable.                                                                                                   |
| **RemoteRaw**         | The raw payload from the provider for that event. Use it for troubleshooting, verification, or advanced integrations.                                                    |
| **RemoteNamespace**   | The source calendar that the event came from.                                                                                                                            |
| **RemoteSyncedAt**    | The last timestamp when NocoDB synced this record.                                                                                                                       |
| **SyncConfigId**      | An internal reference to the sync configuration for this record.                                                                                                         |
| **SyncRunId**         | The sync run that last updated this record.                                                                                                                              |
| **SyncProvider**      | The external service (Google Calendar, Outlook Calendar, or CalDAV) that the record came from. This is useful when a base has events from more than one calendar source. |

## Source Specific Details

### Google Calendar

Use the Google Calendar integration to pull events from any calendar in your Google account into NocoDB. Connect your Google account one time and select the calendar to track. App Sync then keeps the Event table updated with the latest changes.

After you select Google Calendar as the sync source, configure these settings:

| Setting                        | Description                                                                                                                                                                                                         |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Integration name**           | A name for this sync source. It identifies the source in the sync configuration.                                                                                                                                    |
| **Google Calendar connection** | Select an existing Google Calendar connection. Or create one: authenticate with Google (through OAuth). NocoDB asks for read-only access to your calendars. You can use the connection again in more than one sync. |
| **Calendar**                   | Select the calendar to sync from the calendars on your account, for example your primary calendar or a shared calendar that you can access. Each sync tracks one calendar.                                          |
| **Sync range start**           | App Sync syncs only events that **end on or after** this date. This sets the lower limit of the initial sync window.                                                                                                |
| **Sync range end**             | App Sync syncs only events that **start on or before** this date. This sets the upper limit of the initial sync window.                                                                                             |

<Callout type="info">
  The sync range bounds the 

  **initial**

   import window, so you can avoid pulling in years of historical events. Choose a range that matches how far back and forward you want visibility.
</Callout>

After the initial import, Google Calendar syncs **incrementally**. Each run asks Google only for the changes since the previous run, including cancellations. If you make the sync range wider later, the next run does a new full import. This import gets the newly included events.

<img alt="Google Calendar sync source configuration" src={__img1} placeholder="blur" />

### Outlook Calendar

The Outlook Calendar integration pulls events from any calendar in your Microsoft account, including work and school accounts. Connect one time and select a calendar. App Sync then keeps the Event table up to date.

After you select Outlook Calendar as the sync source, configure these settings:

| Setting                         | Description                                                                                                                                                                                                                                                                                         |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Integration name**            | A name for this sync source. It identifies the source in the sync configuration.                                                                                                                                                                                                                    |
| **Outlook Calendar connection** | Select an existing Outlook Calendar connection. Or create one: authenticate with Microsoft (through OAuth). NocoDB asks for read-only access to your calendars. You can use the connection again in more than one sync. Personal Microsoft accounts and work or school accounts are both supported. |
| **Calendar**                    | Select the calendar to sync from the calendars on your account. Each sync tracks one calendar.                                                                                                                                                                                                      |
| **Sync range start**            | App Sync syncs only events that **end on or after** this date.                                                                                                                                                                                                                                      |
| **Sync range end**              | App Sync syncs only events that **start on or before** this date.                                                                                                                                                                                                                                   |

Like Google Calendar, Outlook Calendar syncs **incrementally** after the initial import. Later runs transfer only the events that changed.

<Callout type="note">
  Outlook does not expose an event color, so the 

  **Color**

   field stays empty for Outlook events. 

  **Event Type**

   and 

  **Attachments**

   are specific to Google Calendar and are likewise left empty.
</Callout>

{/* TODO: capture and add screenshot: /img/v2/noco-sync/outlook-calendar-sync-config.png */}

### CalDAV

CalDAV is an open calendar standard. Apple iCloud, Fastmail, Nextcloud, and many other providers support it. Use it to sync a calendar from any CalDAV server, including servers that have no dedicated NocoDB integration.

After you select CalDAV as the sync source, configure an **Integration name**, a **CalDAV connection**, a **Calendar**, and a **Sync range start** and **Sync range end**. These are the same as for the other sources.

A CalDAV connection does not use OAuth, as Google and Outlook do. When you create a CalDAV connection, you give a server URL and credentials:

| Setting                   | Description                                                                                                                                                                                                          |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Server URL**            | The base URL of the CalDAV server. The default is Apple iCloud (`https://caldav.icloud.com`). For Fastmail, Nextcloud, and others, replace it with the URL of your provider.                                         |
| **Username**              | The account username, usually your email address (for example `you@icloud.com`).                                                                                                                                     |
| **App-specific password** | CalDAV providers usually require an app-specific password, not your normal account password. For iCloud, generate one at [appleid.apple.com](https://appleid.apple.com). iCloud rejects a regular Apple ID password. |

<Callout type="note">
  CalDAV syncs perform a 

  **full refresh**

   of the selected date window on every run rather than fetching only what changed. Choose the 

  **Full**

   sync type so that events deleted at the source are removed from NocoDB, and keep the sync range no wider than you need, since every run re-reads the whole window. Incremental CalDAV sync is planned for a future release.
</Callout>

{/* TODO: capture and add screenshot: /img/v2/noco-sync/caldav-sync-config.png */}

## Availability

* App Sync is available on **NocoDB Cloud** (Plus plan and above) and licensed self-hosted deployments (Business plan and above).

---

## Related pages

- [Ticketing](https://nocodb.com/docs/product/sync/app-sync/ticketing.md): Ticketing Sync in NocoDB App Sync imports tickets, comments, users and teams from external ticketing platforms on an automatic schedule.
- [HRIS](https://nocodb.com/docs/product/sync/app-sync/hris.md): Bring employee data from your HR system into NocoDB with automatic syncs.
- [CRM](https://nocodb.com/docs/product/sync/app-sync/crm.md): Bring customer and contact data from your CRM into NocoDB with automatic syncs.
- [File Storage](https://nocodb.com/docs/product/sync/app-sync/file-storage.md): Bring file and folder metadata from cloud storage platforms into NocoDB with automatic syncs.
- [Custom Sync](https://nocodb.com/docs/product/sync/app-sync/custom.md): Mirror tables from PostgreSQL, MySQL, or SQL Server databases into NocoDB as read-only synced tables.
