.png)
GitHub <> HubSpot
Integration
How connecting HubSpot Tickets with GitHub Issues creates necessary feedback loops and visibility for both support & engineering teams.
Type: Full-Stack Integration
Stack: React 18, Node.js (GCP Cloud Functions), HubSpot UI Extensions, GitHub API (Octokit), Firestore, GCP Secret Manager, GCP Cloud KMS
Role: Sole Developer
Problem
Engineering and customer-facing teams that use both HubSpot and GitHub operate in a constant state of context switching. Support and success reps managing tickets in HubSpot have no visibility into the GitHub issues, commits, or pull requests tied to the problems they're working. Engineers updating issues in GitHub have no direct link back to the customer context sitting in HubSpot.
The result is duplicated communication — engineers relay status updates manually, support reps copy-paste issue links into ticket notes, and neither side has a reliable picture of where things stand. Comments drift. Updates get missed. Tickets stay open longer than they should.
HubSpot has no native GitHub integration for ticket records. The gap has to be bridged manually, or not at all.
Solution
GitSpot is a bidirectional HubSpot–GitHub integration built around a React UI extension embedded directly in HubSpot ticket records, backed by a serverless GCP Cloud Functions API.
From HubSpot, support and success teams can:
- Create new GitHub issues directly from a ticket — with configurable templates that auto-populate ticket context (subject, priority, contact email, ticket URL)
- Link existing GitHub issues to tickets for tracking
- Assign issues to GitHub Projects (v2) with status selection
- View linked PR status and commits that reference the ticket ID in their commit messages
- Post comments to a linked GitHub issue without leaving HubSpot
From GitHub, activity flows back automatically:
- Issue state changes, PR updates, and comments sync to HubSpot as notes and custom behavioral events via real-time webhooks
- Commits referencing a ticket ID (e.g.
TICKET-456) appear in the ticket's GitHub card automatically
Per-user GitHub OAuth allows individual team members to connect their own GitHub accounts, giving them access to their personal repositories and projects alongside organisation-level access via the GitHub App.
Key technical decisions:
- GCP Cloud Functions handles all API logic — GitHub API calls, webhook processing, HubSpot writes — keeping the HubSpot UI extension thin and the backend independently scalable
- GitHub OAuth tokens are encrypted at rest using AES-256-GCM via GCP Cloud KMS, with automatic 90-day key rotation
- All secrets (GitHub App credentials, HubSpot tokens) stored in GCP Secret Manager, never in environment variables
- Custom HubSpot behavioral events are created for each GitHub activity type, enabling HubSpot workflow automation and reporting on GitHub activity
- Bidirectional comment sync uses note body markers to prevent infinite loops between the two systems
Outcome
Support and engineering teams operate from a single interface. Ticket context and GitHub context live in the same place, updated in real time.
- Reps create and track GitHub issues without leaving a ticket
- Commits and PR updates surface automatically via webhooks — no manual relay required
- Custom HubSpot behavioral events unlock automation: route tickets based on linked issue state, trigger notifications on PR merge, escalate on stalled issues
- Per-user OAuth with enterprise-grade token encryption ensures individuals access only what they're authorised to see
- Issue templates eliminate repetitive data entry and enforce consistency in how engineering receives bug reports from support
Part of a professional portfolio. Full source available at github.com/Suixcity/gitspot
Want to chat
it over?
These are complex projects with many variables operating in a dynamic world. Things change, if you have any questions, need a hand, or anything else I can help with please reach out!