A small Super Productivity plugin that pulls this week's tasks from a Notion database into your Inbox, and keeps their completion in sync with Notion.
- Import: every 5 minutes, pages whose
Datefalls in the current week (Monday to Sunday) and whoseCompletedcheckbox is unchecked are added to the Inbox. Each page is imported once. - Complete in Super Productivity: ticks
Completedon the Notion page. - Complete in Notion: marks the task done in Super Productivity at the next poll.
- Search: the Notion panel searches the whole database, so you can add older tasks by hand.
Nothing else is written to Notion. Titles are read from Notion; notes, dates, projects and tags are left alone.
It's built on Super Productivity's issue-provider plugin API, so Notion tasks behave like linked Jira or GitHub issues: they show a link to the page, and Super Productivity handles polling and duplicate detection.
- Super Productivity 19 or later, desktop app. The web version can't reach Notion's API because browsers block the request (CORS).
- A Notion database with:
- a title property (any name),
- a date property (default name
Date), - a checkbox property that marks a task done (default name
Completed).
Property names are matched case-insensitively, and you can change them in the settings.
- Get the plugin ZIP, either from a release or by building it (see Development).
- In Super Productivity, open Settings → Plugins, upload the ZIP and enable Notion Tasks.
- Go to notion.so/profile/integrations and create an internal integration. Enable the Read content and Update content capabilities.
- Copy the Internal Integration Secret (starts with
ntn_). - Open your tasks database as a full page, then ••• → Connections and add the integration. For an inline database, add the connection on the page that contains it.
- Copy the page's URL. The plugin takes the database ID from it.
- Open the Issue Provider Panel and add Notion Tasks.
- Fill in:
- Notion integration token: the
ntn_…secret - Database ID: the database URL, or just the 32-character ID before
?v= - Advanced Config (optional): the names of your done, date and title properties
- Notion integration token: the
- Set these, or nothing will be imported automatically:
- Default project → Inbox
- Auto add to backlog → on (enabled once a default project is chosen)
- Polling mode → Always (otherwise it only polls while the Inbox is open)
- Click Test connection, then Save.
Imported tasks land in the Inbox backlog.
- A task is imported once. Completing and archiving it doesn't bring it back. Deleting it does: if the page still matches the filter, the next poll imports it again. Complete tasks instead of deleting them.
- Tasks stay after their week. The filter only decides what's newly imported. If a task's date moves out of the week, the Super Productivity task isn't removed.
- Removing and re-adding the provider starts fresh: this week's tasks are imported again.
- Completion is the only change sent to Notion. Un-completing a task unchecks the box.
Test connection shows Notion's own reason for a failure. Common ones:
| Message | Fix |
|---|---|
404 object_not_found |
Connect the integration to the database (••• → Connections) and use the ID of the database itself, not a page or linked view. |
401 unauthorized |
The token is wrong or was revoked. Copy the secret again. |
no checkbox property named "…" |
Set the done property's name under Advanced Config. |
"…" is a status property, not a checkbox |
Only checkbox properties are supported as the done property. |
Network error / timed out |
Temporary network or DNS trouble. The plugin retries automatically; restarting Super Productivity clears its cached DNS failures. |
If tasks aren't imported but search works, check the default project, auto-add and polling
mode settings above. Errors from import, search and completion are logged in the developer
console (Ctrl+Shift+I) as [Notion Tasks] ….
The plugin is plain JavaScript with no build step:
| File | Purpose |
|---|---|
plugin.js |
The issue provider (PluginAPI.registerIssueProvider) |
manifest.json |
Plugin metadata; version is used for the ZIP name |
notion.svg |
Icon |
package.ps1 |
Builds dist/notion-tasks-<version>.zip |
REDESIGN.md |
Design, decisions, risks and verification results |
Build the ZIP:
./package.ps1Notion API version 2022-06-28 is pinned in plugin.js.
Forked from AlessioLovato/notion-sync-plugin
by Alessio Lovato, and rewritten as a much smaller issue-provider plugin. MIT licensed (see LICENSE).