MeetStream Guide: Calendar Integration & Auto-Scheduling
MeetStream Guide: Calendar Integration & Auto-Scheduling
MeetStream Guide: Calendar Integration & Auto-Scheduling
This guide explains how to connect your Google Calendar to MeetStream so bots can automatically join your meetings — no manual API calls required.
Applies to: Google Meet, Zoom, Microsoft Teams meetings on your Google Calendar. Support: docs.meetstream.ai • API: api.meetstream.ai
Once connected, MeetStream can:
Before connecting your calendar, you need three things from Google: a Client ID, Client Secret, and Refresh Token. Follow these steps to get them.
MeetStream provides a lightweight Node.js helper that runs the OAuth consent flow locally and returns your refresh token.
Prerequisites: Node.js installed on your machine.
.env file in the project root with your credentials:3. Create the server.js file and paste this code
4. Start the helper server
You’ll see:
If the refresh token is not returned, revoke MeetStream’s access at https://myaccount.google.com/permissions and try again. Google only returns a refresh token on the first consent or after a revoke.
The helper requests these scopes (read-only calendar access + basic profile):
You now have everything you need: Client ID, Client Secret, and Refresh Token.
With your credentials ready, connect your Google Calendar to MeetStream.
You’ll receive a list of your calendars and the primary calendar ID:
After connecting, you can list all calendars linked to your account.
MeetStream syncs events from Google Calendar and stores them locally. It detects meeting links for supported platforms (Google Meet, Zoom, Microsoft Teams, and others).
This endpoint syncs with Google Calendar (using incremental sync for speed) and returns your events with their current bot schedule status.
This is faster since it skips the Google API call and returns events already synced to MeetStream.
Each event includes:
MeetStream automatically detects meeting links from Google Meet, Zoom, Microsoft Teams, Webex, GoToMeeting, BlueJeans, and Whereby.
Pick a meeting from your synced events and schedule a bot for it.
The bot_config accepts the same fields you’d normally pass to the Create Bot API. MeetStream will create an EventBridge schedule that launches the bot 3 minutes before the meeting starts.
If the event is recurring, MeetStream can schedule bots for all future occurrences automatically. You can also schedule a bot for a specific occurrence by passing an occurrence_date.
If you schedule a bot for the same event twice, MeetStream won’t create a duplicate — it updates the existing schedule with the latest bot configuration.
Cancel a scheduled bot for a specific event.
This cancels the EventBridge schedule and updates the event’s status to unscheduled.
View, update, or delete your scheduled bots across all events.
You can update the scheduled join time, name, or custom attributes.
Auto-scheduling is a hands-free mode: MeetStream scans your calendar every 24 hours and automatically schedules bots for all upcoming meetings that have a meeting link.
Provide a default bot configuration that will be used for all auto-scheduled bots:
default_bot_config.For recurring meetings (weekly standups, bi-weekly syncs, etc.), MeetStream can automatically schedule a bot for the next occurrence after each meeting ends.
This continues indefinitely — every recurring meeting gets a bot, without manual intervention.
You can enable or disable this per event:
When you connect your calendar, MeetStream sets up Google Calendar push notifications (watch channels). This means:
You don’t need to re-sync manually — changes are picked up in real time via webhooks from Google.
To remove the calendar integration entirely:
Here’s the full flow to get calendar integration running:
POST /calendar/create_calendar with your Google OAuth credentialsGET /calendar/events to pull in your meetingsPOST /calendar/schedule/{event_id} to add a bot to a specific meetingPOST /calendar/auto-schedule/enable to cover all meetings automaticallyrecurring_enabled on recurring events for perpetual reschedulingCurrently, Google Calendar is the only supported calendar provider. Your Google Calendar can contain meetings from any platform — MeetStream detects Google Meet, Zoom, Microsoft Teams, Webex, GoToMeeting, BlueJeans, and Whereby links.
No. Any Google account with Google Calendar works — personal Gmail accounts and Google Workspace accounts are both supported.
Follow Section 1 of this guide — create a Google Cloud project with the Calendar API enabled, set up OAuth 2.0 credentials, and run the provided OAuth helper (node server.js) to complete the consent flow. The helper displays your refresh token in the browser.
The auto-schedule job runs every 24 hours and schedules bots for meetings happening in the next 24 hours. Meetings further out will be picked up in subsequent runs.
Bots are scheduled to join 3 minutes before the meeting’s start time.
MeetStream receives a real-time push notification from Google and automatically updates the bot’s scheduled join time to match the new meeting time.
MeetStream detects the cancellation and cancels the corresponding bot schedule. No bot will be created.
No. MeetStream requires a valid meeting link (Google Meet, Zoom, Teams, etc.) to join. Events without a detected meeting link are skipped.
MeetStream deduplicates by event. The second call updates the existing schedule with the new bot configuration — no duplicate bots are created.
Yes. When you manually schedule a bot via /calendar/schedule/{event_id}, you provide the bot_config per event. Auto-scheduling uses your default_bot_config for all meetings, but you can override individual events by scheduling them manually.
MeetStream supports standard iCalendar recurrence rules (RRULE) — daily, weekly, bi-weekly, monthly, yearly, and custom patterns. The next occurrence is calculated from the event’s recurrence rule.
Use the toggle endpoint: POST /calendar/toggle-recurrence with recurring_enabled: false for that event.
Everything: watch channels are stopped, pending bot schedules are cancelled, synced event data is deleted, and Google OAuth credentials are removed from storage. This is irreversible.
Yes. OAuth credentials are stored in AWS Systems Manager Parameter Store as encrypted SecureString parameters. Event data is stored in DynamoDB. MeetStream does not store your Google password.
For webhook event handling, see the Webhook Events Guide. For creating your first bot without calendar integration, see the First Bot Quickstart.