Google Calendar - Setup Guide
Setup and configuration guide for Google Calendar integration
Google Calendar API integration for automated calendar and event management with Axellero.
For detailed instructions on managing credentials, connectors, and triggers in Axellero Studio, see the Integration Guide.
Step 1: Create Credential
Getting OAuth 2.0 Credentials from Google Cloud
- Go to Google Cloud Console
- Create a new project or select existing one
- Navigate to APIs & Services --> Library
- Search for "Google Calendar API" and click Enable
- Go to APIs & Services --> OAuth consent screen
- Select User Type (Internal or External)
- Fill in required fields (App name, Support email)
- Add the required scopes (see table below)
- Go to APIs & Services --> Credentials
- Click Create Credentials --> OAuth client ID
- Select Web application
- Add your OAuth callback URL to Authorized redirect URIs
- Click Create and save the Client ID and Client Secret
Required Scopes:
| Scope | Permission | Use Case |
|---|---|---|
https://www.googleapis.com/auth/calendar | Full access | All calendar operations including create, update, delete |
https://www.googleapis.com/auth/calendar.readonly | Read only | List and get calendars/events without modifications |
https://www.googleapis.com/auth/calendar.events | Events only | Manage events without access to calendar settings |
https://www.googleapis.com/auth/calendar.events.readonly | Read events | Read events without modification access |
Adding Credential to Axellero
- Navigate to Application > Integrations > Credentials
- Click "Add Credential"
- Select OAuth 2.0
- Enter:
- Name: "Google Calendar - Production"
- Client ID: From Google Cloud Console
- Client Secret: From Google Cloud Console
- Authorization URL:
https://accounts.google.com/o/oauth2/v2/auth - Token URL:
https://oauth2.googleapis.com/token - Scopes: Add the required scopes
- Click Save, then click "Authorize"
- Complete the Google sign-in and grant permissions
Axellero automatically handles token refresh and secure storage.
Step 2: Create Connector
- Navigate to Application > Integrations > Connectors
- Click "Add Connector"
- Select Google Calendar from the list
- Configure:
- Name: "Google Calendar - Production"
- Credential: Select the OAuth 2.0 credential you created
- Click Save
- Test the connection using the "Test" button
The connector is now available in any workflow or agentflow.
Step 3: Create Trigger
For supported events and payload examples, see main documentation.
3.1 Create Trigger
- Navigate to Integrations > Triggers
- Click "Add Trigger" (+) button
- Select your Google Calendar connector
- Configure:
- Calendar ID: Calendar to watch (default: "primary")
- Verification Token: (Optional) Secret for webhook verification
- Events: Select event types to receive
- Click Save
Available Event Types:
| Event | Description |
|---|---|
sync | Initial sync notification when webhook is registered |
event_created | A new event was created in the calendar |
event_updated | An existing event was modified |
event_deleted | An event was deleted from the calendar |
Configuration Options:
| Option | Type | Required | Description |
|---|---|---|---|
| calendarId | TEXT | No | Calendar to watch (default: "primary") |
| secret | TEXT (PASSWORD) | No | Secret token for webhook verification (X-Goog-Channel-Token header) |
| events | TEXT | No | Event types to receive |
How it works: Axellero automatically registers a push notification channel with Google Calendar API. No manual webhook setup required.
3.2 Add Trigger to Workflow
- Open Workflow Builder
- Find your trigger in the Triggers section
- Drag to canvas as starting node
- Build workflow logic after the trigger
3.3 Test the Trigger
- Create, update, or delete an event in the watched calendar
- Check workflow execution logs in Axellero
- Verify trigger data via
{{ctx.nodes.gcalendar_trigger.outputs.data}}
Workflow Examples
Example 1: Daily Agenda Email
Send a daily summary of upcoming events via Gmail.
Workflow Steps:
- Schedule Trigger: Daily at 7:00 AM
- Google Calendar - listEvents: Get today's events
- Gmail - sendMessage: Email the agenda
Configuration (listEvents):
{
"calendarId": "primary",
"timeMin": "{{ctx.vars.todayStart}}",
"timeMax": "{{ctx.vars.todayEnd}}",
"singleEvents": true,
"orderBy": "startTime"
}Example 2: Meeting Scheduling via Telegram
Create calendar events from Telegram messages using natural language.
Workflow Steps:
- Telegram Trigger: Watch for incoming messages
- Google Calendar - quickAddEvent: Create event from text
- Telegram - sendMessage: Confirm event created
Configuration (quickAddEvent):
{
"text": "{{ctx.nodes.telegram_trigger.outputs.data.message.text}}"
}Example 3: Calendar-to-Task Sync
Sync calendar events with Linear for project tracking.
Workflow Steps:
- Schedule Trigger: Hourly
- Google Calendar - listEvents: Get recent events
- Linear - createIssue: Create task from event
Configuration (createIssue):
{
"title": "Meeting: {{ctx.nodes.gcalendar.outputs.data.events[0].summary}}",
"description": "Calendar event link: {{ctx.nodes.gcalendar.outputs.data.events[0].htmlLink}}",
"teamId": "{{ctx.vars.linearTeamId}}"
}Example 4: Event Cleanup
Automatically remove cancelled events periodically.
Workflow Steps:
- Schedule Trigger: Daily at midnight
- Google Calendar - listEvents: Get events with
showDeleted: true - Loop: Iterate over cancelled events
- Google Calendar - deleteEvent: Remove each cancelled event
Troubleshooting
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Invalid or expired token | Re-authorize in credential settings |
| 403 Forbidden | Missing required scopes | Add scopes and re-authorize |
| 400 Invalid Grant | Refresh token revoked | Re-authorize from scratch |
| 403 Access Not Configured | Calendar API not enabled | Enable Google Calendar API in Cloud Console |
| 404 Not Found | Calendar or event doesn't exist | Verify calendar/event ID |
| 429 Rate Limited | Too many requests | Check quotas in Cloud Console |
Common Issues
Token expires frequently
- Axellero handles token refresh automatically
- If still failing, re-authorize the credential
Events not appearing in queries
- Use
singleEvents: trueto expand recurring events - Check time range includes the expected events (timeMin/timeMax)
- Verify calendar ID is correct (use "primary" for main calendar)
Cannot delete primary calendar
- The primary calendar cannot be deleted, only secondary calendars
- Use
clearCalendarto remove all events from primary calendar
Security Best Practices
- Use Axellero Credential Manager for encrypted storage
- Axellero handles token refresh automatically
- Use minimum required scopes for your use case
- Monitor API usage in Google Cloud Console
- Review OAuth app permissions periodically