Super Productivity plugin to pull tasks from asana. Including 2 way syncing.
  • TypeScript 59.7%
  • JavaScript 40.3%
Find a file
2026-05-08 18:52:36 -04:00
node_modules remove non-working method to list all tasks without searching. 2026-03-15 09:43:36 -04:00
plugin chore: release v1.3 2026-05-08 18:28:24 -04:00
scripts Initial commit 2026-03-14 21:59:14 -04:00
src fix: backlog import assignee filter and due date scheduling 2026-05-08 18:17:03 -04:00
.gitignore add .ds to gitignore 2026-05-08 18:27:06 -04:00
package-lock.json remove non-working method to list all tasks without searching. 2026-03-15 09:43:36 -04:00
package.json chore: release v1.3 2026-05-08 18:28:24 -04:00
README.md docs: remove create-from-SP feature, add to-do section 2026-05-08 18:52:36 -04:00
tsconfig.json Initial commit 2026-03-14 21:59:14 -04:00

sp-asana

Asana issue provider plugin for Super Productivity.

Provides 2-way sync between SP tasks and Asana tasks.

Features

  • Search any Asana task by name and link it to an SP task
  • Backlog import — pull all open tasks from a project into SP, with their Asana due dates
  • Pull updates from Asana → SP (title, notes, completed state)
  • Push updates from SP → Asana (title, completed state) — changes sync immediately on save

Sync behaviour

SP field Asana field Default direction
Done completed Both
Title name Both
Notes notes Pull only

Notes are pull-only by default to protect content you write in Asana.

Push (SP → Asana) happens via SP's taskComplete and taskUpdate hooks:

  • Marking a task done in SP immediately marks it complete in Asana.
  • Renaming a task in SP pushes the new name to Asana.
  • Un-completing a task in SP pushes completed: false to Asana (requires the task to have been polled at least once first).

Pull (Asana → SP) happens on the background poll cycle (every 5 minutes).

Setup

1. Personal Access Token

  1. Go to Asana Developer Console
  2. Click + New access token, give it a name, copy the token

2. Workspace GID

Open this URL while logged in to Asana — copy the gid for your workspace:

https://app.asana.com/api/1.0/workspaces

Open a project in Asana and grab the numeric ID from the URL:

https://app.asana.com/0/<PROJECT_GID>/board

Enables backlog import and blank-search results scoped to that project.

4. Assignee GID (optional)

Filters backlog import to only tasks assigned to a specific user. Find your GID at:

https://app.asana.com/api/1.0/users/me

5. Install in Super Productivity

  1. Open Super Productivity → Settings → Plugins
  2. Click "Install from ZIP / folder" and select the plugin/ folder (or zip the plugin/ directory and upload the ZIP)
  3. Configure the plugin with your token, workspace GID, and optionally project GID / assignee GID

Development

npm install
npm run build        # compile src/plugin.ts → plugin/plugin.js
npm run build:watch  # watch mode
npm run typecheck    # type-check without emitting
npm run zip          # package plugin/ into asana-issue-provider.zip

Or zip manually:

cd plugin && zip -j ../asana-issue-provider.zip manifest.json plugin.js icon.svg

The -j flag is required — it strips directory prefixes so all files land at the ZIP root, which is what Super Productivity expects.

The plugin/ directory is the self-contained distributable — everything SP needs is in there.

Project structure

sp-asana/
├── src/
│   ├── plugin.ts          # TypeScript source (compile → plugin/plugin.js)
│   └── plugin-api.d.ts    # Local type definitions for SP's issue provider API
├── plugin/                # Distributable (load this in SP)
│   ├── manifest.json
│   ├── plugin.js
│   └── icon.svg
├── package.json
├── tsconfig.json
└── README.md

To-do

  • Create Asana tasks from SP — the createIssue method is implemented in the plugin, but SP does not yet expose a UI entry point for it (no "create new issue" button in the task panel). This will work once SP adds that UI.

Asana API reference