
Google Workspace EventCreatedTrigger
CertifiedPoll Google Calendar for new events
Google Workspace EventCreatedTrigger
Poll Google Calendar for new events
Polls one or more shared calendars for events created since the previous interval and starts an Execution when any are found. Uses a service account with Calendar scope (https://www.googleapis.com/auth/calendar); each calendar ID must be shared with that account. Minimum interval is PT1M (default PT5M); maxEventsPerPoll defaults to 100 and must be 1-2500. Errors on one calendar are logged and polling continues.
type: io.kestra.plugin.googleworkspace.calendar.EventCreatedTriggerExamples
Monitor calendar for any new event
id: google_calendar_event_trigger
namespace: company.team
tasks:
- id: process_events
type: io.kestra.plugin.core.log.Log
message: "Found {{ trigger.events | length }} new event(s)"
- id: log_each_event
type: io.kestra.plugin.core.flow.ForEach
values: "{{ trigger.events }}"
tasks:
- id: log_event
type: io.kestra.plugin.core.log.Log
message: "Event: {{ taskrun.value.summary }} ({{ taskrun.value.id }})"
triggers:
- id: watch_calendar
type: io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger
serviceAccount: "{{ secret('GCP_SERVICE_ACCOUNT_JSON') }}"
calendarIds:
- "team@company.com"
interval: PT5M
Monitor specific calendar with keyword filter
id: google_calendar_meeting_trigger
namespace: company.team
tasks:
- id: notify_meetings
type: io.kestra.plugin.core.flow.ForEach
values: "{{ trigger.events }}"
tasks:
- id: send_notification
type: io.kestra.plugin.slack.notifications.SlackIncomingWebhook
url: "{{ secret('SLACK_WEBHOOK') }}"
payload: |
{
"text": "New meeting scheduled: {{ taskrun.value.summary }} on {{ taskrun.value.start.dateTime }}"
}
triggers:
- id: watch_meetings
type: io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger
serviceAccount: "{{ secret('GCP_SERVICE_ACCOUNT_JSON') }}"
calendarIds:
- "team-calendar@company.com"
searchQuery: "meeting"
interval: PT10M
Monitor multiple calendars with organizer filter
id: google_calendar_multiple_trigger
namespace: company.team
tasks:
- id: log_events
type: io.kestra.plugin.core.flow.ForEach
values: "{{ trigger.events }}"
tasks:
- id: log_event
type: io.kestra.plugin.core.log.Log
message: "Event by {{ taskrun.value.organizer.email }}: {{ taskrun.value.summary }}"
triggers:
- id: watch_multiple_calendars
type: io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger
serviceAccount: "{{ secret('GCP_SERVICE_ACCOUNT_JSON') }}"
calendarIds:
- "team-calendar@company.com"
- "project-calendar@company.com"
organizerEmail: "manager@company.com"
interval: PT15M
Properties
calendarIds *Requiredarray
Calendar IDs
Email-style calendar IDs shared with the service account; each calendar is polled separately.
allowConcurrent Non-dynamicboolean
falseSpecifies whether a trigger is allowed to start a new execution even if a previous run is still in progress.
eventStatus string
CONFIRMEDTENTATIVECANCELLEDEvent status filter
Only events with this status trigger executions (CONFIRMED, TENTATIVE, CANCELLED)
interval Non-dynamicstring
PT5MdurationPolling interval
How frequently to check for new events; minimum PT1M, default PT5M
maxEventsPerPoll integerstring
100Events processed per poll
Upper bound on new events processed per calendar per poll; default 100, valid range 1-2500 (API limit)
organizerEmail string
Organizer email filter
Only events organized by this email address trigger an execution
searchQuery string
Free-text search filter
Only events matching this search term will trigger an execution. The search applies to event title, description, and location fields.
serviceAccount string
Service account key
Google service account JSON with Calendar API scope. Share each target calendar with this account email; if omitted, Application Default Credentials are used.
stopAfter Non-dynamicarray
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTEDList of execution states after which a trigger should be stopped (a.k.a. disabled).
when string
trueA condition that determines whether the trigger should run.
A Pebble expression evaluated at trigger time. The trigger fires only when the expression evaluates to a truthy value (true, a non-empty string, a non-zero number). Use this to gate trigger execution on dynamic runtime values such as execution labels, flow variables, or environment conditions.
Outputs
events array
List of new events found during the poll
All new events created since the last polling interval.
io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger-EventMetadata
date-timeWhen the event was created
The event description
The end time of the event
io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger-EventDateTime
The date (for all-day events)
date-timeThe date and time
The time zone
Type of the event
Link to the event in Google Calendar
The event ID
The event location
The organizer of the event
io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger-Organizer
The organizer's display name
The organizer's email
Whether this is the current user
The start time of the event
io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger-EventDateTime
The date (for all-day events)
date-timeThe date and time
The time zone
The event status
The event title/summary
date-timeWhen the event was last updated
Visibility of the event