Google Calendar
Comprehensive calendar events management integration with Google Calendar API v3 and OAuth2 authentication.
Google Calendar Node
Professional integration with Google Calendar API v3, enabling automated calendar management, event scheduling, and meeting coordination workflows with comprehensive OAuth2 security.
Available Operations
- Event Management: Create, update, retrieve, and delete calendar events
- Event Discovery: List and search calendar events with advanced filtering
- Attendee Management: Manage meeting attendees and invitations
- Time Management: Schedule events with precise datetime handling and timezone support
- Calendar Integration: Access multiple calendars and manage permissions
Connection Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
accessToken | TEXT | Yes | OAuth2 access token for Google Calendar API authentication |
calendarId | TEXT | No | Target calendar ID (default: 'primary' for user's main calendar) |
{
"accessToken": "{{ctx.consts.GOOGLE_CALENDAR_ACCESS_TOKEN}}",
"calendarId": "{{ctx.vars.targetCalendarId}}"
}Required OAuth2 Scope: https://www.googleapis.com/auth/calendar
Event Management Operations
createEvent
Create a new calendar event with comprehensive scheduling options and attendee management.
| Parameter | Type | Required | Description |
|---|---|---|---|
summary | TEXT | Yes | Event title and primary description |
startDateTime | TEXT | Yes | Start time in RFC3339 timestamp format |
endDateTime | TEXT | Yes | End time in RFC3339 timestamp format |
description | TEXT | No | Detailed event description and agenda |
location | TEXT | No | Geographic location or meeting venue |
attendees | TEXT | No | Comma-separated email addresses of attendees |
{
"summary": "{{ctx.vars.eventTitle}}",
"description": "{{ctx.nodes.agendaGenerator.outputs.description}}\n\nGenerated by workflow: {{ctx.vars.workflowName}}",
"startDateTime": "{{ctx.vars.startTime}}",
"endDateTime": "{{ctx.vars.endTime}}",
"location": "{{ctx.vars.meetingLocation}}",
"attendees": "{{ctx.nodes.attendeeProcessor.outputs.emailList}}"
}updateEvent
Update an existing calendar event with new details and scheduling information.
| Parameter | Type | Required | Description |
|---|---|---|---|
eventId | TEXT | Yes | Google Calendar event ID to update |
summary | TEXT | No | Updated event title |
description | TEXT | No | Updated event description |
startDateTime | TEXT | No | Updated start time (RFC3339 timestamp) |
endDateTime | TEXT | No | Updated end time (RFC3339 timestamp) |
location | TEXT | No | Updated geographic location |
{
"eventId": "{{ctx.vars.eventId}}",
"summary": "{{ctx.vars.updatedTitle}}",
"startDateTime": "{{ctx.vars.newStartTime}}",
"endDateTime": "{{ctx.vars.newEndTime}}",
"location": "{{ctx.vars.updatedLocation}}"
}getEvent
Retrieve detailed information about a specific calendar event including all metadata and attendee details.
| Parameter | Type | Required | Description |
|---|---|---|---|
eventId | TEXT | Yes | Google Calendar event ID to retrieve |
{
"eventId": "{{ctx.vars.targetEventId}}"
}deleteEvent
Remove a calendar event from the calendar and send cancellation notifications to attendees.
| Parameter | Type | Required | Description |
|---|---|---|---|
eventId | TEXT | Yes | Google Calendar event ID to delete |
{
"eventId": "{{ctx.vars.eventToDelete}}"
}listEvents
Retrieve calendar events with advanced filtering, search, and pagination capabilities.
| Parameter | Type | Required | Description |
|---|---|---|---|
timeMin | TEXT | No | Lower bound (inclusive) for event end time (RFC3339 timestamp) |
timeMax | TEXT | No | Upper bound (exclusive) for event start time (RFC3339 timestamp) |
maxResults | INT | No | Maximum number of events returned (default: 10, max: 2500) |
q | TEXT | No | Free text search terms to find specific events |
orderBy | TEXT | No | Sort order: 'startTime' or 'updated' |
{
"timeMin": "{{ctx.vars.searchStartDate}}",
"timeMax": "{{ctx.vars.searchEndDate}}",
"maxResults": 50,
"q": "{{ctx.vars.searchQuery}}",
"orderBy": "startTime"
}Workflow Integration
Use workflow context for dynamic calendar management:
{
"summary": "{{ctx.vars.meetingType}} - {{ctx.user.department}}",
"description": "**Automated Meeting**\n\n**Purpose:** {{ctx.vars.meetingPurpose}}\n\n**Organizer:** {{ctx.user.name}}\n**Created:** {{ctx.vars.currentDateTime}}\n\n**Agenda:**\n{{ctx.nodes.agendaBuilder.outputs.formattedAgenda}}",
"startDateTime": "{{ctx.nodes.timeCalculator.outputs.meetingStart}}",
"endDateTime": "{{ctx.nodes.timeCalculator.outputs.meetingEnd}}",
"location": "{{ctx.vars.preferredLocation}}",
"attendees": "{{ctx.nodes.teamLookup.outputs.teamMemberEmails}}"
}Time Format Specifications
RFC3339 Timestamp Format
Google Calendar requires RFC3339 formatted timestamps:
2024-12-13T14:30:00Z # UTC time
2024-12-13T14:30:00+02:00 # With timezone offset
2024-12-13T14:30:00-05:00 # With negative timezone offsetExamples for Different Time Zones
{
"startDateTime": "2024-12-13T09:00:00-08:00", // 9 AM Pacific Time
"endDateTime": "2024-12-13T10:00:00-08:00" // 10 AM Pacific Time
}Response Format
Success Response
{
"success": true,
"event": {
"id": "event_abc123xyz",
"htmlLink": "https://calendar.google.com/event?eid=...",
"summary": "Team Meeting",
"description": "Weekly team sync meeting",
"start": {
"dateTime": "2024-12-13T14:00:00Z"
},
"end": {
"dateTime": "2024-12-13T15:00:00Z"
},
"location": "Conference Room A",
"attendees": [
{
"email": "john@company.com",
"responseStatus": "accepted"
},
{
"email": "jane@company.com",
"responseStatus": "needsAction"
}
],
"organizer": {
"email": "organizer@company.com",
"displayName": "Meeting Organizer"
}
}
}List Events Response
{
"success": true,
"events": [
{
"id": "event_123",
"summary": "Daily Standup",
"start": {
"dateTime": "2024-12-13T09:00:00Z"
},
"end": {
"dateTime": "2024-12-13T09:30:00Z"
}
}
],
"nextPageToken": "next_page_token_here",
"timeZone": "America/Los_Angeles"
}Error Response
{
"success": false,
"error": "Event not found",
"code": "NOT_FOUND",
"details": "The specified event ID does not exist or is not accessible"
}Calendar Management
Calendar IDs
- Primary Calendar:
"primary"- User's main calendar - Secondary Calendars: Use specific calendar ID (e.g.,
"calendar_id@group.calendar.google.com") - Shared Calendars: Access requires appropriate permissions
Permission Levels
| Permission | Description | Available Operations |
|---|---|---|
| Owner | Full control over calendar | All operations |
| Editor | Can create and edit events | Create, update, delete events |
| Reader | View-only access | List and get events only |
Use Cases
Meeting Automation
- Scheduled Meetings: Create recurring team meetings with automatic attendee invitations
- Dynamic Scheduling: Schedule meetings based on availability and preferences
- Meeting Updates: Automatically update meeting details based on workflow changes
- Cancellation Management: Handle meeting cancellations with proper notifications
Event-Driven Workflows
- Calendar Sync: Synchronize events across multiple calendar systems
- Notification Systems: Trigger workflows based on upcoming events
- Resource Management: Schedule and manage shared resources and meeting rooms
- Attendance Tracking: Monitor event attendance and send follow-up actions
Integration Workflows
- CRM Integration: Create meetings from sales opportunities and customer interactions
- Project Management: Schedule project milestones and deadline reminders
- HR Processes: Automate interview scheduling and employee onboarding events
- Support Systems: Schedule customer calls and support sessions
OAuth2 Authentication
Required Scopes
https://www.googleapis.com/auth/calendarToken Management
- Access Tokens: Short-lived tokens for API access (typically 1 hour)
- Refresh Tokens: Long-lived tokens for obtaining new access tokens
- Token Storage: Securely store tokens using environment variables or secure vaults
Security Considerations
- Token Rotation: Implement automatic token refresh for continuous access
- Scope Limitation: Request only necessary calendar permissions
- Audit Logging: Track calendar access and modifications for security compliance
- Rate Limiting: Respect Google Calendar API quotas and rate limits
API Limits and Best Practices
Rate Limits
- Queries per day: 1,000,000 requests per day
- Queries per 100 seconds per user: 1,000 requests
- Queries per 100 seconds: 100,000 requests
Best Practices
- Batch Operations: Group multiple calendar operations when possible
- Efficient Filtering: Use time ranges and search queries to limit result sets
- Error Handling: Implement retry logic for rate limit and temporary errors
- Cache Management: Cache frequently accessed calendar data to reduce API calls
Getting Started
- Set up OAuth2: Configure Google Cloud Console with Calendar API and OAuth2 credentials
- Obtain Access Token: Implement OAuth2 flow to get user authorization and access tokens
- Test Basic Operations: Start with simple event creation and listing operations
- Implement Error Handling: Add robust error handling for API limits and authentication issues
- Optimize Performance: Implement caching and efficient querying for production workflows