Setup
- Basic configuration
- Manual configuration
You will need:
For more advanced use cases, you can manually configure the integration.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):
When you’ve filled in all the fields, select Save Configuration.
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.
Enter your project details:
- Project name: Choose a descriptive name for your project.
- Organization: Select your organization (if applicable).
- Location: Choose the appropriate location.
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:
Report incorrect code
Copy
{
"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
@gmail.com accounts do not support domain-wide delegation.Report incorrect code
Copy
https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/calendar.events
Step 5: Configure OAuth consent screen (if not already configured)
Configure the OAuth consent screen. Under App Information:
- App name: Enter a name for your application.
- User support email: Select your email address.
Step 6: Create OAuth client
Step 7: Configure scopes
Add the following scopes:
https://www.googleapis.com/auth/calendarhttps://www.googleapis.com/auth/calendar.events
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.
Enter the
client_email from your downloaded JSON file (for example, your-service-account@your-project.iam.gserviceaccount.com).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
This field only applies if you have configured domain-wide delegation. Personal @gmail.com accounts do not support impersonation.
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
Here’s a reference for all Cards available with the integration:Check Availability
Create Event
Show child attributes
Show child attributes
Available options:
default, birthday, focusTime, fromGmail, outOfOffice, workingLocationAvailable options:
confirmed, tentative, cancelledAvailable options:
default, public, private, confidentialDelete Event
This Card has no output.
List Events
Show child attributes
Show child attributes
Show array item properties
Show array item properties
Available options:
default, birthday, focusTime, fromGmail, outOfOffice, workingLocationAvailable options:
confirmed, tentative, cancelledAvailable options:
default, public, private, confidentialUpdate Event
Show child attributes
Show child attributes
Available options:
default, birthday, focusTime, fromGmail, outOfOffice, workingLocationAvailable options:
confirmed, tentative, cancelledAvailable options:
default, public, private, confidentialTriggers
Here’s a reference for all Triggers available with the integration:You can access data returned from any of these Triggers by reading
event.payload after the Trigger fires.