# 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    | Auto (closed) | Deprecated | Yes      | No       | No          | Project, scope      | —           | Weight    | Yes       |
| Gitea           | Yes    | No            | No         | No       | No       | No          | Repo, scope, labels | Last 100    | —         | —         |
| OpenProject     | Yes    | Yes           | Yes        | No       | No       | Yes         | Scope, status       | —           | Yes       | Yes       |
| CalDAV          | Yes    | Config        | No         | No       | No       | No          | Category            | —           | —         | Yes       |
| Calendar (iCal) | Yes    | No            | No         | No       | No       | No          | Text search         | Today       | Duration  | Yes       |
| Redmine         | Yes    | No            | No         | No       | No       | No          | Project, scope      | Last 100    | —         | —         |
| Trello          | Yes    | No            | No         | No       | No       | Yes         | Board               | Yes         | Yes       | —         |
| Linear          | Yes    | Auto (state)  | No         | No       | No       | Yes         | Team, project       | Yes         | —         | —         |
| ClickUp         | Yes    | Auto (status) | No         | No       | Yes      | Yes         | Team                | Yes         | —         | —         |

**Legend:** **Status** = configurable or automatic status transitions; **Worklog** = time tracking submission to the external system; **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:** Issues auto-marked as done when closed in GitLab.
- **Worklog:** Previously supported; now deprecated.
- **Comments:** Comment tracking with optional filter by username.
- **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).
- **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. The `labels=` query is still sent to the server as a coarse pre-filter, but Gitea's `/repos/{owner}/{repo}/issues` and `/repos/issues/search` endpoints disagree on AND vs OR semantics ([go-gitea/gitea#33509](https://github.com/go-gitea/gitea/issues/33509)), so the client filter is the source of truth.
- **Auto-import:** Last 100 issues for the project.

### 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. Completion status can **sync back** to the server when enabled in configuration.
- **Status transitions:** Supported when enabled in configuration.
- **Worklog / Comments / Subtasks / Attachments:** Not supported.
- **Filtering:** Category-based filtering.
- **Notes:** Task notes/description support.
- **Due dates:** Start date with time support.
- **Related tasks:** Task relationship tracking.
- **URL format (example Nextcloud):** `https://<NC-URL>/remote.php/dav/calendars/<USER>/<CALENDAR_NAME>/`. Use the **“Copy private link”** (or CalDAV URL) from your calendar—**not** the subscription/export link (that is for the iCal integration). 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.
- **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.
- **Time estimates:** Event duration used as task time estimate.
- **Due dates:** Event start time (all-day or timed).
- **Descriptions:** Event description as task notes.
- **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.

### 8. Redmine

- **Issue import:** Issues from projects.
- **Status transitions / Worklog / Comments / Subtasks / Attachments:** Not supported.
- **Filtering:** Project-based; scope support.
- **Auto-import:** Last 100 issues for the project.

### 9. Trello

- **Issue import:** Cards from boards.
- **Status transitions / 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. 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.

## 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 (with optional username filtering) but do not support worklog submission; GitLab worklog support is deprecated.
- **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 optional completion sync. 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.

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)
