Table of Contents
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Issue Integration Comparison
This reference lists which capabilities each issue provider supports: issue import, status transitions, time tracking/worklog submission, comments, subtasks, attachments, filtering options, auto-import to backlog, story points, due dates, and other provider-specific behavior. Use it to compare providers or to see what to expect when you enable one.
For an overview of how integrations work and how to set them up, see 4.24-Integrations and 2.07-Manage-Task-Integrations. For a comparison of sync providers (WebDAV, Dropbox, SuperSync, local file), see 3.08-Sync-Integration-Comparison.
Core Capabilities (All Providers)
Every issue provider supports the same basic operations: checking that the integration is enabled, testing the connection, opening the issue in the external system, fetching an issue by ID, searching issues, and adding an issue as a task in the app. All providers also support refreshing already-imported tasks so that changes in the external system (title, status, etc.) are reflected locally. Each provider has a configurable poll interval (or none) for how often the app checks for updates. Beyond that, support for status transitions, worklogs, comments, subtasks, attachments, and filtering depends on the provider and the external API.
Feature Matrix Summary
| Provider | Import | Status | Worklog | Comments | Subtasks | Attachments | Filtering | Auto-import | Story pts | Due dates |
|---|---|---|---|---|---|---|---|---|---|---|
| Jira | Yes | Yes | Yes | Yes | Yes | Yes | JQL | Yes | Yes | — |
| GitHub | Yes | No | No | Yes | No | No | Repo, assignee | Yes | — | — |
| GitLab | Yes | No | Finish day | Yes | No | No | Project, scope | — | Weight | Yes |
| Gitea | Yes | No | No | No | No | No | Repo, scope, labels | Up to 200 | — | — |
| OpenProject | Yes | Yes | Yes | No | No | Yes | Scope, status | — | Yes | Yes |
| CalDAV | Yes | Config | No | No | No | No | Category | Open todos | — | Yes |
| Calendar (iCal) | Yes | No | No | No | No | No | Text search | Today | Duration | Yes |
| Redmine | Yes | No | On done | No | No | No | Project, scope | Last 100 | — | — |
| Trello | Yes | Config | No | No | No | Yes | Board | Yes | Yes | — |
| Linear | Yes | Auto (state) | No | No | No | Yes | Team, project | Yes | — | — |
| Azure DevOps | Yes | Config | No | No | No | No | Project, scope, WIQL | Config | — | Yes |
| ClickUp | Yes | Auto (status) | No | No | Yes | Yes | Team | Yes | — | — |
| Plainspace | Yes | Two-way | No | No | No | No | Space | Yes | — | Yes |
| Nextcloud Deck | Yes | Config | No | No | No | No | Board, stacks, user | Yes | — | — |
Legend: Status = configurable or automatic status transitions; Worklog = time tracking submission to the external system ("On done" = dialog when a task is completed); Auto-import = automatic import of new issues into backlog (or "Last 100" / "Today" where noted).
Per-Provider Details
1. Jira
- Issue import: Full import with JQL search.
- Status transitions: Configurable workflows (e.g. Open → In Progress → Done).
- Worklog: Full worklog submission and time-spent tracking.
- Comments: Comment tracking and display.
- Subtasks: Subtask relationship tracking and import.
- Attachments: Attachment mapping and display.
- Filtering: JQL-based search; auto-import with custom JQL.
- Story points: Custom field support.
- Assignment: Re-assignment on task start; assignee update when marking done.
2. GitHub
- Issue import: Issues and pull requests from repositories.
- Status transitions: Not supported (issues are read-only from the app).
- Worklog: Not supported.
- Comments: Comment tracking with optional filter by username.
- Filtering: Search within repo; backlog query; username-based comment filtering.
- Auto-import: Configurable backlog query.
3. GitLab
- Issue import: Full import from projects (cloud or self-hosted).
- Status transitions: Not supported. Closing an issue in GitLab does not complete the linked task, and completing the task does not close the issue.
- Worklog: Optional. With Submit timelogs to GitLab enabled, finishing your day offers one dialog that submits the time tracked on each linked issue as GitLab spent time (whole minutes; GitLab dates it to the moment of submission).
- Comments: Comment tracking.
- Filtering: Project-based; scope (All, Assigned, Created); custom filter parameters.
- Story points: Weight field mapping.
- Due dates: Due date support.
4. Gitea
- Issue import: Issues from repositories (self-hosted); pull requests optionally (advanced setting).
- Status transitions / Worklog / Comments / Subtasks / Attachments: Not supported.
- Filtering: Repository-based; scope (All, Created by me, Assigned to me); optional comma-separated label allowlist (AND match) and denylist (NONE match), both applied client-side and supporting scoped labels (
scope/name). Also works against Forgejo. Thelabels=query is still sent to the server as a coarse pre-filter, but Gitea's/repos/{owner}/{repo}/issuesand/repos/issues/searchendpoints disagree on AND vs OR semantics (go-gitea/gitea#33509), so the client filter is the source of truth. - Auto-import: Up to 200 issues for the project (4 pages × up to 50 per page; subject to server-imposed per-page limits).
5. OpenProject
- Issue import: Work packages with project filtering.
- Status transitions: Full support with configurable workflows.
- Worklog: Time entry submission with activity types.
- Comments: Not tracked.
- Subtasks: Not supported.
- Attachments: Attachment upload support.
- Filtering: Scope (e.g. created-by-me, assigned-to-me); status and username filtering.
- Story points / Time estimates: Story point field and estimated time parsing/display.
- Due dates: Start date support.
- Progress: Percentage-done updates.
6. CalDAV
- What it uses: The app requests VTODO components only. It does not read or display VEVENTs (calendar events). If your calendar has both events and tasks, only the tasks (VTODO) appear in the app.
- Authentication: Requires login (username and password or equivalent) to the CalDAV server.
- Issue import: Task/todo import from CalDAV. Sub-tasks may optionally be imported along with parent. For already-imported VTODOs, completion status, title, and notes can each be configured as off, pull only, push only, or both. This lets completion changes pull from CalDAV, push back to it, or sync both ways. New top-level tasks added in the provider's default project can optionally be uploaded as new VTODOs (Create a CalDAV task for each new task in the default project, off by default; subtasks and repeating tasks stay local, and the category filter, if set, is added to the VTODO). Deleting a linked task can optionally delete its VTODO on the server too (Delete the CalDAV task when the linked task is deleted, off by default). Undo, or restoring the task from Recently deleted, within the undo period keeps the VTODO; a later restore does not bring it back.
- Sub-task depth: Only one level is imported as sub-tasks. A child of a sub-task is imported as another sub-task of the same top-level task; the hierarchy on the server is not changed.
- Setup: See 2.24-Set-Up-CalDAV.
- Status transitions: Supported when enabled in configuration.
- Worklog / Comments / Subtasks / Attachments: Not supported.
- Filtering: Category-based filtering.
- Auto-import: Open todos of the calendar import into the default project. Auto import to default project is on for a newly added CalDAV provider and takes effect once you choose a Default Super Productivity Project (Advanced Config); without one, todos are only listed in the issue panel.
- Notes: Task notes/description support.
- Due dates: Start date with time support.
- Related tasks: Task relationship tracking.
- URL format: For Nextcloud, use
https://<NC-URL>/remote.php/dav/calendars/<USER>/<CALENDAR_NAME>/from “Copy private link” (or the CalDAV URL), not the subscription/export link. For Vikunja, use the principal URL shown in Vikunja's CalDAV settings, e.g.https://<VIKUNJA-URL>/dav/principals/<USER>/, and set the CalDAV resource to the project name or project ID. Items without a valid VTODO are skipped.
7. Calendar (iCal)
- What it uses: The app parses VEVENT components only from an iCal feed. It does not use VTODO (tasks). Events must have a valid start time (DTSTART); otherwise they are skipped. All-day events (date-only start) are included. Events marked cancelled in the feed (
STATUS:CANCELLED) are skipped as well; a task already imported from an event stays when the event is cancelled later. A single occurrence of a repeating event that was moved shows up only at its new time, also when it was moved to an earlier day. - Authentication: No login. You only provide the calendar URL (subscription or export link).
- Issue import: Calendar events (VEVENT) from iCal URLs. Events appear in the Schedule/Planner; event description becomes the task note. Completion and time/date changes are not synced back—the feed is read-only from the app’s perspective; if you change the task in the app, the external calendar is not updated.
- Status transitions / Worklog / Comments / Subtasks / Attachments: Not supported.
- Filtering: Text-based search in event titles. Calendar provider settings can also apply optional case-insensitive include and exclude regular expressions to event titles. The include filter acts as an allowlist; the exclude filter is applied afterward.
- Auto-import: Current day events. Deleting an auto-imported event task keeps that event from being imported again, and the event shows as a calendar entry again; using Undo restores both the task and its auto-import eligibility.
- Time estimates: Event duration used as task time estimate.
- Due dates: Event start time (all-day or timed).
- Descriptions: Event description as task notes when the event is imported. When a later poll updates the task's title, time or estimate, it keeps the notes, so notes you add to the task aren't replaced.
- URL format (example Nextcloud): Use the “Copy subscription link” so the URL is in the correct form, e.g.
https://<NC-URL>/remote.php/dav/public-calendars/<CALENDAR-ID>?export. Paste this in the app under “URL of the iCal source.” Do not use the “Copy private link”—that format is for CalDAV, not iCal. - Platform note: The Disable in web or Android app setting suppresses iCal requests in the browser and on Android, where WebView network restrictions can produce similar failures.
8. Redmine
- Issue import: Issues from projects.
- Worklog: Optional. When enabled, marking a linked task (or each subtask) done opens a dialog that posts a time entry, with a Redmine activity, to the issue.
- Status transitions / Comments / Subtasks / Attachments: Not supported.
- Filtering: Project-based; scope (All, Created by me, Assigned to me); task search supports non-Latin subject matches and
#123issue ids. - Auto-import: Last 100 issues for the project.
9. Trello
- Issue import: Cards from boards.
- Card creation: Supported when a default Trello list is configured.
- Status transitions: Configurable. Completing a linked task can archive its card, and reopening the task can restore the card.
- Title: Configurable field mapping. Title updates pull from Trello by default.
- Worklog / Comments / Subtasks: Not supported.
- Attachments: Attachment mapping and display.
- Filtering: Board-based filtering.
- Story points: Supported.
- Auto-import: Automatic card import to backlog.
10. Linear
- Issue import: Issues with team/project filtering.
- Status transitions: Issues auto-marked as done based on state.
- Worklog / Comments / Subtasks: Not supported.
- Attachments: Attachment mapping and display.
- Filtering: Team and project-based.
- Auto-import: Automatic issue import to backlog.
11. Azure DevOps
- Issue import: Work items from Azure DevOps Boards.
- Status transitions: Configurable. Done state pulls from Azure DevOps by default. With Status sync direction set to push, completing a task moves the work item to its type's completed state (e.g. Closed for an Agile task, Done for a Scrum backlog item) and reopening moves it back to its in-progress state. Needs a token with work-item write access.
- Worklog / Comments / Subtasks / Attachments: Not supported.
- Filtering: Project-based; scope support (All, Created by me, Assigned to me); optional custom WIQL query for auto-import.
- Auto-import: Configurable automatic backlog import limit, up to 200 work items. An optional WIQL query can fully override the auto-import query (scope, state filter, and ordering), for example to filter by iteration path, area path, or work item type. When empty, scope-based filtering is used.
- Due dates: Due date, target date, or start date support.
12. ClickUp
- Issue import: Tasks with team filtering.
- Status transitions: Tasks auto-marked as done based on status.
- Worklog / Comments: Not supported.
- Subtasks: Full subtask support and relationship tracking.
- Attachments: Attachment mapping and display.
- Filtering: Team-based.
- Auto-import: Automatic task import to backlog.
13. Plainspace
Plainspace is Super Productivity's own collaboration layer (a shared workspace at plainspace.org), so it behaves differently from the read-mostly issue trackers above. You connect a Space with a personal API token (pat_…), and the tasks assigned to you in that Space import into the bound project.
- Issue import: Tasks assigned to you in the connected Space. A claim pool in the work view also lists unclaimed tasks you can claim into your list.
- Status transitions: Two-way done sync — completing a task locally marks it done in Plainspace, and a task completed in Plainspace is marked done on the next poll.
- Title: Two-way — renaming a task locally renames it in Plainspace (sent exactly as typed once short syntax is applied, up to 500 characters), and a rename made in Plainspace pulls in on the next poll. If both sides renamed the task between two polls, Plainspace's title wins. Short syntax (
#tag,1h,@tomorrow) in a Plainspace title is not parsed on import, and a rename applies only the short syntax that isn't already in the title:#tags,@datesand estimates already in the shared title stay text, so the shared title is not changed for everyone. - Scheduled time: Two-way — the task's scheduled time is Plainspace's time (
dueWithTime↔scheduledAt). Rescheduling locally (dialog, planner, short syntax) sends it, and a time changed in Plainspace pulls in on the next poll. Plainspace has no date without a time, so planning a day without a time, adding the task to Today without a time, or unscheduling it removes the time in Plainspace, for everyone in the Space. Write a hard time ("closes Fri 18:00") into the title instead. Repeating tasks are the exception: their time is set in Plainspace only, a local reschedule is not sent and stays until the next occurrence moves it. Repeating tasks are flagged in the claim pool and task panel; the Plainspace server advances the time to the next occurrence. - Per-field sync: A poll only takes a field Plainspace changed, so a local edit is never overwritten by an unrelated change (someone completing the task doesn't undo your rename). A change made offline, or whose push failed, is sent on the next successful poll, also after a restart; nothing is sent from a failed or offline poll.
- Sync problems on a task: The task's Plainspace section in the task panel shows Couldn't sync with the reason and a Retry button when a change could not be sent or Plainspace refused it (for example A repeating task needs its time in Plainspace, when the task became repeating there just before you removed its time; the error message still appears once when you make the change), and No longer in your Plainspace list when Plainspace stopped listing the task (reassigned, deleted, or you lost access). Such a task stays, but no longer syncs. That state is only ever set by a successful poll, never while offline.
- Recurring tasks: A recurring Plainspace task stays one local task across all its occurrences — Plainspace keeps a single item and moves its schedule forward. Once the server has advanced to the next occurrence, the local task is reopened and rescheduled on the next poll; if you archived it in the meantime, it is restored from the archive as the next occurrence. Consequences worth knowing: notes and subtasks carry over, completed subtasks stay completed (only the parent reopens), tracked time accumulates across all occurrences rather than starting fresh (unlike Super Productivity's own repeating tasks), and the completed occurrence leaves no separate archive entry. Archiving does not stop a recurring task from coming back — end or unassign the repetition in Plainspace instead. Deleting it deletes the whole series in Plainspace, for everyone in the Space. Because tracked time accumulates across occurrences, avoid setting a time estimate on a recurring Plainspace task: it is compared against the accumulated total, so once the accumulated time reaches the estimate, a task without subtasks counts as zero remaining time in the planner and schedule on later occurrences. Per-day tracking (worklog, daily summary, time exports) stays correct either way.
- Repeating tasks in a shared project: Super Productivity's own repeating tasks in a shared project create one Plainspace item per copy. With If you fall behind → Only keep the latest, an older copy removed when a newer one appears is deleted in Plainspace for everyone, without a confirmation or undo.
- What is stored where: The task's title, done state and scheduled time are stored on the Plainspace host (plainspace.org, or your own host) and are visible to the Space's members; the share dialog says so before you link a Space. Notes, subtasks, tracked time and estimates stay in Super Productivity and are never sent to Plainspace.
- Worklog / Comments / Subtasks / Attachments: Not supported.
- Filtering: By Space (one provider instance per Space).
- Auto-import: Assigned tasks auto-import into the bound project's backlog; the poll interval is 5 minutes, and Plainspace is also polled when you come back to the app (window focus, app resume), at most once a minute. A task that leaves your Plainspace list (unassigned or removed) stays in Super Productivity but no longer updates. Deleting it then removes only the local copy.
- Connecting: The connect dialog signs you in without leaving the app: enter your email, then the 6-digit code Plainspace emails you, and Super Productivity receives and stores the API token itself. If there is no Plainspace account for that email yet, it asks for your name and creates the account with a first Space, named after the project you are sharing (or "your name's Plainspace" when you are not sharing one); that Space is linked directly. By connecting you agree to the host's own Terms and Privacy Policy, linked in the dialog. If a key is already active for your account in another app or device, the dialog asks before replacing it: replacing it disconnects the old key, Plainspace integrations in Super Productivity that held it get the new one (and sync it to your other devices), and any other app using the old key needs the new one. Use the browser instead opens Plainspace's connect page to create a token and paste it, as before; a self-hosted server without in-app sign-in goes there automatically. The email and code are not stored or logged.
- Connection problems: If Plainspace rejects the token (it was revoked, or replaced because you created a new one — creating a token revokes your previous one), the provider's tab in the issue panel shows Reconnect. Pasting a new token there (or via Use a different token in the space picker) updates every Plainspace integration that used the replaced token; an integration with a different token (another host or account) keeps its own. While offline or while Plainspace is unreachable, nothing is shown and nothing changes locally: tasks are never treated as removed, and the next poll retries. A self-hosted Plainspace server too old to take titles and times shows too old to sync titles and times in the same tab; done state keeps syncing and titles and times stay local until the server is updated.
- Handing a task to someone: On a linked task assigned to you, the task context menu offers Assign to… (pick another member of the Space) and Release to Space (unassigned, so anyone can claim it). Afterwards the task is no longer yours: it stays in Super Productivity with its notes and time, shows No longer in your Plainspace list and stops syncing, as if it had been reassigned in Plainspace. Changes that have not reached Plainspace yet (e.g. a rename made while it was unreachable) are sent first; if they still can't be sent, the task is not handed off and a message says so. If it is assigned back to you, it syncs again on the next poll. A self-hosted Plainspace server that predates handoffs shows Plainspace server too old to assign.
- Inviting people: The shared project's context menu has Copy invite link, also offered on the confirmation after sharing. It copies the Space's web address; Plainspace sends people who aren't members yet to the Space's join page (a private Space shows its private notice instead).
- Sharing a project: You can turn an existing local project into a shared Space from the project context menu → Collaborate on Plainspace, or via the Collaborate on this project toggle when creating a project. This provisions a Space and a bound Plainspace provider in one step. See 2.07-Manage-Task-Integrations. A task you add to a shared project, or move into it (move to project, or
+Projectshort syntax), is created in the Space and linked; its subtasks stay local. Moving a linked task to another project keeps it linked. If creating it fails (offline, server error), an error message appears and the task stays local and unlinked; it is not retried automatically. - Disconnecting the account: On an unlinked project, open Collaborate on Plainspace → Disconnect account in the space picker. This removes the saved account from this device and closes the dialog. Opening collaboration again, including after restarting Super Productivity, asks you to connect again. Existing project integrations retain their own credentials and keep syncing; to stop them, open each relevant Plainspace integration in the issue provider panel, then choose its gear icon → Delete. Disconnecting does not revoke the API token or sign you out of the Plainspace website. Editing or deleting a provider, or restoring a backup, does not clear the separate saved account.
14. Nextcloud Deck
- Issue import: Cards from one Deck board.
- Status transitions: Configurable. Done state pulls from Deck by default; with two-way sync, completing a task marks the card done and can move it to a configured done stack.
- Notes: The card description pulls into task notes by default.
- Worklog / Comments / Subtasks / Attachments: Not supported.
- Filtering: Board-based; optional stack selection and "assigned to me" filter. Archived and done cards are skipped.
- Title: Optional template with
{CARD_TITLE},{COLUMN},{BOARD},{ID}, and{LABELS}. - Auto-import: Open cards from the selected stacks import into the backlog.
Implementation Notes
- Broadest feature set: Jira and OpenProject support the most capabilities: configurable status transitions, worklog submission, and advanced filtering. OpenProject adds progress percentage and activity; Jira adds JQL, subtasks, and assignment handling.
- Comment-focused: GitHub and GitLab offer solid issue import and comment tracking (GitHub can also filter by username) but do not support worklog submission, except GitLab's optional submit-on-finish-day dialog.
- Subtask support: Besides Jira, only ClickUp supports full subtask import and relationship tracking among the listed providers.
- Calendar-oriented: CalDAV and Calendar (iCal) are geared toward calendar/todo and event integration (categories, event duration, today's events) rather than full issue-tracking features. They are not interchangeable: iCal uses subscription URLs and VEVENT (events) only, with no login and no sync back; CalDAV uses server login and VTODO (tasks) only, with per-field pull and push directions for already-imported VTODOs. It can optionally create new VTODOs from tasks added in its default project and delete VTODOs whose tasks are deleted (both off by default). Using the wrong link type (e.g. Nextcloud “private link” in iCal or “subscription link” in CalDAV) is a common cause of the integration not working; see 4.24-Integrations for the iCal vs CalDAV overview.
- Auto-import and polling: Most providers support automatic polling for updates and many support auto-import of new issues into the backlog; exact behavior (e.g. "last 100" vs custom query) is provider-specific.
- Collaboration vs. import: Plainspace is collaboration-oriented — done state, title and scheduled time sync both ways, and you can share a local project as a shared Space. Other providers are primarily imports from external trackers, though some fields can be configured for two-way updates where supported, such as Trello card status and title.
Optional capabilities (e.g. subtasks, attachments, sending updates back to the external system) are implemented per provider depending on what the external API supports.
Related
- 4.24-Integrations — How issue and sync providers work
- 3.08-Sync-Integration-Comparison — Sync provider comparison
- 2.07-Manage-Task-Integrations — How to set up and use issue integrations
- 4.09-Task-Attributes — How issue-linked task attributes fit into the task model
- 4.11-Subtasks — Subtask behavior in the app (including issue-linked subtasks)
1.00-Quickstarts
2.00-How_To
Using Super-Productivity
- 2.01-Downloads and Install
- 2.02-Restore-Data-From-Backup
- 2.03-Add-Tasks
- 2.04-Manage-Subtasks
- 2.05-Manage-Scheduled-Tasks
- 2.06-Manage-Repeating-Tasks
- 2.07-Manage-Task-Integrations
- 2.24-Set-Up-CalDAV
- 2.08-Choose-Sync-Backend
- 2.09-Configure-Sync-Backend
- 2.19-Sync-Proton-Drive-via-rclone
- 2.20-Import-from-Todoist
- 2.21-Manage-Plugins
- 2.22-Import-from-TickTick
- 2.23-Connect-an-AI-Assistant
- 2.13-Run-with-Docker
Contributing to Super-Productivity
- 2.18-Contribute-Translations
- 2.11-Run-the-Development-Server
- 2.16-Set-Up-Development-Environment
- 2.12-Package-the-App
- 2.14-Build-for-Android
- 2.15-Develop-a-Plugin
- 2.17-Add-a-New-Issue-Integration
3.00-Reference
- 3.01-API
- 3.02-Settings-and-Preferences
- 3.03-Keyboard-Shortcuts
- 3.04-Short-Syntax
- 3.05-Web-App-vs-Desktop
- 3.06-User-Data
- 3.07-Issue-Integration-Comparison
- 3.08-Sync-Integration-Comparison
- 3.09-Theming
4.00-Concepts
Data-and-Integrations
Organizing
- 4.06-Project-View
- 4.07-Tag-View
- 4.08-Time-Estimates
- 4.09-Task-Attributes
- 4.10-Task-Notes
- 4.11-Subtasks
Planning
Doing
- 4.01-The-Today-View
- 4.02-Inbox-View
- 4.05-Board-View
- 4.14-How-Time-Is-Logged
- 4.15-Timers-and-Focus-Mode
- 4.16-Break-Reminders
- 4.17-Idle-Time
- 4.08-Time-Estimates
Reviewing
If you have further questions, please refer to the discussions page.