Google Calendar integration
The Google Calendar integration reads your upcoming meetings after one connection. MeetStream puts bots on the events you choose, or on every one with a link.
What you get with Google Calendar
Google push notifications keep the schedule in step with every reschedule and cancellation.

Personal or Workspace calendars, and the calendar stays as you left it.
Each one carries its meeting platform and link.
Per event, per occurrence, per series, or every meeting with a link.
One minute before the start, with the full bot configuration behind them.
Recurring events come from the RRULE: daily, weekly, bi-weekly, monthly and yearly.
Google Calendar OAuth setup
MeetStream uses a refresh-token flow, and the setup guide ships a small Node helper that prints the token.
- Enable the Calendar APICreate a Google Cloud project and turn on the Google Calendar API.
- Create OAuth credentialsType Web application, then add the redirect URI the helper prints on start-up.
- Run the helper onceGive it your client ID and secret, complete consent in the browser, and it prints the refresh token.
- Create the calendarCall the create calendar endpoint with the three values.
The four scopes, all read-only
Two cover events and calendars. Two name the account by email and profile.
Google returns a refresh token on the first consent, so revoke the app at myaccount.google.com/permissions to get a fresh one.
In your own flow, ask for offline access and force the consent prompt.
Sync upcoming eventsFetch synced events reference: request, response and options in the docsConnect and sync
MeetStream checks the values, lists the calendars, opens watch channels and stores the credentials encrypted.
- The account and its calendarsThe response carries the account email and the calendar list, with the primary one flagged.
- A watch block on connectIt confirms which calendars are now under a live channel.
- Reconnect to rotate a tokenConnect the same account again and it replaces the connection.
curl -X POST https://api.meetstream.ai/api/v1/calendar/create_calendar \
-H "Authorization: Token $MEETSTREAM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"google_client_id": "…apps.googleusercontent.com",
"google_client_secret": "…",
"google_refresh_token": "…"
}'From there, the fetch synced events endpoint syncs what is coming up.
Each result names the meeting platform and link, and lists any bot already booked on it.
Schedule bots from events
| Method | What it does |
|---|---|
| Per event | The bot takes your full configuration: engine, streams, webhooks, timeouts and attributes |
| Per series | Book the whole series up front, 52 occurrences by default |
| Rolling | MeetStream books the next occurrence after each meeting ends |
| Auto-schedule | Every upcoming meeting with a link gets a bot, from a default configuration |
The auto-schedule job runs daily at midnight UTC over the next 24 hours and leaves booked events alone. The Calendar API lays out all three scheduling methods.
Schedule a bot on one eventSchedule event reference: request, response and options in the docsWhat happens when a meeting moves?
Changes reach MeetStream as a push, so the schedule follows the calendar and your side runs no polling loop.
- A rescheduleThe join time moves with the event.
- A cancellationThe schedule is deleted and the bot is marked cancelled. A meeting moved into the past is cancelled too.
- A new meetingThe next auto-schedule run picks it up.
Which meeting links are detected
Sync reads the Google Meet link on the event. It also reads Zoom, Teams, Webex, GoToMeeting, BlueJeans and Whereby links in the location or description.
Each event is labelled with its platform, and bots join the first three.

Enterprise-level security, keep your data private.
The certificate, the audit status and the Trust Center are all on the security page.
MeetStream is ISO 27001 certified. SOC 2 Type 2 is under audit rather than complete.
MeetStream is GDPR compliant, and bots run in the United States by default.
Google watch channels last roughly 30 days, and a daily job at 03:00 UTC renews any expiring within two days.
Calendar limits and defaults
Disconnecting stops the channels, cancels the scheduled bots and removes the stored credentials.
Got a question? We got the answer.
Common questions about Google Calendar. Access, refresh tokens, sync windows and what happens on a change.
What calendar access does MeetStream need?
Read-only scopes only. Two cover events and calendars, and two name the account by email and profile. MeetStream reads the calendar and leaves it as it found it.
How do I get a Google refresh token?
Google issues a refresh token on the first consent, and again after a revoke. Revoke the app at myaccount.google.com/permissions and run the consent flow once more to get a fresh one.
How far ahead are events synced?
From one day back to 28 days ahead by default. Widen the window on the events request when you need more. For a meeting further out, schedule a bot at a set time, up to three months ahead.
How do my users connect in production?
Your app runs the Google consent flow with your own client ID. Ask for offline access so a refresh token is issued, then pass that token to the connect endpoint. The localhost helper in the docs is there to get your first token while you build.
What happens if a meeting moves or is cancelled?
Google Calendar watch channels push the change. A reschedule updates the bot's join time. A cancellation deletes the schedule and marks the bot cancelled. A meeting moved into the past is cancelled too.
Does it work with Workspace calendars?
Yes. Personal Google accounts and Google Workspace accounts both connect through the same OAuth flow.
Can I connect more than one Google account?
Yes. One MeetStream user can hold up to 200 connections across Google and Outlook. Each one is keyed by provider and account email.
Bots that follow the calendar.
One consent flow, one request, and every meeting with a link gets a bot.