GitHub-ClickUp Integration: Troubleshooting
Debug common integration issues and resolve problems quickly
Audience: All users, support team Purpose: Fix integration issues fast with step-by-step solutions
Prerequisites: - Integration setup completed (see Quick Start Guide) - Access to GitHub Actions logs - Access to ClickUp automation logs
Quick Diagnostic Checklist
Before diving into specific issues, run through this checklist:
- [ ] Branch name includes ClickUp task ID (format:
feature/CU-123abc-description) - [ ] PR targets
developbranch (or your configured branch) - [ ] GitHub Actions workflows exist in
.github/workflows/ - [ ]
CLICKUP_TASKS_UPDATE_TOKENsecret is set in GitHub - [ ] ClickUp task exists and is accessible
- [ ] GitHub Actions workflow ran (check Actions tab)
- [ ] No GitHub Actions errors in logs
Issue 1: Branch Name Missing Task ID
Symptoms
- GitHub Action runs but skips ClickUp update
- Log shows: "No ClickUp task ID found in branch name"
- Task status doesn't change when PR is created
Root Causes
- Branch name doesn't contain
CU-prefix - Task ID format is incorrect
- Branch renamed after PR creation
Solution: Rename Branch
Step 1: Check current branch name
Step 2: Rename branch locally
# If current branch is: feature/user-authentication
# Rename to include task ID
git branch -m feature/user-authentication feature/CU-123abc-user-authentication
Step 3: Update remote branch
# Push renamed branch
git push origin -u feature/CU-123abc-user-authentication
# Delete old branch on remote (optional)
git push origin --delete feature/user-authentication
Step 4: Update PR (if already created) 1. GitHub automatically updates PR to track new branch name 2. Close and reopen PR to trigger workflow again 3. Or push a new commit to trigger workflow
Verification
# View GitHub Actions logs
gh run list --branch feature/CU-123abc-user-authentication
# Should see: "Found task ID: CU-123abc"
Valid Branch Name Formats
Correct examples:
feature/CU-123abc-user-login
fix/CU-456def-payment-bug
hotfix/CU-789ghi-critical-fix
refactor/CU-abc123-database-cleanup
Incorrect examples:
feature/123abc-description # Missing CU- prefix
feature/user-login # No task ID at all
CU-123abc-user-login # Missing branch type prefix
feature/user-login-CU-123abc # Task ID not after first slash
Issue 2: PR Targeting Wrong Branch
Symptoms
- GitHub Action not triggering when PR is created
- Workflow doesn't appear in Actions tab
- No status update in ClickUp
Root Causes
- PR targets
maininstead ofdevelop - Workflow configured for different branch than PR target
- Branch name mismatch in workflow file
Solution: Change PR Base Branch
Check PR target branch:
# View PR details
gh pr view [PR-NUMBER]
# Look for: base: develop (should match workflow configuration)
Option 1: Change PR base branch (GitHub UI)
1. Go to PR page on GitHub
2. Click Edit button next to base branch
3. Select correct branch (e.g., develop)
4. GitHub will automatically re-trigger workflows
Option 2: Update workflow to match your branch
If your team uses main instead of develop, update workflows:
# Edit .github/workflows/clickup-pr-created.yml
on:
pull_request:
types: [opened, reopened]
branches:
- main # Change from 'develop' to 'main'
Verification
- Check GitHub Actions tab
- Should see workflow run triggered after PR creation or base branch change
- ClickUp task status should update within 10-20 seconds
Issue 3: GitHub Secret Not Accessible
Symptoms
- GitHub Action fails with "secret not found" error
- Log shows:
CLICKUP_TOKEN: ***(empty or undefined) - API calls return 401 Unauthorized
Root Causes
- Secret created at repository level, workflow expects environment level
- Environment name mismatch (
developmentvsdev) - Branch not allowed to access environment
- Typo in secret name
Solution: Verify Secret Configuration
Step 1: Check where secret is stored
# GitHub UI: Settings → Secrets and variables → Actions
# Look in two places:
# 1. Repository secrets
# 2. Environment secrets (under Environments)
Step 2: Match workflow configuration
If using environment secrets:
jobs:
update-clickup:
environment: development # Must match environment name exactly
steps:
- name: Use secret
env:
CLICKUP_TOKEN: ${{ secrets.CLICKUP_TASKS_UPDATE_TOKEN }}
If using repository secrets:
jobs:
update-clickup:
# Remove 'environment: development' line
runs-on: ubuntu-latest
steps:
- name: Use secret
env:
CLICKUP_TOKEN: ${{ secrets.CLICKUP_TASKS_UPDATE_TOKEN }}
Step 3: Verify environment access
If using environments:
1. Go to Settings → Environments → [Your Environment]
2. Check "Deployment branches" setting
3. Ensure your branch is allowed:
- Option A: Selected branches → Add develop
- Option B: All branches
Step 4: Verify secret name
Secret name must match exactly:
- Correct: CLICKUP_TASKS_UPDATE_TOKEN
- Incorrect: CLICKUP_TOKEN, CLICKUP_API_TOKEN
Verification
Test secret access:
# Add debug step to workflow (temporarily)
- name: Debug secret
run: |
if [ -z "${{ secrets.CLICKUP_TASKS_UPDATE_TOKEN }}" ]; then
echo "ERROR: Secret is empty"
exit 1
else
echo "SUCCESS: Secret is available"
fi
Issue 4: ClickUp Status Not Updating
Symptoms
- GitHub Action completes successfully
- No error in logs
- ClickUp task status doesn't change
Root Causes
- Task ID is incorrect or doesn't exist
- Status name mismatch (case-sensitive)
- ClickUp API token lacks permissions
- Task is in different space/list than expected
Solution: Debug API Call
Step 1: Verify task exists
# Test ClickUp API access
curl -H "Authorization: YOUR_TOKEN" \
https://api.clickup.com/api/v2/task/CU-123abc
# Should return task details, not 404 error
Step 2: Check status name
Status names are case-sensitive and must match exactly:
- Correct: PR CREATED
- Incorrect: pr created, PR Created, Pr Created
Verify in ClickUp: 1. Go to Space → Settings → Statuses 2. Note exact spelling and capitalization 3. Update workflow if needed
Step 3: Check API token permissions
Token must have: - Read access to tasks - Write access to tasks - Access to the specific space/list
Test token:
# List accessible teams
curl -H "Authorization: YOUR_TOKEN" \
https://api.clickup.com/api/v2/team
# Should list teams you have access to
Step 4: Add detailed logging to workflow
- name: Update ClickUp status with debug
run: |
echo "Task ID: $TASK_ID"
echo "Status: PR CREATED"
RESPONSE=$(curl -s -w "\n%{http_code}" -X PUT \
"https://api.clickup.com/api/v2/task/$TASK_ID" \
-H "Authorization: $CLICKUP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "PR CREATED"
}')
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | head -n-1)
echo "HTTP Code: $HTTP_CODE"
echo "Response Body: $BODY"
if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then
echo "Success"
else
echo "Failed"
exit 1
fi
Common API Error Codes
| Code | Meaning | Solution |
|---|---|---|
| 200 | Success | Status updated successfully |
| 400 | Bad request | Check status name spelling |
| 401 | Unauthorized | Verify API token is correct |
| 404 | Not found | Task ID doesn't exist or no access |
| 429 | Rate limited | Wait and retry (see Issue 7) |
Issue 5: Workflow Not Triggering
Symptoms
- PR created but no workflow run appears in Actions tab
- No logs in GitHub Actions
- Nothing happens in ClickUp
Root Causes
- Workflow file in wrong location
- YAML syntax error in workflow file
- Workflow disabled
- PR from forked repository
Solution: Verify Workflow Configuration
Step 1: Check file location
Workflows must be in:
Not:
Step 2: Validate YAML syntax
# Install yamllint (if not installed)
pip install yamllint
# Validate workflow file
yamllint .github/workflows/clickup-pr-created.yml
Or use online validator: https://www.yamllint.com/
Step 3: Check if workflow is enabled
- Go to GitHub repository → Actions tab
- Left sidebar: Find your workflow
- If disabled, click "Enable workflow"
Step 4: Check workflow permissions
- Go to Settings → Actions → General
- Workflow permissions should be:
- "Read and write permissions" (for adding comments)
- Or "Read repository contents permissions" (minimum)
Step 5: Test workflow manually
Add manual trigger to workflow (temporarily):
on:
workflow_dispatch: # Allows manual triggering
pull_request:
types: [opened, reopened]
branches:
- develop
Then trigger manually: 1. Actions tab → Select workflow 2. "Run workflow" button 3. Check logs for errors
Issue 6: Automation Rules Not Firing
Symptoms
- ClickUp automation configured but not executing
- Expected action doesn't occur
- No automation log entries
Root Causes
- Automation disabled
- Trigger condition not met
- Action condition prevents execution
- Workspace plan doesn't support automations
Solution: Debug Automation
Step 1: Check if automation is enabled
- Go to ClickUp Space → Automations
- Find your automation in list
- Toggle should be green (enabled)
- If gray, click to enable
Step 2: Test trigger manually
For "PR opened" automation: 1. Manually change task status to "IN PROGRESS" 2. Change status to "PR CREATED" 3. Check if automation runs
Step 3: Review automation log
- Space → Automations → Click automation
- View "Activity" tab
- Check recent executions
- Look for errors or skipped runs
Step 4: Simplify automation
Remove conditions temporarily to isolate issue:
Before:
Trigger: Status changes to PR CREATED
Condition: PR Link is empty
Action: Move to IN PROGRESS
After (simplified):
Trigger: Status changes to PR CREATED
Condition: (none)
Action: Create comment "Automation triggered"
If simplified version works, issue is with condition logic.
Step 5: Check workspace plan
Automations require: - ClickUp Business plan or higher - Admin permissions in workspace
Verify: 1. Workspace settings → Plan & Billing 2. Confirm Business+ plan active
Issue 7: API Rate Limiting
Symptoms
- GitHub Actions fail intermittently
- HTTP 429 errors in logs
- Message: "Rate limit exceeded"
Root Causes
- Too many API calls in short time
- Multiple workflows triggering simultaneously
- No retry logic for rate limits
Solution: Implement Rate Limit Handling
Step 1: Add retry logic to workflow
- name: Update ClickUp with retry
env:
CLICKUP_TOKEN: ${{ secrets.CLICKUP_TASKS_UPDATE_TOKEN }}
TASK_ID: ${{ steps.extract-task-id.outputs.task_id }}
run: |
MAX_RETRIES=3
RETRY_COUNT=0
BACKOFF=10
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
RESPONSE=$(curl -s -w "\n%{http_code}" -X PUT \
"https://api.clickup.com/api/v2/task/$TASK_ID" \
-H "Authorization: $CLICKUP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "PR CREATED"}')
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
if [ "$HTTP_CODE" -eq 429 ]; then
echo "Rate limited. Waiting ${BACKOFF}s before retry..."
sleep $BACKOFF
BACKOFF=$((BACKOFF * 2)) # Exponential backoff
RETRY_COUNT=$((RETRY_COUNT + 1))
elif [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then
echo "Success"
exit 0
else
echo "Failed with HTTP $HTTP_CODE"
exit 1
fi
done
echo "Max retries exceeded"
exit 1
Step 2: Batch API calls
Combine multiple API calls into one where possible:
# Instead of: Update status + Add comment (2 calls)
# Do: Update status with comment in single call (if API supports)
Step 3: Monitor rate limit headers
curl -i -H "Authorization: YOUR_TOKEN" \
https://api.clickup.com/api/v2/task/CU-123abc
# Check response headers:
# X-RateLimit-Limit: 100
# X-RateLimit-Remaining: 95
# X-RateLimit-Reset: 1234567890
Issue 8: Task Not Found (404 Error)
Symptoms
- API returns 404 error
- Log shows: "Failed to update ClickUp (HTTP 404)"
- Task exists in ClickUp UI
Root Causes
- Task ID format incorrect
- Task in different workspace
- API token doesn't have access to task
- Task was deleted/archived
Solution: Verify Task Access
Step 1: Extract task ID correctly
# ClickUp URL: https://app.clickup.com/t/CU-123abc
# Task ID for API: CU-123abc
# Some ClickUp instances use different prefixes
# Check your ClickUp URL format
Step 2: Test task access directly
# Try with CU- prefix
curl -H "Authorization: YOUR_TOKEN" \
https://api.clickup.com/api/v2/task/CU-123abc
# If 404, try without prefix
curl -H "Authorization: YOUR_TOKEN" \
https://api.clickup.com/api/v2/task/123abc
# Use whichever format returns 200
Step 3: Check task exists and is accessible
- Open task in ClickUp UI
- Copy URL from browser
- Extract task ID from URL
- Use exact format in workflow
Step 4: Verify API token has access
API token must: - Be created by user with access to task's workspace - Have permissions for the space containing task - Not be revoked or expired
Test:
# List accessible spaces
curl -H "Authorization: YOUR_TOKEN" \
https://api.clickup.com/api/v2/team/[TEAM_ID]/space
# Verify task's space appears in list
Issue 9: Deployment Comment Not Adding
Symptoms
- PR merge works correctly
- Status updates to "MERGED & DEPLOYED DEV"
- But no deployment comment appears
Root Causes
- Deployment workflow not triggered
- Task ID not in commit message
- API token expired
- Comment API call failing silently
Solution: Debug Deployment Workflow
Step 1: Check if workflow triggered
# View recent workflow runs
gh run list --workflow=clickup-deployment-success.yml
# If no runs, workflow isn't triggering
Step 2: Verify commit message format
Workflow extracts task ID from commit message:
# Commit message must contain: CU-123abc
# Good examples:
git commit -m "feat: add login (CU-123abc)"
git commit -m "fix(CU-456def): resolve bug"
# Bad examples:
git commit -m "feat: add login" # No task ID
Step 3: Test comment API manually
curl -X POST \
-H "Authorization: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"comment_text": "Test comment"}' \
https://api.clickup.com/api/v2/task/CU-123abc/comment
# Should return 200 and comment ID
Step 4: Check workflow logs
- Go to Actions → clickup-deployment-success workflow
- Click latest run
- Expand "Add deployment comment" step
- Look for errors or API failures
FAQ
Q: Do I need to manually link PRs to ClickUp tasks?
A: No. If your branch name contains the task ID (e.g., feature/CU-123abc-login), the automation extracts it automatically. No manual PR description editing required.
Q: Can I use task IDs without the "CU-" prefix?
A: It depends on your ClickUp configuration. Check your task URLs. If they show CU-123abc, use that format. Update the regex in workflows if your prefix is different:
# Change this line in workflows:
TASK_ID=$(echo "$BRANCH_NAME" | grep -oP 'CU-\w+' || echo "")
# To match your prefix (e.g., "TASK-"):
TASK_ID=$(echo "$BRANCH_NAME" | grep -oP 'TASK-\w+' || echo "")
Q: What happens if I close a PR without merging?
A: Nothing. The workflow only triggers on merged PRs (if: github.event.pull_request.merged == true). Closed but unmerged PRs won't update ClickUp.
Q: Can I use this integration with GitHub Enterprise?
A: Yes, but you may need to adjust API endpoints. Update GITHUB_API_URL if using self-hosted GitHub Enterprise.
Q: How do I debug webhook issues?
A: ClickUp GitHub App uses webhooks. Check: 1. GitHub → Settings → Webhooks 2. Find ClickUp webhook 3. Click to view recent deliveries 4. Check response codes and payloads
Q: What if my team uses a different main branch?
A: Update all workflow files to use your branch name:
Q: Can I test without creating real PRs?
A: Yes, use workflow_dispatch for manual testing:
on:
workflow_dispatch:
inputs:
task_id:
description: 'ClickUp Task ID'
required: true
pull_request:
# ... existing config
Then trigger manually with test task ID.
Getting Help
When to Seek Help
Seek additional support if: - Issue persists after following troubleshooting steps - Error messages are unclear - API returns unexpected responses - Automation behavior is inconsistent
Where to Get Help
Internal resources: 1. Check Quick Start Guide for setup verification 2. Review Advanced Automation Guide for configuration 3. Ask in team Slack channel 4. Contact DevOps team
External resources: 1. ClickUp API documentation: https://clickup.com/api 2. GitHub Actions documentation: https://docs.github.com/actions 3. ClickUp support: [email protected] 4. GitHub support: support.github.com
Information to Provide When Asking for Help
Include: - Task ID experiencing issues - PR URL (if applicable) - GitHub Actions workflow run URL - Error messages from logs - Steps you've already tried - Expected vs actual behavior
Related Documentation
- GitHub-ClickUp Quick Start - Initial setup guide
- GitHub-ClickUp Advanced Automation - Custom fields and automation rules
- GitHub-ClickUp Workflow Guide - Daily usage patterns
- Git Workflow - Complete Git workflow