GitHub-ClickUp Integration: Daily Workflow Guide
Complete developer-to-QA lifecycle with automated status tracking
Time per task: ~20 seconds (using branch creation from ClickUp) Frequency: Every development task Goal: Zero manual status updates, minimal manual task ID entry
Complete Development Lifecycle
This diagram shows the entire flow from task assignment to QA approval, including automated and manual steps.
flowchart TD
Start[Task Assigned to Developer] --> Understand[Developer Reviews Task]
Understand --> InProgress[Update ClickUp: IN PROGRESS]
InProgress --> Branch{Create Branch}
Branch -->|Option A: ClickUp Button| BranchA[ClickUp Generates Branch]
Branch -->|Option B: Manual| BranchB[Create with CU-id Format]
BranchA --> Develop[Development Work]
BranchB --> Develop
Develop --> LocalTest[Test Locally]
LocalTest --> ReadyPR{Ready for PR?}
ReadyPR -->|No| Develop
ReadyPR -->|Yes| PRChoice{Choose PR Type}
PRChoice -->|Draft PR<br/>Work in progress| DraftPR[Create Draft PR]
DraftPR -->|GitHub Actions| PRDrafted[AUTO: PR DRAFTED]
PRDrafted --> ConvertReady{Ready for Review?}
ConvertReady -->|No - More work| Develop
ConvertReady -->|Yes - Convert| ConvertOpen[Mark as Open]
ConvertOpen -->|GitHub Actions| PRReady[AUTO: PR READY]
PRChoice -->|Open PR<br/>Ready to merge| OpenPR[Create Open PR]
OpenPR -->|GitHub Actions| PRReady
PRReady --> CodeReview[Code Review]
CodeReview --> ReviewDecision{Approved?}
ReviewDecision -->|Changes Needed| Develop
ReviewDecision -->|Approved| Merge[Merge PR]
Merge -->|GitHub Actions| PRMerged[AUTO: PR MERGED]
PRMerged -->|Auto-Deploy<br/>5-10 minutes| DevEnv[Deployed to Dev Environment]
DevEnv --> DevTest[Developer Tests on Dev]
DevTest --> DevWorks{Works Correctly?}
DevWorks -->|No - More Changes| Develop
DevWorks -->|Yes| ReadyQA[Developer: Update to READY FOR QA]
ReadyQA --> QAStarts[QA: Update to UNDER TESTING]
QAStarts --> QATest[QA Tests Feature]
QATest --> QADecision{Issues Found?}
QADecision -->|Yes - Assign Back| QAIssues[Add Comments & Assign to Dev]
QAIssues --> InProgress
QADecision -->|No Issues| Done[QA: Mark as DONE]
style PRDrafted fill:#FFF9C4,stroke:#F57C00
style PRReady fill:#90EE90,stroke:#2E7D32
style PRMerged fill:#90EE90,stroke:#2E7D32
style Done fill:#4CAF50,stroke:#2E7D32,color:#fff
style DevEnv fill:#FFF9C4,stroke:#F57C00
style InProgress fill:#E3F2FD,stroke:#1976D2
style ReadyQA fill:#F3E5F5,stroke:#7B1FA2
style QAStarts fill:#FCE4EC,stroke:#C2185B
Timeline Overview
| Phase | Duration | Status Updates | Automated? |
|---|---|---|---|
| Development | Varies | IN PROGRESS | Manual |
| Draft PR (Optional) | Varies | PR DRAFTED | Automated |
| PR Review | Hours-Days | PR READY | Automated |
| Merge & Deploy | 5-10 min | PR MERGED | Automated |
| Dev Testing | Minutes-Hours | READY FOR QA | Manual |
| QA Testing | Hours-Days | UNDER TESTING → DONE | Manual |
Automated vs Manual Steps
Fully Automated (GitHub Actions): - Draft PR Created → Task updates to "PR DRAFTED" - Draft PR Converted to Open → Task updates to "PR READY" - Open PR Created → Task updates to "PR READY" - PR Merged → Task updates to "PR MERGED" - Code deployment to dev environment (5-10 minutes)
Manual Updates Required: - Task assignment → IN PROGRESS - After dev testing → READY FOR QA - QA starts → UNDER TESTING - QA completes → DONE - QA finds issues → Assign back to developer
Your Current Step
Find where you are in the workflow and what comes next!
Quick Reference
| Action | Time | Method |
|---|---|---|
| Create branch with task ID | 10 sec | Create from ClickUp task |
| Auto-update status on commit | 0 sec | Use #CU-abc123[status] syntax |
| PR merged → status update | 0 sec | Automatic |
| Deploy → Ready for QA | 0 sec | Automatic (GitHub Actions) |
Total manual work: ~10-20 seconds per task
Creating Your Branch
You have two options for creating a branch with the correct ClickUp task ID:
Option A: ClickUp Branch Button (Recommended)
- Open your task in ClickUp
- Click the "Create Branch" button in the task details
- ClickUp automatically generates branch name:
feature/CU-{id}-{description} - Copy the branch name
- In your terminal:
Benefits: - Guaranteed correct format - Task ID automatically included - Branch name matches task title - No manual typing needed
Option B: Manual Branch Creation
- Note your task ID from ClickUp URL or task details (e.g.,
CU-86evg8jk0) - Create branch locally:
Requirements:
- Must include CU-{id} somewhere in branch name
- Follow naming convention: feature/CU-{id}-{description}
- Use kebab-case for description
Both options work with GitHub Actions automation!
Core Concept: Task ID Linking
The Only Method: Include ClickUp task ID in GitHub activity
Task ID Formats:
- #abc123 (short form)
- CU-abc123 (full form, recommended)
- eng-123 (custom prefix, if configured)
Where to Include Task ID: 1. Branch name (automatic if created from ClickUp) 2. Commit message 3. PR title 4. PR description
Status Update Syntax:
Workflow 1: Starting Work (Recommended Method)
Goal: Create branch with auto-included task ID
Method A: Create Branch from ClickUp (Recommended)
Steps:
- Open ClickUp task (5 sec)
-
Press
Cmd+K→ search task → Enter -
Click GitHub icon (2 sec)
- In task sidebar, click GitHub icon
-
See suggested branch names
-
Create branch (3 sec)
- Click "New GitHub Branch"
- Branch name auto-populated:
CU-abc123-feature-name - Select repository
-
Click "Create"
-
Pull branch locally
Total time: ~10 seconds Task ID: Automatically included ✅
Method B: Manual Branch Creation
If you prefer terminal workflow:
Branch naming convention:
feature/CU-{taskId}-{description}
fix/CU-{taskId}-{bug-description}
hotfix/CU-{taskId}-{critical-fix}
Workflow 2: Committing with Status Updates
Goal: Link commits to task AND update status
Basic Commit (Links Only)
Result: Commit linked to task, status unchanged
Commit with Status Update
Result: Commit linked AND task status → "In Review"
Status Update Options
| Syntax | Result |
|---|---|
#CU-abc123[in progress] |
Status → "In Progress" |
#CU-abc123[pr ready] |
Status → "PR Ready" |
#CU-abc123[in review] |
Status → "In Review" |
#CU-abc123[ready] |
Status → "Ready for QA" |
#CU-abc123[closed] |
Status → "Closed/Done" |
Note: Status name must match your ClickUp status exactly (case-insensitive)
Workflow 3: Creating Pull Request
Goal: Link PR and auto-update task status
Step 1: Push Branch
Step 2: Create PR with Task Reference
Option A: PR Title (Most Visible)
Option B: PR Description
## Description
Implements user analytics dashboard
## ClickUp Task
Closes #CU-abc123
## Testing
- [x] Unit tests passing
- [x] Manual testing complete
Option C: PR Title + Status Update
Step 2.5: Choose PR State (Draft or Open)
Important: Choose the appropriate PR state based on readiness:
Use Draft PR when:
- ❌ Work is still in progress
- ❌ You want early feedback on approach (not ready for formal review)
- ❌ Need to run CI/CD tests first
- ❌ Code is not ready to be merged
Use Open PR (Ready for Review) when:
- ✅ All work is complete and ready to be merged
- ✅ Code can be formally reviewed immediately
- ✅ All tests are passing
- ✅ Ready for team lead approval
Why this matters: - Reviewers prioritize Open PRs over drafts - Prevents wasted reviewer time on incomplete work - Clearly communicates readiness status to the team - ClickUp automation updates task status accordingly
How to set PR state:
Create as Draft:
Create as Open (default):
Convert Draft to Open:
ClickUp Status Mapping: - Draft PR → Task status: "PR DRAFTED" - Open PR → Task status: "PR READY"
Step 3: Verify Auto-Update (5-10 seconds)
- Wait 5-10 seconds
- Check ClickUp task
- Verify:
- ✅ PR link appears in task sidebar
- ✅ Task status changed to "PR Ready" (or specified status)
- ✅ PR info visible (reviews, checks, etc.)
Workflow 4: Code Review to Merge
What Happens Automatically:
- Reviewer approves PR → No status change (stays "PR Ready")
- PR merged → Task status changes to "Merged & Deployed Dev" (automatic)
- Deploy succeeds → Task status changes to "Ready for QA" (GitHub Actions)
Developer adds context: (30 sec)
@QA Ready for testing!
**Environment:** dev.azmx.com/dashboard
**Test user:** [email protected]
**Focus areas:**
- Analytics charts rendering
- Mobile responsiveness
- Error handling
**Known issues:** None
Total manual work: 30 seconds
What Happens After PR Merge
Automatic Deployment Timeline
graph LR
A[0 min<br/>PR Merged] --> B[1-3 min<br/>Deployment Starts]
B --> C[5-10 min<br/>Live on Dev]
C --> D[+15 min<br/>Developer Tests]
D --> E[+30 min<br/>READY FOR QA]
style A fill:#E3F2FD,stroke:#1976D2
style B fill:#FFF9C4,stroke:#F57C00
style C fill:#C8E6C9,stroke:#388E3C
style D fill:#F3E5F5,stroke:#7B1FA2
style E fill:#4CAF50,stroke:#2E7D32,color:#fff
Timeline Details: - 0 min: PR merged, GitHub Actions updates ClickUp to "PR MERGED" - 1-3 min: Deployment starts, code building and deploying - 5-10 min: Live on dev environment, changes are testable - +15 min: Developer tests and verifies changes work correctly - +30 min: Update to READY FOR QA, QA team can start testing
Your Next Steps After Merge
- Wait 5-10 minutes for automatic deployment to dev environment
- Access dev environment (URL:
https://dev.yourdomain.comor as configured) - Test your changes:
- Verify feature works as expected
- Check for any unexpected side effects
- Test edge cases
- If everything works:
- Go to ClickUp
- Manually update task status to "READY FOR QA"
- Add testing notes in comments (optional but helpful)
- If issues found:
- Create new branch for fixes
- Repeat PR cycle
- Don't update to READY FOR QA until fixed
Note: Deployment is automatic but status update to "READY FOR QA" is manual - this ensures you've actually tested your changes before handing to QA.
Workflow 5: Bug Subtasks with Detection Phase
Goal: Track bugs, link to parent, tag for KPI metrics
Step 1: From Parent Task (3 sec)
- Open ClickUp task being tested
- Press
T(creates subtask)
Step 2: Fill Bug Details (20 sec)
Title: Bug: Login button not working on Safari
Required Custom Fields: - Detection Phase: Dev | QA | Production (critical for KPIs) - Severity: Blocker | Critical | High | Medium | Low
Description:
**Steps to Reproduce:**
1. Open login page in Safari
2. Enter valid credentials
3. Click login button
**Expected:** User logs in
**Actual:** No response
**Browser:** Safari 17.0 / macOS
**Environment:** dev.azmx.com
Total time: ~23 seconds
QA Testing & Rework Cycle
Happy Path: No Issues Found
graph LR
A[READY FOR QA] --> B[QA: UNDER TESTING]
B --> C[QA Tests Feature]
C --> D[No Issues Found]
D --> E[DONE]
style E fill:#4CAF50,color:#fff
QA Process: 1. QA team sees task in "READY FOR QA" status 2. QA updates task to "UNDER TESTING" when starting 3. Tests feature thoroughly in dev environment 4. If everything works → Updates task to "DONE"
Rework Path: Issues Found
graph LR
A[UNDER TESTING] --> B[QA Finds Issues]
B --> C[Add Comments to Task]
C --> D[Assign Back to Developer]
D --> E[Developer: IN PROGRESS]
E --> F[Fix Issues]
F --> G[Repeat Cycle]
style B fill:#FF5252,color:#fff
Rework Process: 1. QA finds bugs or issues during testing 2. QA adds detailed comments to ClickUp task: - What doesn't work - Steps to reproduce - Expected vs actual behavior - Screenshots if applicable 3. QA assigns task back to original developer 4. Task returns to "IN PROGRESS" status 5. Developer receives ClickUp notification 6. Developer fixes issues and repeats the entire cycle from step 3
Average Iterations
- Simple features: 1 iteration (no rework)
- Medium complexity: 1-2 iterations
- Complex features: 2-3 iterations
Tip: Thorough dev environment testing (step 7) reduces QA rework cycles!
Workflow 6: Creating Branch from ClickUp
Why: Task ID automatically included, no copy-paste
Using GitHub Icon in Task
- Click GitHub icon in task sidebar
- See "Quick Start" section
- View suggested:
- Branch names (click to copy)
- Commit message templates
-
Task ID
-
Click "New GitHub Branch"
- Fill details:
- Branch name: Auto-populated with task ID
- Repository: Select from list
- Source branch: Usually
mainordevelop - Click "Create"
Custom Branch Format (Optional):
Set in ClickUp → App Center → GitHub → Workspace Settings:
Example output: CU-ae27de_Auto-generated-naming_John-smith
Monthly KPI Reporting
Goal: Calculate bug detection rate
Time: 5 minutes monthly Owner: Tech Lead or QA Lead
Step 1: Create Saved Filter (one-time)
- ClickUp List view → "Filter"
- Configure:
- Title contains: "Bug:"
- Created date: Last month
- Has custom field: "Detection Phase"
- Save as: "Bugs - Last Month"
Step 2: Run Report (5 min)
- Open "Bugs - Last Month" filter
- Group by: "Detection Phase"
- Count bugs:
| Detection Phase | Count |
|---|---|
| Dev | 12 ✅ |
| QA | 8 ✅ |
| Production | 2 ❌ |
| Total | 22 |
Step 3: Calculate KPI
Target: ≥90%
Keyboard Shortcuts
ClickUp
| Action | Shortcut |
|---|---|
| Open command menu | Cmd+K |
| Create task | C (List view) |
| Create subtask | T (Task view) |
| Change status | U (Task view) |
| Copy task ID | Click ID in task |
GitHub
| Action | Shortcut |
|---|---|
| Go to pull requests | G → P |
| Submit review | Cmd+Enter |
Troubleshooting
Issue: Task Not Linking
Check:
1. Task ID format correct? (#CU-abc123 or CU-abc123)
2. Task in Space linked to repo?
3. GitHub App authorized?
Quick fix: 1. Manually add PR link to ClickUp task 2. Report to DevOps
Issue: Status Not Updating
Check:
1. Status syntax correct? [in review] not [inreview]
2. Status name matches ClickUp exactly?
3. No space between task ID and [status]?
Example:
✅ Correct: #CU-abc123[in review]
❌ Wrong: #CU-abc123 [in review] (space)
❌ Wrong: #CU-abc123[inreview] (wrong name)
Best Practices
DO:
- ✅ Create branches FROM ClickUp (auto task ID)
- ✅ Use status syntax in commits:
#CU-abc123[status] - ✅ Include task ID in PR title (most visible)
- ✅ Set Detection Phase on ALL bug subtasks
- ✅ Copy suggested branch names from ClickUp
DON'T:
- ❌ Manually type task IDs (copy from ClickUp)
- ❌ Skip status syntax (saves manual update)
- ❌ Forget Detection Phase (breaks KPI tracking)
- ❌ Create bugs as separate tasks (use subtasks)
Time Savings
Without Integration
| Task | Time |
|---|---|
| Create branch, manually add task ID | 15 sec |
| Commit | 5 sec |
| Create PR, manually reference task | 20 sec |
| Manually update to "PR Ready" | 15 sec |
| Manually update after merge | 15 sec |
| Manually update after deploy | 15 sec |
| Manually notify QA | 10 sec |
| Total | 95 sec |
With Integration (Using Branch Creation)
| Task | Time |
|---|---|
| Create branch FROM ClickUp | 10 sec |
| Commit with status syntax | 5 sec |
| Create PR (task ID in branch) | 15 sec |
| ~~Update status~~ | 0 sec (auto) |
| ~~Update after merge~~ | 0 sec (auto) |
| ~~Update after deploy~~ | 0 sec (auto) |
| Add QA notes | 15 sec |
| Total | 45 sec |
Time saved: 50 seconds per task For 100 tasks/month: 83 minutes saved Annual: ~17 hours of manual status updates eliminated
Advanced: GitHub Automations
ClickUp offers "GitHub Automations" for advanced workflows (requires Business Plan+).
Example automations: - PR labeled "hotfix" → Set priority to Urgent - PR merged to main → Add comment with deploy link - Commit pushed → Update assignee
Setup: ClickUp → Automations → Create → Select GitHub trigger
See: Use GitHub Automations (ClickUp docs)
Related Documentation
In this repository: - Quick Start Guide - 20-minute setup guide - Automation Guide - Advanced automation rules - Troubleshooting Guide - Debug common issues
In Vault (strategic): - Development Process Workflow - Complete process framework - Developer Quality Metrics Framework - KPI definitions - ClickUp for Team Coordination - Tool philosophy
External: - GitHub Integration (official docs) - Use GitHub Automations
Last Updated: 2025-11-10 Based on: Official ClickUp documentation (Nov 2025) Maintained By: Tech Leads