Skip to main content

Monday.com GitHub Integration

Overview

Every Pull Request in Pivot repositories must include a Monday.com task link. This is enforced automatically by GitHub Actions - PRs without proper Monday links cannot be merged.

The PR description link is for humans - reviewers can see which task this PR relates to.

The commit link is critical for automation - when code moves through the deployment pipeline (dev → main → production), the system reads Monday task IDs from the commits to update their status. Without Monday links in commits, we lose track of tasks as they progress through environments.

How Status Tracking Works

When code is fast-forwarded from development to main (or main to production), there's no PR - just a git push. The webhook receives this push event and:

  1. Reads all commits in the push
  2. Extracts Monday task IDs from commit messages
  3. Updates the status of each referenced task

This is why commits MUST have Monday links - without them, we can't track which tasks reached staging or production.

EventHow Tasks Are FoundStatus Set
PR openedFrom PR descriptionCode Review
PR merged to developmentFrom PR descriptionDeployed to Dev
Push to main (fast-forward)From commit messagesDeployed to non-production
Push to production (fast-forward)From commit messagesDeployed to production

What's Required

RequirementWhereEnforced ByWhy
Monday link in PR descriptionPR bodyGitHub ActionsFor reviewers + PR-level tracking
Monday link in at least ONE commitCommit messageGitHub ActionsFor deployment pipeline tracking
Same task ID in PR and commitsBothGitHub ActionsPrevents mismatched task references

All three requirements must be met for the PR to pass validation and be mergeable. The PR description and at least one commit must reference the same Monday task to ensure consistency.

Integration Flow

What You Get

Automatic Notifications:

  • Push a commit with a Monday link → notification appears in the Monday task
  • No setup required, works immediately
  • See commit details directly in Monday where you're already tracking work

Optional Validation:

  • Install a git hook to validate Monday links before committing
  • Prevents commits without Monday links (if you want that)
  • Easy to bypass when needed

How to Use

Writing Commits

Include a Monday.com task URL in your commit message:

git commit -m "Fix authentication bug

https://pivotapp.monday.com/boards/4176868787/pulses/18382176781"

The commit will automatically appear as a notification in that Monday task when you push.

Supported URL Formats

https://pivotapp.monday.com/boards/[board_id]/pulses/[task_id]
https://pivotapp.monday.com/boards/[board_id]/views/[view_id]/pulses/[task_id]

Both formats work - you can copy the URL directly from your browser.

Example Notification

When you push, the Monday task gets a notification like this:

🔧 GitHub Commit

Repository: pivotteam/pivot
Branch: main
Commit: abc1234

Message: Fix authentication bug

👤 Author: Your Name
🔗 View Commit: https://github.com/pivotteam/pivot/commit/abc1234

Pull Request Validation (Required)

Every Pull Request is automatically validated by GitHub Actions. PRs that fail validation cannot be merged.

Validation Rules

Important: The validation script fails hard if it cannot retrieve PR commits. If the git ref resolution fails, the check will block the merge rather than silently passing. This prevents accidental bypasses when the CI environment has unexpected ref states.

What You Need to Do

1. Include a Monday link in your PR description:

## Summary
Fixed the authentication bug that was causing login failures.

## Monday Task
https://pivotapp.monday.com/boards/4176868787/pulses/18387094473

2. Include a Monday link in at least ONE commit:

git commit -m "Fix authentication bug

https://pivotapp.monday.com/boards/4176868787/pulses/18387094473"

Both are required. The PR description links the PR to the task for reviewers. The commit links the code change to the task in git history forever.

Example: Passing Validation

Validating Monday.com links in PR...

PR #123: Fix authentication bug

CHECK 1: PR Description
─────────────────────────────────────────
✓ Found Monday link(s) in PR description: 18387094473

CHECK 2: Commits
─────────────────────────────────────────
abc1234: Fix authentication bug
↳ ✓ Monday link(s): 18387094473
def5678: Add unit tests
↳ No Monday link

CHECK 3: Task ID Consistency
─────────────────────────────────────────
✓ Matching task(s): 18387094473

Validating 1 unique Monday task(s)...
─────────────────────────────────────────
✓ Task 18387094473: "Fix login redirect issue"

