HELIOS DOCS

Google Calendar

The Google Calendar integration lets Helios agents call the Google Calendar API to manage events, calendars, and sharing, and check availability. It runs agents automatically when events or sharing change on the calendars you choose, or when your calendar list or settings change.

What your agents can do

Agents use the Google Calendar API with the access granted by your connected account.

  • Create events with guests and a Google Meet link
  • List the agenda for a day or a week, across your calendars
  • Find free time with the free/busy API
  • Reschedule or cancel events, and notify guests
  • Accept or decline invitations
  • Create calendars, share a calendar, and change who can see or edit it

Agents can read your Google Calendar settings but can't change them, because the Calendar API has no method for that. The exception is your time zone. Changing your primary calendar's time zone changes it too. The connection only grants access to Google Calendar, so agents can't open the Google Drive files attached to an event.

Authentication

MethodTypeDescription
Helios Google Calendar AppOAuth 2.0Sign in with Google through the Helios app. Nothing to set up in Google
Your own Google Calendar OAuth appOAuth 2.0An OAuth client that you create in your own Google Cloud project

Both methods ask for these scopes, with offline access so that Google issues a refresh token:

ScopeWhat it's for
https://www.googleapis.com/auth/calendarEverything in the Calendar API: events, calendars, sharing, your calendar list, settings and free/busy, and watching them for triggers
https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profileShowing which Google account is connected

If Google's consent screen lets you leave out access to Google Calendar, allow it. Without it, agents can't call the Calendar API and triggers don't work.

Access tokens last an hour, and Helios renews them with the refresh token. See Integration authentication for how credentials are stored and injected.

Helios Google Calendar App

  1. In Helios, choose Helios Google Calendar App.
  2. Optional: to watch calendars other than your primary one for triggers, enter their IDs in Calendars. See Triggers.
  3. Save, then choose your Google account and approve access.

Helios asks Google for consent each time you connect. If you remove Helios's access in your Google Account, open the connection and click Re-connect.

Your own Google Calendar OAuth app

You need a Google Cloud project that you can edit. To keep sign-in inside a Google Workspace organization, the project must belong to that organization.

  1. In the Google Cloud console, create a project or pick one. Under APIs & Services → Library, enable the Google Calendar API.

  2. Open Google Auth Platform. If it isn't set up yet, click Get Started. On Branding, set the app name and the user support email.

  3. On Audience, choose the user type:

    • Internal limits sign-in to your Google Workspace organization.
    • External allows any Google account. The app starts in Testing, so add your account under Test users with Add users.
  4. On Data Access, click Add or Remove Scopes and add the scopes above. Google lists calendar as a sensitive scope.

  5. On Clients, click Create client and choose Web application. Under Authorized redirect URIs, add this URL, then click Create:

    https://api.heliosapp.com/integrations/google/oauth_callback

    Copy the client secret now. Google shows it only when you create the client.

  6. In Helios, choose Your own Google Calendar OAuth app. Enter the Client ID and Client Secret of the client you created. Optional: enter calendar IDs in Calendars.

  7. Save, then approve access in Google.

Google expires the refresh token of an External app in Testing 7 days after you approve it. Helios then can't call Google Calendar, and triggers stop. To avoid this, click Publish app on the Audience page to move the app to In production. Until Google verifies the app, it may show an unverified app screen before the consent screen.

If you add a new client secret in Google, enter it in Helios through Manage before you disable the old one. After you change the app's scopes, click Re-connect on the connection and approve again.

Triggers

Google Calendar can start a Workflow when something changes. Helios sets up notifications with the Calendar API when you save the connection, so there is nothing to set up in Google.

Helios watches your primary calendar. To watch other calendars, set Calendars on the connection to their IDs, separated by commas. A calendar's ID is under Integrate calendar in its settings in Google Calendar. Helios skips a calendar the account can't see. Your calendar list and settings belong to the account, so they don't depend on Calendars.

EventDescriptionFilters
event.createdAn event was created on the calendar, or you were invited to a new eventcalendar, title (pattern), organizer email (pattern), event type, my response
event.updatedAn event was changed, such as its time, its guests or your responsecalendar, title (pattern), organizer email (pattern), event type, my response
event.cancelledAn event was cancelled or deletedcalendar, title (pattern), organizer email (pattern), event type
acl_rule.createdThe calendar was shared with a person, a group, a domain or the publiccalendar, shared with (pattern), access
acl_rule.updatedThe access of someone the calendar is shared with was changedcalendar, shared with (pattern), access
acl_rule.deletedThe calendar stopped being shared with someonecalendar, shared with (pattern)
calendar_list_entry.addedA calendar was added to your calendar list, such as when you create it or subscribe to itcalendar, calendar name (pattern), my access
calendar_list_entry.updatedYour own settings for a calendar in your list were changed, such as its color, its display name, its reminders or whether it is hiddencalendar, calendar name (pattern), my access
calendar_list_entry.removedA calendar was removed from your calendar list, such as when you unsubscribe from it or it is deletedcalendar
setting.updatedOne of your Google Calendar settings was changed, such as your time zonesetting

