enhancementgood first issueintegrationnew-featurenew-integration
Repository metrics
- Stars
- (1,930 stars)
- PR merge metrics
- (PR metrics pending)
Description
Description
Add ClickUp integration to sync tasks, spaces, lists, goals, and project activity into CORE.
Reference Implementations
Existing Integrations (use as templates)
integrations/linear/- Similar project management systemintegrations/github/- Similar issue/task trackingintegrations/slack/- For messaging reference
Required Files Structure
integrations/clickup/
├── src/
│ ├── index.ts # Main entry, OAuth spec
│ ├── schedule.ts # Sync logic
│ ├── utils.ts # ClickUp API utilities
│ ├── account-create.ts # OAuth setup
│ └── create-activity.ts # Activity formatting
├── package.json
├── tsup.config.ts
└── README.md
ClickUp API Integration
OAuth Setup
- Use OAuth 2.0 (Authorization Code Grant)
- Authorization URL:
https://app.clickup.com/api?client_id={client_id}&redirect_uri={redirect_uri} - Token URL:
POST https://api.clickup.com/api/v2/oauth/token - Only Workspace owners or admins can create OAuth apps
- Users select which Workspaces to grant access during authorization
- Required parameters:
client_id,client_secret,code
Base URL
https://api.clickup.com/api/v2
Key Endpoints
GET /api/v2/team- Get authorized teams/workspacesGET /api/v2/team/{team_id}/space- Get spaces in a workspacePOST /api/v2/team/{team_id}/space- Create a spaceGET /api/v2/space/{space_id}- Get space detailsGET /api/v2/space/{space_id}/folder- Get folders in a spaceGET /api/v2/folder/{folder_id}/list- Get lists in a folderGET /api/v2/list/{list_id}- Get list detailsGET /api/v2/list/{list_id}/task- Get tasks in a listPOST /api/v2/list/{list_id}/task- Create a taskGET /api/v2/task/{task_id}- Get task detailsPUT /api/v2/task/{task_id}- Update a taskDELETE /api/v2/task/{task_id}- Delete a taskGET /api/v2/task/{task_id}/comment- Get task commentsPOST /api/v2/task/{task_id}/comment- Add a commentGET /api/v2/task/{task_id}/member- Get task membersGET /api/v2/list/{list_id}/member- Get list membersGET /api/v2/team/{team_id}/goal- Get goalsGET /api/v2/goal/{goal_id}- Get goal detailsGET /api/v2/team/{team_id}/time_entries- Get time entriesPOST /api/v2/team/{team_id}/webhook- Create a webhookGET /api/v2/team/{team_id}/webhook- Get webhooks
Events to Track
-
Task Events
- Task created
- Task updated (status, assignee, priority, due date)
- Task completed
- Task deleted
- Task moved between lists
-
Comment Events
- Comment added to task
- Comment updated
- Comment deleted
-
List/Space Events
- List created/updated/deleted
- Space created/updated/deleted
- Folder created/updated/deleted
-
Goal Events
- Goal created
- Goal updated
- Key result updated
-
Time Tracking Events
- Time entry created
- Time entry updated
- Time entry deleted
Implementation Tasks
- Set up basic integration structure following
integrations/github/src/index.tspattern - Implement OAuth 2.0 flow in
account-create.ts - Create ClickUp API utilities in
utils.ts - Implement sync logic in
schedule.tsfor tasks, spaces, and lists - Set up webhook ingestion for real-time task and comment events
- Convert ClickUp events to CORE activity format
- Handle workspace hierarchy (Team > Space > Folder > List > Task)
- Add error handling and rate limiting
- Create integration documentation
- Add to
integrations/README.md
Technical Notes
- ClickUp API v2 uses "Team" where v3 uses "Workspace" - use v2 terminology for consistency
- OAuth tokens don't expire but can be revoked
- Webhooks are created per workspace and support filtering by space/folder/list
- The API hierarchy is: Workspace (Team) > Space > Folder > List > Task
- Personal API tokens also supported for testing
- Webhook events include: taskCreated, taskUpdated, taskDeleted, taskStatusUpdated, taskAssigneeUpdated, taskCommentPosted, listCreated, folderCreated, goalCreated, etc.
Resources
- ClickUp Developer Portal
- ClickUp API Getting Started
- ClickUp Authentication Docs
- ClickUp API v2/v3 Terminology
- ClickUp OpenAPI Spec
Labels
enhancement, integration, new-feature