Skip to content

ClickUp#

ClickUp is registered for CSV import and API sync. It parses ClickUp task CSV exports or pulls ClickUp API tasks into a reviewable import session, then projects each task into the internal integrations task-create draft for operator review.

Capability Method Status
CSV_IMPORT Upload a ClickUp task CSV export ✅ Built
SYNC Pull tasks from the ClickUp API ✅ Built
USER_IMPORT Standalone ClickUp user-directory import Not built
WEBHOOK Not built

The endpoints below live under /api/v1/providers/clickup/.... They are generic — the same routes serve any registered provider by substituting the {provider} path segment. All routes require an organization-scoped user token (see Authentication).

Credential Verification#

ClickUp personal API tokens can be stored and verified for API sync:

PUT /api/v1/providers/clickup/credentials?organization_id=<id>
POST /api/v1/providers/clickup/credentials/verify?organization_id=<id>

The stored secret must be a personal token starting with pk_. Verification sends the raw token in ClickUp's Authorization header and probes GET /api/v2/team, which lists Workspaces visible to the token.

Importing From CSV#

Produce a ClickUp task export from selected Spaces, Folders, or Lists: Workspace avatar → Settings → Imports / Exports → Export Items → Select locations → Start Export → Download Export.

POST /api/v1/providers/clickup/imports/csv?organization_id=<id>
curl -X POST "https://<host>/api/v1/providers/clickup/imports/csv?organization_id=590789" \
  -H "Authorization: Bearer <user-token>" \
  -F "file=@clickup-export.csv"

The parser requires Task ID, Task Name, Status, and a created-date column (Date created / Date Created). It reads documented task-export fields such as Task Custom ID, Task Type, Task Content, Priority, Assignees, Tags, Due date / Due Date, Parent ID, List Name, Folder Name/Path, and Space Name. Malformed rows are returned in rowErrors rather than failing the whole import.

The Import Session#

{
  "status": "success",
  "message": "CSV parsed; review the proposed user mapping.",
  "data": {
    "provider": "clickup",
    "capability": "CSV_IMPORT",
    "status": "PENDING_REVIEW",
    "summary": {
      "taskCount": 2,
      "userCount": 4,
      "errorCount": 0,
      "projectionErrorCount": 0,
      "mappingNoteCount": 1
    },
    "taskEntries": [
      {
        "index": 0,
        "projected": {
          "title": "Fix OAuth redirect",
          "type": "BUG",
          "status": "IN_PROGRESS",
          "priority": "URGENT",
          "creatorId": 501,
          "ownerId": 502,
          "projectTitle": "Platform",
          "taskGroupTitle": "Authentication",
          "source": "clickup",
          "scheduleStage": "PENDING"
        },
        "projectionErrors": [],
        "mappingNotes": []
      }
    ]
  }
}

Importing From the ClickUp API#

POST /api/v1/providers/clickup/imports/sync?organization_id=<id>

Uses the stored, encrypted personal token to discover authorized Workspaces and pull tasks through ClickUp's Workspace task endpoint. The adapter follows page pagination and imports tasks from every Workspace visible to the token because the current generic sync endpoint has no provider-specific filter body.

The API mapper normalizes the same task fields as CSV where ClickUp exposes them: task id/custom id, title, description, custom item type, status, priority, creator, assignees, tags, due date, parent id, Space, Folder, List, and task URL. User mappings are proposed from task creators and assignees. A standalone ClickUp user-directory endpoint is intentionally deferred; task import does not require it.

Projection Field Coverage#

ClickUp source TeamBoost draft field Notes
Task Name title Error if shorter than 2 characters
Task Type type Common types such as Bug, Feature, Review, Documentation map directly; unknowns default to OTHER with a mapping note
Task Content description
Status status Common open/to-do names → NOT_STARTED; in-progress/review names → IN_PROGRESS; approved/done/closed names → COMPLETED; canceled names → CANCELED; unknown → left unset. Emoji prefixes in exported status names are ignored for matching.
Priority priority urgent/high/normal/low map to TeamBoost priority values; missing/null priority becomes UNKNOWN
Creator id/e-mail, when present creatorId Resolved through the user mapping. If the CSV lacks creator data or the creator is unmapped, creatorId is left unset with a mapping note; no fallback id is invented.
First assignee id/e-mail ownerId Present-but-unmapped assignee is a blocking projectionError
Tags labels Pass-through; TeamBoost creates/maps labels server-side
Folder Name/Path projectTitle
List Name taskGroupTitle
Due date plannedEndDate
Parent ID, provider refs, raw-only columns descriptionJson Context only; parent/subtask links are not wired as dependencies in this first CSV unit

requestedById is not populated from ClickUp creator. ClickUp creator is treated as creator provenance and maps only to creatorId when resolvable.

Not Built Yet#

  • Standalone ClickUp user-directory import endpoint and list-member enrichment.
  • OAuth app install flow.
  • Webhook registration and X-Signature verification.