═══════════════════════════════════════════
VALIDATION SUMMARY
═══════════════════════════════════════════
PR Description has link: ✓ Yes
Commit(s) have link: ✓ Yes
Task IDs match: ✓ Yes
Valid Monday tasks: 1
═══════════════════════════════════════════

PR validation passed!

Example: Failing Validation

═══════════════════════════════════════════
VALIDATION SUMMARY
═══════════════════════════════════════════
PR Description has link: ✗ No
Commit(s) have link: ✓ Yes
Task IDs match: ✓ Yes
Valid Monday tasks: 1
═══════════════════════════════════════════

VALIDATION FAILED

• PR description must contain a Monday.com task link

Required format: https://pivotapp.monday.com/boards/XXX/pulses/YYY
To bypass: add [skip-monday] to PR title or description

Bypassing Validation

In rare cases, you may need to merge without a Monday link (e.g., urgent hotfixes, automated PRs).

Add [skip-monday] to your PR title or description:

[skip-monday] Emergency production hotfix

Use this sparingly - every PR should ideally be linked to a task.

PR Lifecycle Tracking

The system automatically tracks your PR and updates Monday accordingly.

PR Lifecycle Flow

What Happens Automatically

When you open a PR:

  • Status automatically set to "Code Review"
  • Notification posted to the Monday task with PR details
  • Includes PR number, title, author, and link to the PR

When the PR is merged to development:

  • Status automatically set to "Deployed to Dev"
  • Merge notification posted to the Monday task
  • Shows PR was successfully merged and deployed to development environment

When code reaches main branch:

  • Status automatically set to "Deployed to non-production"
  • Notification posted confirming code is in staging environment
  • This happens when development is merged to main

When code reaches production branch:

  • Status automatically set to "Deployed to production"
  • Notification posted confirming code is live
  • This happens when main is merged to production

Preview URLs (for pivot web app):

  • Firebase Hosting preview URL automatically posted to Monday
  • Clickable link to test your changes before merging
  • Posted once per PR

Tasks vs Subtasks

The integration automatically handles both tasks and subtasks. When you link a Monday item in your PR:

  • Tasks live on the main SPRINTS DEV board (status column: status9)
  • Subtasks live on the Subitems board (status column: status)

The system detects this automatically - you don't need to do anything different!

Example Monday Updates

For a single PR, you'll see these updates in your Monday task:

  1. PR Opened: "Pull Request #123 opened - Feature: Add user authentication"
  2. Preview URL: "Preview Deployment - PR #123 - https://pivot-dev-59310--pr-123-abc.web.app"
  3. Commits: "3 commits, 12 files changed" (updated as you push more commits)
  4. PR Merged: "Pull Request #123 merged" + status columns updated

All updates are separate and clearly labeled, so you can see the full PR lifecycle at a glance.

Branch Strategy

Feature branches:

  • PR opened/merged notifications posted to Monday
  • Preview URLs posted (if available)
  • Commits tracked via PR (not posted individually)

Main branch:

  • Commit notifications posted directly to Monday
  • Each commit appears as a consolidated update

This prevents duplicate notifications and keeps your Monday tasks clean.

Installing the Git Hook (Optional)

The git hook validates your commit messages locally before they're committed. This is optional but recommended.

Installation

After cloning a repository:

# Navigate to repository root
cd /path/to/pivot # or pivot-kpi, pivot-mobile, etc.

# Install the hook (one-time setup)
./.github/hooks/install.sh

You should see:

✅ Git hook installed successfully!

The commit-msg hook will now validate that all commits include a Monday.com task link.

What the Hook Does

Without Monday link - rejected:

$ git commit -m "Fix authentication bug"

❌ COMMIT REJECTED: Missing Monday.com task link

Every commit must include a Monday.com task URL like:
https://pivotapp.monday.com/boards/XXX/pulses/YYY

To bypass this check (for testing/CICD), add [skip-monday] to your commit message.
To skip this hook entirely, use: git commit --no-verify

With Monday link - accepted:

$ git commit -m "Fix authentication bug

https://pivotapp.monday.com/boards/4176868787/pulses/18382176781"

