Calendar integration lets participants skip the tedious drag-to-mark step. Once a calendar account is connected, Timeful reads existing events from your calendar and automatically fills in the availability grid — marking you as busy wherever you have conflicting appointments. Timeful only ever reads calendar data; it never creates, modifies, or deletes events without your explicit action.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ptshen/timeful-plus/llms.txt
Use this file to discover all available pages before exploring further.
Supported Calendar Providers
Google Calendar
Connect any Google Workspace or personal Gmail account. Supports multiple Google accounts simultaneously.
Microsoft Outlook / 365
Connect Outlook.com, Hotmail, or Microsoft 365 organizational accounts via Microsoft Graph.
Apple Calendar
Connect iCloud calendars via CalDAV using your Apple ID email and an app-specific password.
CalendarType string on each CalendarAccount record in the User document:
How It Works
Authorize your calendar account
Click Add Calendar on the event page or in your account settings. Timeful redirects you to the provider’s OAuth consent screen (or prompts for CalDAV credentials for Apple).
Timeful fetches your events
After authorization, Timeful calls the calendar API read-only to retrieve your events for the date range covered by the poll. Events are stored as
CalendarEvent objects in memory — they are never persisted to the Timeful database.Availability grid is auto-filled
Timeful marks every time slot occupied by a calendar event as busy, pre-filling the grid on your behalf. You can review and adjust before submitting.
OAuth Scopes and Permissions
Timeful requests the minimum read-only permissions required. No write access is ever requested.- Google Calendar
- Microsoft Outlook / 365
- Apple Calendar
The following OAuth 2.0 scopes are requested when a user connects a Google account:
These are configured in your Google Cloud project’s OAuth consent screen. See Self-Hosting Configuration for step-by-step setup.
| Scope | Purpose |
|---|---|
https://www.googleapis.com/auth/calendar.events.readonly | Read calendar events to detect conflicts |
https://www.googleapis.com/auth/calendar.calendarlist.readonly | List available sub-calendars for the toggle UI |
https://www.googleapis.com/auth/contacts.readonly | Suggest contacts when adding attendees to a poll |
Multiple Calendar Accounts
Users can link multiple calendar accounts — including multiple Google accounts, an Outlook account, and an Apple account — all at the same time. Each account is stored as a separate entry in theCalendarAccounts map on the User document, keyed by {email}_{calendarType}:
primaryAccountKey.
Sub-Calendar Toggling
Within each linked account, Timeful discovers all sub-calendars (e.g., Google’s “Work”, “Personal”, “US Holidays”) and lists them in the calendar settings panel. EachSubCalendar entry has an enabled flag:
Calendar Options
Additional autofill behavior is controlled byCalendarOptions on the User document and updated via PATCH /api/user/calendar-options:
| Option | Description |
|---|---|
| Buffer time | Add N minutes of padding before and after each calendar event when calculating availability, so back-to-back meetings leave breathing room. |
| Working hours | Only count availability within a defined start/end hour window each day, regardless of what the calendar shows outside those hours. |
Setting Up OAuth for Self-Hosted Deployments
- Google OAuth Setup
- Microsoft OAuth Setup
To enable Google Calendar integration on your self-hosted instance:
- Go to Google Cloud Console and create or select a project.
- Enable Google Calendar API and Google People API for the project.
- Navigate to APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID.
- Set the application type to Web application.
- Add the authorized redirect URI:
https://yourdomain.com/api/auth/google/callback - Copy the Client ID and Client Secret into your
.envfile: - Set
BASE_URL=https://yourdomain.comso the callback URL matches.
Calendar integration is optional. Without Google or Microsoft OAuth credentials configured, users can still create and respond to polls anonymously — they simply won’t be able to auto-fill availability from their calendars.
Availability Groups
Use live calendar data to show real-time team availability without creating a new poll each time.
Self-Hosting Configuration
Full reference for all environment variables including OAuth credentials.