AppEngineering work, inside your CRM

GitHub Issues as native HubSpot records.

Resonate Issues syncs GitHub issues two-way into HubSpot as a first-class Issue object - associated with the tickets, deals, companies, and projects they affect. Support escalates in one click, engineering never leaves GitHub, and nobody asks “any update on that bug?” again.

Two-way sync in seconds · Provably loop-free · GitHub today, Jira & Linear next
Issues
2 linked issues
IssueStatusRepositoryPRActions
Checkout 500 for EU Visa cards
acme/webapp#214
In progressacme/webappPR openPreviewUnlink
Add retry to payment webhook
acme/api-server#188
Doneacme/api-serverMergedPreviewUnlink
Powered by Resonate Issues|⚙ Settings
Interactive mock — click Create issue
The gap

Support runs on tickets. Engineering runs on GitHub.

Between them: pasted links that go stale, “any update?” pings, and a CRM that can't answer which customers are waiting on which fix. HubSpot's built-in tracker integrations write a few read-only fields onto a ticket - you can't edit them, the sync can lag by hours, and there's still no object to build issue-level views or reports around. The work your customers care about most is invisible to the system that manages your customers.

Support can't see status

Reps tab over to GitHub - or interrupt an engineer - to answer a customer about a bug they reported weeks ago.

Engineering gets pinged

Every “is this fixed yet?” lands in Slack, because the CRM has no live view of the issue, its assignee, or its PR.

RevOps can't measure it

No object means no reporting: open bugs by customer, revenue blocked on engineering, time from escalation to fix - all unanswerable.

A real CRM object

Issues become records - with everything records get for free.

Not fields bolted onto a ticket: a first-class Issue object, auto-provisioned in your portal on install. It shows up next to contacts and deals with its own index page, and every native HubSpot capability - views, workflows, reports, associations - just works.

Resonate IssuesAdd resonate issues
All records+
Search ( / )TitleRepository (synced path)Status Category
TitleRepository (synced path)Status CategoryURLObject create date/timeOwner
Checkout 500 for EU Visa cardsacme/webappIn progressgithub.com/acme/webapp/is…Today at 9:14 AMNo owner
SSO session expires after 15 minacme/webappOpengithub.com/acme/webapp/is…Yesterday at 4:51 PMNo owner
Feature: bulk export to S3acme/api-serverOpengithub.com/acme/api-serve…Aug 4, 2026 3:56 PMNo owner
Add retry to payment webhookacme/api-serverDonegithub.com/acme/api-serve…Aug 1, 2026 11:02 AMNo owner
Dark mode for customer portalacme/webappCanceledgithub.com/acme/webapp/is…Jul 28, 2026 2:19 PMNo owner
5 resonate issues‹ Prev1Next ›
The Issue object's index page in HubSpot — filter, search, and report like any native object

Lists and views

Filter, search, and segment Issues like contacts or deals - by repository, status, priority, or any property.

Five associations

Every Issue associates with the Tickets, Deals, Companies, Contacts, and Projects it affects.

Workflow triggers

Enroll on any Issue property change. Issue closed → update the ticket, email the contact, ping the owner.

Real reporting

Dashboards on engineering work: open issues by repo, cycle time, or revenue-weighted open work via deal associations.

PR state included

Each Issue carries its related pull request and state - open, merged, or closed - visible to support without asking.

Usable standalone

No GitHub? The Issue object works on its own inside HubSpot - connect a tracker any time and sync picks up from there.

Cards on Tickets and Projects

Escalate a ticket to engineering in one click.

The Issues card sits on every Ticket record. Create an issue - title, description, and priority prefill from the ticket - pick a repository, and it's in GitHub seconds later, permanently associated to the ticket. Or link an issue that already exists. The mocks below are interactive - click around.

