Google Calendar
Add a bot to Google Calendar using the official integration.
The official Google Calendar integration allows your bot to access your Google Calendar data and manage events.
Setup
You will need:
For more advanced use cases, you can manually configure the integration.
You will need:
- A published bot
- A Google account
- Access to Google Cloud Console
Step 1: Create a Google Cloud project
Go to the Google Cloud Console and sign in with your Google account.
Step 2: Enable the Google Calendar API
Step 3: Create a service account
The downloaded JSON file contains sensitive credentials. Store it securely and never share it publicly. The file structure looks like this:
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "...",
"private_key": "...",
"client_email": "your-service-account@your-project.iam.gserviceaccount.com",
"client_id": "...",
"auth_uri": "...",
"token_uri": "...",
"auth_provider_x509_cert_url": "...",
"client_x509_cert_url": "...",
"universe_domain": "googleapis.com"
} Step 4: Enable domain-wide delegation (Google Workspace only)
Domain-wide delegation is required if you want your bot to:
- Create Google Meet links for events
- Send invitations to attendees
- Act on behalf of users in your organization
Without domain-wide delegation, the service account can only manage its own calendar and cannot invite attendees or create Meet links.
This feature is only available for Google Workspace accounts. Personal @gmail.com accounts do not support domain-wide delegation.
Follow Google’s official guide to delegate domain-wide authority to your service account.
When configuring the OAuth scopes in the Google Admin Console, paste in the following scopes (comma-separated):
https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/calendar.eventsStep 5: Configure OAuth consent screen (if not already configured)
Step 6: Create OAuth client
Step 7: Configure scopes
Step 8: Grant calendar access to the service account
Open Google Calendar and select the settings icon in the upper-right corner. Then, select Settings.
Step 9: Configure the integration in Botpress
Fill in the integration’s configuration fields:
Calendar ID
Calendar ID
- In Google Calendar, go to Settings and select your calendar.
- Scroll to Integrate calendar to find your Calendar ID.
- Copy the Calendar ID and paste it into the Calendar ID field in Botpress.
Client Email
Client Email
Open the JSON file you downloaded in Step 3 and copy the client_email value.
Private Key
Private Key
Open the JSON file you downloaded in Step 3 and copy the entire private_key value, including the -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY----- markers.
Impersonate Email (Google Workspace only)
Impersonate Email (Google Workspace only)
Enter the email address of a user in your Google Workspace that the service account will impersonate.
This field is required for:
- Creating Google Meet links
- Sending attendee invitations
The email must belong to an actual user in your Google Workspace domain. Without this field configured, Meet creation and attendee invitations will not work.
This field only applies if you have configured domain-wide delegation. Personal @gmail.com accounts do not support impersonation.
When you’ve filled in all the fields, select Save Configuration.
You’ve successfully configured the Google Calendar integration!
Limitations
Different Google account types have different capabilities when using this integration.
| Feature | Google Workspace | Personal (@gmail.com) |
|---|---|---|
| Create, read, update, delete events | Yes | Yes |
| Create Google Meet links | Yes | No |
| Invite attendees | Yes (requires domain-wide delegation) | No |
Cards
Check Availability
Checks calendar availability and returns free time slots for the specified date range.
inputobjectoutputobjectCreate Event
Creates a new event in the calendar.
inputobjectoutputobjectDelete Event
Deletes an event from the calendar.
inputobjectList Events
Retrieves events from the calendar.
inputobjectoutputobjectUpdate Event
Updates an existing event in the calendar. Omitted properties are left unchanged.
inputobjectoutputobject