Google Calendar

Google Calendar supports Member accounts and Service account. Every reader connects Google Calendar in Integrations. Search queries event APIs with the connected member's account, preserving the details Google permits that person to see.

Member accounts

Add Google Calendar under Settings → Sources, choose Member accounts, and save. Members authorize Google Calendar under Integrations. There are no organization calendar or date-window filters in member mode. A query can target a calendar or request an agenda for a date range.

Connecting does not ingest events or build permission records. Changes appear according to Google's API responses.

Set up a central service account

  1. Enable Google Calendar API and Admin SDK API in Google Cloud. Create a service account and download its JSON key.
  2. Authorize domain-wide delegation for its numeric client ID in Google Workspace Admin with all three scopes:
https://www.googleapis.com/auth/calendar.events.readonly
https://www.googleapis.com/auth/calendar.readonly
https://www.googleapis.com/auth/admin.directory.user.readonly

Search reads events with calendar.events.readonly. The calendar picker also needs calendar.readonly to list the delegated administrator's calendars. See CalendarList authorization.

  1. In Settings → Sources → Google Calendar, choose Service account, then Add connection. Add or select the Google credential and set Delegated administrator to an active Workspace administrator with Directory user-read access.
  2. Select calendars, users, a date range, and optional event-text and attendee settings. Save and select this connection as the service source.
  3. Members connect their personal Calendar accounts in Integrations.

The picker browses the delegated administrator's calendars. The primary choice is saved as an alias for each connected member's primary calendar. A specific shared-calendar ID must be accessible to the member and through the source's delegation.

How filtering works

Sim verifies the connected account's primary-calendar identity and its active Directory identity in the source's Workspace customer. If Users is selected, that member must be included. The service credential then delegates to that same member, not to another user's calendar view.

Search incorporates selected calendars and date bounds into the provider request. Each result must still exist through the delegated source credential, belong to an allowed calendar, be non-cancelled, and overlap the configured rolling window. The default source window is 30 days before and after the request. A source text query is independently verified against the exact event.

Recurring events expand within the search window. All-day events use the calendar's timezone. Include Attendees controls attendee details, and the member's provider access still limits private event details. Reads repeat these checks.

Sim does not copy the organizer's richer event details into an attendee's view or separately ingest attachments, recordings, or transcripts. Provider limits and bounded calendar traversal can produce incomplete coverage.

Troubleshooting

ProblemNext step
Calendar picker failsInclude calendar.readonly in delegation, along with the other scopes above.
A member gets no matchesCheck their personal connection, primary Workspace identity, Users selection, calendars, and source date window.
Shared calendar is missingConfirm both the member and delegated source identity can access that calendar ID.
Event is outside the configured rangeAdjust the service source's range or narrow the user's query to its allowed window.
Google rejects delegationVerify client ID, key, Directory administrator access, and Workspace approval.

Self-hosted operator setup

Configure the deployment’s Google OAuth client for every member’s personal connection, including members using a service-account source. This is separate from domain-wide delegation.

  1. In Google Cloud Console, select your project. Open APIs & Services → Library, find Google Calendar API, and enable it.
  2. Open Google Auth platform → Branding and configure the app name and contact details. Under Audience, choose Internal for your Google Workspace organization only, or External for other users. Add test users while an external app is testing. Review Data Access → Add or remove scopes using the current Sim scopes below. See Google's consent and verification guidance.
  3. Open Google Auth platform → Clients → Create client, choose Web application, and add the URI below under Authorized redirect URIs. Add it to the existing Google client if the instance already uses one. See Google's credential setup.
  4. Save the client ID and secret as GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET. Set NEXT_PUBLIC_APP_URL to the same Sim origin used in the callback, then restart Sim. See Integrations & OAuth. If you change an existing deployment's OAuth client or scopes, an organization admin updates the provider configuration and affected teammates reconnect.
https://<your-sim-domain>/api/auth/oauth2/callback/google-calendar

One OAuth client can register callbacks for all three Google services. Use your exact Sim origin and add only the callbacks for services you enable.

The member-account OAuth connection uses these scopes:

openid
https://www.googleapis.com/auth/userinfo.email
https://www.googleapis.com/auth/userinfo.profile
https://www.googleapis.com/auth/calendar

The personal OAuth connection also supports workflow actions, so its declared scopes can be broader than Search’s read-only requests. The service credential uses the separate delegation scopes above.