All filters are optional. Pattern filters are case-sensitive, so *Standup* doesn't match daily standup.

  • Calendar is chosen from a list. For event and sharing events, the list has the watched calendars. For calendar list events, it has every calendar in your list.
  • Title matches the event's title.
  • Organizer email matches the organizer's email address.
  • Event type is one of Event, Focus time, Out of office, Working location, Birthday or Event from Gmail. Use it to leave out focus time and working location entries.
  • My response is your own answer to the invitation. Choose Not responded to catch new invitations you haven't answered.
  • Shared with matches the email address of the person or group, or the domain, that the calendar is shared with, such as *@example.com. Sharing with the public has no address, so it doesn't match when this filter is set.
  • Access is the access that the sharing gives, such as See all event details or Make changes and manage sharing.
  • Calendar name matches the name you see for the calendar in your list, which is your own name for it if you set one.
  • My access is your own access to the calendar.
  • Setting is the setting that changed, such as Time zone or Start of the week.

How Helios reads the changes:

  • An event counts as created when it was created after the last change Helios saw. An invitation to an event that someone created earlier arrives as event.updated.
  • Google may send only the ID of a deleted event. The title, organizer and event type filters then can't match it. On calendars you own, Google keeps the details.
  • A sharing rule or a calendar in your list counts as new when it wasn't there the last time Helios read the changes.
  • calendar_list_entry.updated covers your own settings for a calendar. Google doesn't report a change to the calendar itself, such as a new title set by its owner, or a change to who it's shared with, as a calendar list change.

If Google refuses to watch something, Helios watches the rest and shows the events it can't receive as unavailable in the trigger picker, with the reason. This happens when the connection doesn't have access to Google Calendar, or when you can't make changes to any watched calendar, which hides its sharing settings. Helios tries the sharing settings again later, so sharing events become available once you can make changes to a watched calendar.

An agent's own changes can start new runs. An agent that creates an event on a watched calendar starts another event.created run. Filter on the title or the calendar, or say in the prompt which events to ignore. See Guarding against events you don't want.

Check that it works

  • The connection: after you approve access, the connection's status shows Connected. Error means Google rejected the token. See Common errors.
  • A trigger:
    1. Add event.created to a workflow with no filters.
    2. Create a test event on a watched calendar.
    3. Check that a run starts. Then open the connection in Helios and click Webhook events to see the event.

Common errors

What you seeCauseFix
Access token not found. Please complete the OAuth flow first.The approval in Google wasn't finishedOpen the connection and click Re-connect
Google shows Error 400: redirect_uri_mismatchThe redirect URL isn't on the OAuth clientAdd https://api.heliosapp.com/integrations/google/oauth_callback under Authorized redirect URIs
Google shows Error 403: access_deniedThe app is in Testing and the account isn't a test userAdd the account under Test users, or publish the app
Calls fail, and Test Connection shows Error, a week after connectingThe app is External and in Testing, so Google expired the refresh tokenPublish the app, then click Re-connect
An agent's call fails with Request had insufficient authentication scopesAccess to Google Calendar wasn't allowed on the consent screen, or your own app doesn't have the calendar scopeAdd the scope on Data Access if it's missing, then click Re-connect and allow access to Google Calendar
An agent's call fails with Google Calendar API has not been used in project … before or it is disabledThe Calendar API isn't enabled in your Google Cloud projectEnable the Google Calendar API in APIs & Services → Library
This Google account has none of the calendars …No calendar ID in Calendars belongs to a calendar the account can seeCopy the IDs from Integrate calendar in each calendar's settings, or leave Calendars empty
Sharing events show as unavailableYou can't make changes to any watched calendar, or the connection doesn't have access to Google CalendarWatch a calendar you can make changes to, or click Re-connect and allow access
Calendar list or settings events show as unavailableThe connection doesn't have access to Google CalendarClick Re-connect and allow access
No run starts after a changeThe calendar isn't watched, the filters don't match, or the refresh token stopped workingCheck Calendars, test with no filters, and click Re-connect if the status shows Error

Last updated on