Issues
2 linked issues
IssueStatusRepositoryPRActions
Checkout 500 for EU Visa cards
acme/webapp#214
In progressacme/webappPR openPreviewUnlink
Add retry to payment webhook
acme/api-server#188
Doneacme/api-serverMergedPreviewUnlink
Powered by Resonate Issues|⚙ Settings
Interactive mock — click Create issue

Issues on Tickets

  • Live status, repository, and PR state for every linked issue
  • Create issue prefills from the ticket and associates automatically
  • Link existing issues by search; unlink never deletes anything
  • Pick a repo and it pushes to GitHub - or stay HubSpot-only when no default repo is set
GitHub Issues
Repositoryacme/webapp
4 Project issues
This board is read-only. Columns follow the Issue status synchronized with the connected tracker.
Open2
SSO session expires after 15 min
acme/webapp#197
Dark mode for customer portal
acme/webapp#183
In progress1
Checkout 500 for EU Visa cards
acme/webapp#214
Done1
Fix flaky payment E2E test
acme/webapp#171
Canceled0
No issues
Powered by Resonate Issues|⚙ Settings
Interactive mock — click Create issue, or switch to the Board tab

GitHub Issues on Projects

  • Link a repository to a HubSpot Project and manage its issues there
  • Board view: a read-only kanban that follows tracker status
  • Open / In progress / Done / Canceled - normalized across trackers
  • The same create and link flows, scoped to the project's repo

One admin step: cards aren't added to record views automatically. Open a Ticket, hit Customize record → middle column → Add cards, and place Issues where your team works.

Two-way, in seconds

Edit on either side. It converges in one hop.

Webhooks drive both directions - no scheduled polling, no overnight batch. Close an issue in GitHub and the record flips to Done in seconds; retitle it in HubSpot and GitHub follows. Every write carries a content fingerprint and an origin tag, so when the change echoes back it's recognized and dropped: two-way sync that provably can't loop.

  • Both directions: title, description, status (open, in progress, done, canceled), labels, assignees
  • From GitHub: related pr and its state, comment count and author, milestone, repository and issue number, created / updated / closed timestamps
  • GitHub comments become notes on the Issue record
  • Notes → GitHub comments only if you opt in (off by default)
Connect your first repo
How the loop stays closed
01

A change lands - GitHub webhook or HubSpot property update - and is signature-verified.

02

The sync engine computes a fingerprint of the synced fields and tags the write with its origin.

03

The counterpart is updated. When that update echoes back as a webhook, the fingerprint matches - and it's dropped.

Convergence in at most one hop, each direction. No infinite loops, no API spam, no scheduled polling.

Automation & reporting

The moment issues are records, HubSpot does the rest.

Everything below is native HubSpot working on a native object - no extra tooling, no exports.

Close the loop automatically

Issue flips to Done → workflow updates the associated ticket and emails the customer who reported it. The escalation resolves itself.

Revenue-weighted engineering

Issues associate with deals and companies, so you can finally report on open ARR blocked by engineering work - per repo, per customer, per quarter.

SLA on escalations

Time from ticket escalation to issue Done is just two timestamps on associated records. Put it on a dashboard; watch it drop.

PR-aware follow-ups

Related PR state lives on the record. Notify account owners when the fix merges - before the customer asks.

Built to be trusted

Sync you don't have to babysit.

Two-way sync tools have a reputation: loops, floods, and mystery overwrites. This one was engineered against all three - and it's conservative by default everywhere data crosses the boundary.

Provably loop-free

Every write is fingerprinted and origin-tagged, so echoes are dropped at the boundary. Changes converge in one hop - two-way sync can't ping-pong.

Least-privilege GitHub access

A per-repository GitHub App: you pick exactly which repos it can see, and you can change or revoke access any time.

Notes stay private by default

GitHub comments become HubSpot notes automatically. The reverse - HubSpot notes posted to GitHub - is off until you switch it on, because notes can hold customer context.

Webhooks, not polling