[main abc1234] Fix authentication bug
1 file changed, 5 insertions(+)

Bypassing the Hook

Sometimes you need to commit without a Monday link:

Option 1: Use [skip-monday] tag

git commit -m "WIP: Testing something [skip-monday]"

Option 2: Skip all hooks

git commit --no-verify -m "Emergency hotfix"

Why Hooks Must Be Manually Installed

Git hooks are not automatically installed for security reasons. If hooks auto-ran when you clone a repository, malicious code could execute on your machine.

Key points:

  • Hooks must be manually installed by each developer
  • This is a Git security feature to prevent arbitrary code execution
  • The installation script is a one-time setup per clone
  • Installing the hook is optional but proves you're committed to the process

Historical note: You may remember server-side linters or GitHub Actions that validated commits automatically. Those worked but blocked fast-forward merges between environments (dev → stage → production). The current approach is intentionally simple: optional local validation that doesn't interfere with deployment workflows.

Troubleshooting

Webhook notification not appearing in Monday

1. Check your commit message

  • Make sure the Monday link is on its own line
  • Copy the URL directly from your browser
  • Verify the task ID is correct

2. Check webhook delivery

  • Go to repository Settings → Webhooks in GitHub
  • Click on the webhook URL
  • Check recent deliveries for errors

3. Still not working?

  • Ask in the team channel - webhook might be down
  • Check if other commits are getting posted

Hook not working

Hook not blocking commits without Monday links:

# Verify hook is installed
ls -la .git/hooks/commit-msg

# If not there, reinstall
./.github/hooks/install.sh

# Make sure it's executable
chmod +x .git/hooks/commit-msg

Hook blocking commits incorrectly:

The hook might be from an old version. Reinstall:

./.github/hooks/install.sh

Use one of the bypass options:

# Option 1: Add [skip-monday] tag
git commit -m "Emergency fix [skip-monday]"

# Option 2: Skip all hooks
git commit --no-verify -m "Emergency fix"

Repositories Using This Integration

  • pivot (main web app)
  • pivot-kpi (KPI dashboard)
  • pivot-mobile (React Native app)
  • pivot-jobs (planned)

FAQs

Q: Is the Monday link validation mandatory? A: Yes. PRs without Monday links in both the PR description AND at least one commit will fail the "Monday Link Required" check and cannot be merged.

Q: Do I have to install the git hook? A: No, the local git hook is optional. However, the GitHub Actions validation is mandatory - it runs automatically on every PR. The hook just helps you catch missing links earlier.

Q: What if I forget to include a Monday link in my PR? A: The PR will be created but will fail the "Monday Link Required" check. Edit your PR description to add the Monday link, and the check will re-run automatically.

Q: What if I forget to include a Monday link in my commit? A: If none of your commits have a Monday link, the validation will fail. You can either:

  1. Amend your last commit to add the link: git commit --amend
  2. Add a new commit with the Monday link
  3. Use [skip-monday] in the PR title (not recommended)

Q: Can I link multiple Monday tasks in one PR? A: Yes! Just include multiple Monday URLs in your PR description and/or commits. All linked tasks will receive notifications.

Q: What if I need to merge something unrelated to a Monday task? A: Add [skip-monday] to your PR title or description. Use this sparingly - it should be rare (e.g., dependency updates, automated PRs).

Q: Does this slow down my PRs? A: The validation takes about 10-15 seconds. The local hook (if installed) is instant.

Q: Will this create duplicate notifications? A: No. The system detects duplicates and only posts each commit once per Monday task. Preview URLs are only posted once per PR.

Q: What status columns get updated? A: The status progresses through the deployment pipeline:

  • Code Review - when PR is opened
  • Deployed to Dev - when merged to development
  • Deployed to non-production - when code reaches main branch
  • Deployed to production - when code reaches production branch

Q: What if the validation says my Monday task doesn't exist? A: Double-check the task URL is correct. The system validates that the task actually exists in Monday.com. Make sure you're copying the URL from an actual task, not a board or view.

Need Help?

For implementation details, architecture, or setting up the integration for new repositories, see:

For general questions about using the integration, ask in the team channel.