Google Calendar

Productivity OAuth Windmill docs

Create, move, RSVP to and read Google Calendar events — recurring series included — from any Windmill script, flow or app.

What you can do with Google Calendar

Complete, deployable projects built around Google Calendar — the fastest way to get something real running.

Set up in 2 steps

1

Connect from the Resources page

Open Resources, click Add a resource/API and pick gcal under Instance-configured OAuth APIs. Click Connect and sign in with the Google account that owns the calendars, then name the resource and save it.

2

Run your first script

Fork any script below and read before writing anything.

Scripts

Building blocks, if none of the projects above fit. Fork one, run it, or call it as a step inside your own flow.

Submit a script →

Trigger flows from Google Calendar

Google Calendar is not only a destination. These inbound paths are supported today.

Calendar changes (native Google trigger)

Add a Google trigger of type Calendar on a script or flow and pick a calendar: Windmill subscribes to Google's push notifications and starts a run whenever an event on it is created, updated or deleted. The notification doesn't say what changed, so start from the Google native trigger template script in the gworkspace integration, set to your gcal resource: it returns the changed events, deletions included, from the second notification on.

Resource type

The shape of the credential every script on this page expects.

FieldTypeRequiredWhat it is
tokenstringYesThe OAuth token, refreshed if necessary

Questions

What can Windmill do with my account?

By default, read and write events on every calendar the connected account can access — the connection asks for calendar.events, not full calendar access. Listing calendars, reading calendar metadata and querying free/busy need extra read-only scopes: tick calendar.calendarlist.readonly, calendar.calendars.readonly and calendar.freebusy (or calendar.readonly) when you connect.

Can I create the resource by hand instead of connecting?

Nothing stops you — the resource is a single token field. But Google's access tokens last about an hour and only the OAuth flow returns the refresh token that renews them, which is why this page has no CLI lane.

There is no Connect button on my instance

An instance admin has to add a Google OAuth client once, under Instance settings → Auth/OAuth/SAML → OAuth, before the tile appears.