Both directions are event-driven. Changes land in seconds, and nothing scans your portal or repos on a schedule.

Setup

Connected in four steps. GitHub optional.

01

Connect GitHub (optional)

Install the GitHub App and pick exactly which repositories it can access. Or skip - Issues work inside HubSpot on their own.

02

Choose repositories

Select the repos to sync and set a default repository for issues created from HubSpot.

03

Connect HubSpot

One OAuth click. The Issue object and its properties are provisioned automatically - usable right away.

04

Import history

Bring in recent issues (last 30 days), everything, or start clean. Sync stays two-way from that point on.

FAQ

Frequently asked questions.

What teams ask before wiring GitHub into HubSpot - including the honest limits.

How is this different from HubSpot's native Jira integration?
HubSpot's built-in Jira integration writes a handful of read-only Jira fields onto a ticket, and the sync can lag by hours. Resonate Issues creates a real CRM object: Issues get their own records, lists, workflows, reports, and associations to Tickets, Deals, Companies, Contacts, and Projects - and the sync is two-way and webhook-driven, so changes land in seconds.
Which issue trackers does it support?
GitHub today, with two-way sync per repository. The Issue object itself is provider-neutral - source, external key, and status fields are shared - and Jira and Linear are planned next behind the same object. You can also use Issues standalone, with no tracker connected at all.
What syncs in both directions?
Title, description, status (including the reopened / not-planned reason), labels, and assignees are editable on either side and stay in sync. Related PR state, comment counts, author, milestone, and timestamps flow from GitHub into HubSpot so the CRM always has the full picture.
How do comments work?
New GitHub comments become notes on the Issue record automatically. The reverse direction - posting HubSpot notes to GitHub as comments - is an account-level setting that ships off, so private customer context never leaves HubSpot unless you decide it should. Comment mirroring is create-only: edits and deletions don't propagate.
How does the two-way sync avoid infinite loops?
Every write is fingerprinted (a hash of the synced fields) and origin-tagged. When a change echoes back through a webhook, the fingerprint matches and it's dropped at the boundary - so a change converges in one hop, in either direction. No loops, and no scheduled polling either.
Can support create a GitHub issue from a ticket?
Yes - that's the core flow. The Issues card on any Ticket record has a Create issue button: title and description prefill from the ticket, you pick the repository, and the new Issue is associated to the ticket and pushed to GitHub in seconds. You can also link an existing issue instead.
What happens when I unlink an issue from a ticket?
Only the association is removed - the Issue record and the GitHub issue are untouched. Deleting the Issue record in HubSpot just stops sync for that issue; the GitHub issue is never touched. Deleting the issue in GitHub archives the mirrored HubSpot record, which stays recoverable in HubSpot's recycle bin.
Do engineers need HubSpot seats?
No. Engineering keeps working in GitHub - triaging, labeling, closing, merging PRs - and HubSpot mirrors it. Only the people working inside HubSpot need seats, same as any other CRM object.
What does GitHub access look like?
A GitHub App installed per repository - you grant exactly the repos you want synced, nothing else, and you can change or revoke the grant in GitHub at any time. For organization-owned repos, an org owner approves the app once.
Can I import existing GitHub issues?
Yes. During onboarding you choose: don't import, import recent history (last 30 days by default), or import everything. Large histories import in batches you can continue at your own pace.
Get started

Put engineering work inside your CRM.

Connect GitHub and HubSpot at github.resonatehq.com - or book a walkthrough and we'll map the escalation flow to your pipelines together.

  • Issue object provisioned automatically on connect
  • Two-way, webhook-driven sync - changes land in seconds
  • Works standalone too: track Issues in HubSpot without a tracker
What are you interested in?
What HubSpot Products do you use?

GitHub is supported today via a per-repository GitHub App; Jira and Linear are planned behind the same Issue object. Comment mirroring is create-only, and posting HubSpot notes to GitHub is off by default.