Once IntelliPlan’s AI scheduler generates a study plan for the week, you can push the entire schedule to Google Calendar with a single click. Every study block — including the assignment name, estimated duration, and scheduled start time — becomes a real Google Calendar event visible alongside your other commitments. The export uses OAuth 2.0 with PKCE (Proof Key for Code Exchange) for a secure authorization flow that does not require storing a client secret in the browser. After a one-time authorization, IntelliPlan writes calendar events on your behalf and the connection persists across sessions.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/UAnirudh/IntelliPlan/llms.txt
Use this file to discover all available pages before exploring further.
What Gets Exported
When you click Export to Google Calendar, IntelliPlan creates calendar events for:- Each study block in the generated schedule — with the assignment or subject name as the event title
- Break blocks — scheduled rest periods are included as short calendar events so the plan renders as a complete picture of your study day
- Multi-day schedules — all days in the generated plan are exported in a single operation
https://www.googleapis.com/auth/calendar.events scope, which means IntelliPlan can create and manage events but cannot read or modify events created by other applications.
Environment Variables
.env
| Variable | Required | Description |
|---|---|---|
GOOGLE_CLIENT_ID | Yes | OAuth 2.0 client ID from Google Cloud Console |
GOOGLE_CLIENT_SECRET | Yes | OAuth 2.0 client secret |
GOOGLE_REDIRECT_URI | Yes | Must match the authorized redirect URI in Google Cloud Console |
These credentials are shared between Google Calendar export and Google account login. They are separate from
GOOGLE_CLASSROOM_CLIENT_ID / GOOGLE_CLASSROOM_CLIENT_SECRET, which are used only for the Google Classroom LMS integration.OAuth 2.0 with PKCE
IntelliPlan implements the full OAuth 2.0 authorization code flow with PKCE for Google Calendar. PKCE (Proof Key for Code Exchange) protects the authorization code flow against interception attacks by binding the authorization request to the token exchange using a cryptographic challenge:PKCE challenge generation
IntelliPlan generates a cryptographically random
code_verifier using secrets.token_urlsafe(64), then computes a SHA-256 hash of it as the code_challenge:Authorization redirect
The student is redirected to Google’s authorization endpoint. The
code_challenge and code_challenge_method=S256 are included in the URL alongside the requested scopes and state parameter:Code exchange with verifier
After Google redirects back with a
code, IntelliPlan exchanges it at Google’s token endpoint with the original code_verifier included:Requested Scopes
| Scope | Purpose |
|---|---|
https://www.googleapis.com/auth/calendar.events | Create and manage calendar events (write access) |
openid | Identity verification |
https://www.googleapis.com/auth/userinfo.email | Read the user’s email address |
https://www.googleapis.com/auth/userinfo.profile | Read the user’s display name |
Exporting a Schedule
After generating a study schedule in the AI Scheduler, click Export to Google Calendar. IntelliPlan calls:Setting Up Google Cloud Credentials
Create or open a Google Cloud project
Go to console.cloud.google.com and select your IntelliPlan project.
Enable the Google Calendar API
Navigate to APIs & Services → Library, search for Google Calendar API, and enable it.
Configure the OAuth consent screen
Under APIs & Services → OAuth consent screen, add
https://www.googleapis.com/auth/calendar.events to the scopes list.Create OAuth 2.0 credentials
Go to APIs & Services → Credentials → Create Credentials → OAuth client ID. Set Application type to Web application and add your redirect URI to the authorized list.
Troubleshooting
'redirect_uri_mismatch' error during authorization
'redirect_uri_mismatch' error during authorization
No refresh token is returned
No refresh token is returned
If no refresh token is returned after authorization, it is usually because
access_type=offline and prompt=consent were not both set during the authorization request. IntelliPlan always sends both. If you see this in a self-hosted instance, verify that get_auth_url is being called with purpose="calendar" and not purpose="login".Events appear on the wrong Google account
Events appear on the wrong Google account
The
prompt=select_account parameter is used for login flows, while Calendar export uses prompt=consent to always show the account chooser. If events are going to the wrong calendar, disconnect the Google Calendar integration from Settings and reconnect, choosing the correct Google account during authorization.