Configure Gitter GitHub Webhook Integration for Real-Time Repository Notifications
Set up Gitter's GitHub webhook to push commit, issue, and PR notifications into a chat room. Covers secret configuration, event filtering, delivery verification, rate-limit handling, and the Matrix migration path.
07 Jan 2026, 16:18 UTC

Problem: Missing Real-Time GitHub Activity in Team Chat
Development teams often lose visibility into repository changes when notifications scatter across email, GitHub's web UI, and CI/CD dashboards. Gitter's GitHub integration consolidates push events, issue updates, and pull request activity into a designated chat room as markdown-formatted messages. This guide walks through configuring the webhook, verifying delivery, and tuning filters to avoid notification fatigue.
Prerequisites
- Gitter account with owner or maintainer role in the target community
- GitHub repository where you have admin permissions (required to register webhooks)
- Existing Gitter room where notifications will appear
- Webhook secret — a random string of 20+ characters for payload signature verification
Generate a secret locally before starting: openssl rand -hex 32 (run in any terminal; no elevated permissions needed). Store it securely — you'll enter it in both Gitter and GitHub.
Step 1: Register the Integration in Gitter
- Open the Gitter web app and navigate to the target room.
- Click the room settings (gear icon) → Integrations → GitHub.
- Click Add Integration and authenticate with GitHub if prompted. Grant access to the specific repository or organization.
- Select the repository from the dropdown. The integration dashboard will display a Webhook URL (format:
https://webhooks.gitter.im/e/.../github). Copy this URL. - Paste your generated secret into the Secret field. This value must match exactly what you configure in GitHub.
- Choose event subscriptions. Recommended starting set:
push— commits to any branchpull_request— opened, closed, reopened, synchronizedissues— opened, closed, reopened, labeledissue_comment— comments on issues and PRs
- Click Save. Gitter registers the webhook on the GitHub repository automatically via the GitHub API.
Step 2: Verify Webhook Registration in GitHub
- In GitHub, go to the repository → Settings → Webhooks.
- Confirm a webhook exists with:
- Payload URL matching the Gitter Webhook URL
- Content type set to
application/json - Secret showing as configured (value hidden)
- Events matching your selections ("Send me everything" or individual events)
- Active checkbox enabled
- Click the webhook to open its details. Scroll to Recent Deliveries. You should see a
pingevent with a green 200 response — this is GitHub's test delivery sent at registration time.
Step 3: Apply Event Filters to Reduce Noise
High-traffic repositories flood chat with every commit. Gitter supports server-side filtering before messages reach the room. In the Gitter integration settings for this webhook:
- Branch filter: Enter a regex like
^(main|master|release/.*|hotfix/.*)$to only notify on protected or release branches. - Path filter: Restrict push notifications to specific directories (e.g.,
src/,infra/) using glob patterns. Leave blank for all paths. - Label filter: For issues and PRs, require specific labels (e.g.,
needs-review,critical) before posting.
Filters are evaluated on Gitter's side after receiving the payload. GitHub still delivers all subscribed events; filtering reduces chat volume but not webhook traffic or rate-limit consumption.
Step 4: Test End-to-End Delivery
- In the Gitter room, note the current message timestamp.
- Make a test commit to a branch matching your branch filter (or any branch if unfiltered):
git checkout -b test-gitter-webhook printf "// test\n" >> README.md git commit -am "test: verify Gitter webhook delivery" git push origin test-gitter-webhookRun these commands in a local clone of the repository with write access. No special permissions beyond standard push rights.
- Wait 5–15 seconds. A message from Gitter Bot (or the webhook identity) should appear in the room with markdown formatting showing repository name, branch, commit SHA, author, and message.
- If no message appears:
- Check GitHub's Recent Deliveries for the
pushevent — look for a 2xx response. - In Gitter integration settings, open Event Log (if available) for receipt timestamps and processing status.
- Verify the secret matches exactly in both places; a mismatch causes signature verification failure and silent drops.
- Check GitHub's Recent Deliveries for the
Rate Limits and Retry Behavior
Gitter enforces per-integration request quotas. Exceeding the limit results in HTTP 429 responses from Gitter to GitHub. GitHub then retries with exponential backoff (typically 10s, 30s, 1m, 5m, up to 24h). During backoff, notifications are delayed but not lost.
To avoid hitting limits:
- Use branch and path filters aggressively on monorepos.
- Disable
pushevents for repositories with more than 50 commits/day; rely on PR/issue events instead. - Monitor GitHub's delivery history for repeated 429s — they indicate filter adjustments are needed.
Limitations and Migration Notice
- No self-hosted option: This integration runs on Gitter's SaaS infrastructure only.
- Markdown rendering varies by client; complex tables or HTML in commit messages may render poorly.
- Deprecation path: Gitter's native GitHub integration is succeeded by Matrix/Element bridges (e.g., a GitHub webhook bridge for Matrix). For new deployments, evaluate the Matrix bridge, which offers richer formatting, thread support, and decentralized hosting. Confirm the current recommended path before committing to this setup.
- No PR review notifications: Review requests, approvals, and review comments are not exposed as separate event types.
Rollback: Disable or Remove the Integration
If the integration causes spam or misconfiguration:
- In Gitter room settings → Integrations → GitHub, click Remove next to the repository. This deletes the webhook from GitHub via API and stops all deliveries.
- Alternatively, in GitHub repository Settings → Webhooks, click Delete on the Gitter webhook. Gitter will show the integration as orphaned; remove it from the Gitter UI to clean up.
- No further action needed — no persistent state remains on either side.
Verification Checklist
- Webhook secret matches in Gitter and GitHub (character-for-character)
- GitHub shows green 200 for
pingand testpushdelivery - Gitter room receives formatted message within 15 seconds of push
- Branch/path/label filters suppress unwanted test events (e.g., feature branch pushes)
- No 429 responses in GitHub delivery history after 24 hours of normal activity
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.