IntelliPlan’s Notion integration enables two-way synchronization between your IntelliPlan task list and one or more Notion databases. Assignments imported from your school platform appear as pages in your Notion workspace, and tasks you create or update in Notion are reflected back in IntelliPlan. The connection uses Notion’s public integration OAuth flow — students authorize once by connecting through Notion’s standard permission screen, and the integration handles token refresh automatically. No Notion API key needs to be shared manually; the OAuth flow generates and stores credentials on the student’s behalf.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 Synced
The two-way sync covers:- IntelliPlan → Notion: assignments imported from connected LMS platforms (Canvas, Classroom, StudentVue, Schoology, Blackboard, Moodle) and manual tasks are written to your selected Notion database as pages
- Notion → IntelliPlan: tasks created or modified in the linked Notion database are fetched back and merged into the IntelliPlan unified task list
- Completion status: marking a task done in either IntelliPlan or Notion propagates the status to the other side
- Unified view: the
/tasks/unifiedendpoint always includes Notion tasks alongside platform assignments, so the dashboard and AI scheduler work from a complete picture
Environment Variables
.env
| Variable | Required | Description |
|---|---|---|
NOTION_CLIENT_ID | Yes | OAuth client ID from the Notion integrations dashboard |
NOTION_CLIENT_SECRET | Yes | OAuth client secret from the same page |
NOTION_REDIRECT_URI | Yes | Must match the redirect URI registered in Notion’s OAuth configuration exactly |
NOTION_API_VERSION | No | Version header sent to Notion’s OAuth token endpoints. Defaults to 2026-03-11. Does not affect data-plane calls, which are versioned separately by the notion-client SDK |
Setting Up a Notion Public Connection
Open the Notion connections dashboard
Go to app.notion.com/developers/connections and sign in with your Notion account.
Create a new public connection
Click New connection and select Public connection (not Internal). Public connections support OAuth for third-party users and are required for IntelliPlan’s per-student authorization flow.
Fill in the connection details
- Name: IntelliPlan
- Website:
https://intelliplan.tech - Redirect URI:
https://intelliplan.tech/oauth/notion/callback - Add a second redirect URI for local development if needed:
http://localhost:5000/oauth/notion/callback
OAuth Authorization Flow
Notion’s OAuth flow for public connections does not support PKCE — only astate parameter is used for CSRF protection. IntelliPlan stores the state value in the session and verifies it when the callback arrives.
Build the authorization URL
IntelliPlan constructs the Notion authorization URL with the following parameters:
Student authorizes
Notion shows the student a permission screen listing the pages and databases IntelliPlan will have access to. The student selects which databases to share and clicks Allow access.
Code exchange
Notion redirects to
NOTION_REDIRECT_URI with a code and state. IntelliPlan exchanges the code at Notion’s token endpoint using HTTP Basic authentication with NOTION_CLIENT_ID:NOTION_CLIENT_SECRET as credentials:API Endpoints
Connect Notion
Fetch Notion Tasks
/tasks/unified response.
API Version Notes
IntelliPlan uses two separate versioning surfaces for Notion:- OAuth token endpoints (
/v1/oauth/authorize,/v1/oauth/token): use theNOTION_API_VERSIONenv var, defaulting to2026-03-11. These endpoints are stable across versions. - Data-plane calls (databases, pages, queries): versioned independently by the
notion-clientPython SDK. IntelliPlan does not override the SDK’s pinned version to avoid silently changing response shapes. Notion’s 2025-09-03 release, for example, moved database queries to data sources — bumping both versions simultaneously would change request and response shapes at once.
Troubleshooting
'invalid_redirect_uri' at token exchange
'invalid_redirect_uri' at token exchange
The redirect URI sent during authorization must exactly match one of the URIs registered in the Notion connection dashboard. Check for trailing slashes,
http vs https, port numbers, and path casing. Update NOTION_REDIRECT_URI in .env and the Notion dashboard registration to match.No databases appear after connecting
No databases appear after connecting
During the Notion authorization flow, the student must explicitly select which pages or databases to share with IntelliPlan. If they clicked through without selecting any, the connection exists but IntelliPlan has no access to content. Disconnect and reconnect from Settings → Integrations → Notion to go through the selection step again.
Tasks sync in one direction only
Tasks sync in one direction only
Two-way sync requires that the connected Notion database has the expected property schema (title, due date, status). If the Notion database was created manually rather than through IntelliPlan’s setup flow, some properties may be missing or named differently. Check that the database has at minimum a
Name title property, a Date property for due dates, and a Status checkbox or select property.