Development × CRM
GitHubHubSpotAGNT

Automate GitHub + HubSpot

Where the code — and half the process — lives. The CRM your pipeline reporting depends on. Put an agent between them and the hand-off stops being manual: it reads, decides, acts, and shows its work.

Install First-Pass Reviewer → Get AGNT free

First-Pass Reviewer is a ready-made agent built around GitHub; point its last step at HubSpot to finish this hand-off.

Automations teams run

Each of these runs with a reasoning step between the two tools, so what reaches HubSpot is a decision about the GitHub event rather than a transcription of it.

When a PR opens or merges in GitHub…

…an agent can create and enrich contacts in HubSpot — after reading the context and deciding it should.

When an issue is filed in GitHub…

…an agent can update deals and notes in HubSpot — after reading the context and deciding it should.

When a release is cut in GitHub…

…an agent can log activity in HubSpot — after reading the context and deciding it should.

When a contact or deal is created in HubSpot…

…an agent can comment on PRs and issues in GitHub — with the reasoning recorded in the run’s receipt.

When a stage changes in HubSpot…

…an agent can open issues with structured detail in GitHub — with the reasoning recorded in the run’s receipt.

When a form submits in HubSpot…

…an agent can draft release notes in GitHub — with the reasoning recorded in the run’s receipt.

The GitHub and HubSpot hand-off, in full

GitHub is reached through the github-api node and HubSpot through a custom-api call to api.hubapi.com. Between them sits the agent, which is the part a field-mapping tool cannot do: it reads the item and decides whether the hand-off is warranted at all.

GitHub to HubSpot: watch github → read it and decide → call hubspot TRIGGER github-api Watch GitHub Fires the moment it happens. ACTION agnt-agent Read it and decide Judged against your own rules. ACTION custom-api Call HubSpot POST · bearer
Neither GitHub nor HubSpot credentials leave your machine — both live in a local vault.
GitHub → HubSpotpaste into a new workflow
{
  "id": "9192dcf0-18df-42ee-a740-682e6c0f4ad0",
  "name": "GitHub → HubSpot",
  "nodes": [
    {
      "id": "d0094958-bea8-4621-ab5e-f62b0b1b1112",
      "text": "Watch GitHub",
      "x": 512,
      "y": 144,
      "isEditing": false,
      "type": "github-api",
      "icon": "connect",
      "category": "trigger",
      "isSelected": false,
      "parameters": {},
      "description": "Interact with GitHub: repos, branches, files, issues, comments, pull requests, reviews, releases, Actions/CI, and search.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    },
    {
      "id": "62b28d12-2823-4b7c-a01a-2d34c88bd9b0",
      "text": "Read it and decide",
      "x": 512,
      "y": 336,
      "isEditing": false,
      "type": "agnt-agent",
      "icon": "connect",
      "category": "action",
      "isSelected": false,
      "parameters": {
        "instructions": "Read the GitHub item. Decide whether it warrants action in HubSpot, and explain why."
      },
      "description": "Decides whether this GitHub item warrants anything in HubSpot.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    },
    {
      "id": "bc51a666-efe6-4807-a98c-bff796f373b2",
      "text": "Call HubSpot",
      "x": 512,
      "y": 528,
      "isEditing": false,
      "type": "custom-api",
      "icon": "connect",
      "category": "action",
      "isSelected": false,
      "parameters": {
        "url": "https://api.hubapi.com/crm/v3/objects/contacts",
        "method": "POST"
      },
      "description": "Writes into HubSpot over its API.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    }
  ],
  "edges": [
    {
      "id": "6ea35257-e715-468c-ae41-b85f0fb11a44",
      "start": {
        "id": "d0094958-bea8-4621-ab5e-f62b0b1b1112",
        "type": "output"
      },
      "end": {
        "id": "62b28d12-2823-4b7c-a01a-2d34c88bd9b0",
        "type": "input"
      },
      "startX": 800,
      "startY": 168,
      "endX": 512,
      "endY": 360
    },
    {
      "id": "d64e2736-2fdc-4297-aff3-9e61f8893586",
      "start": {
        "id": "62b28d12-2823-4b7c-a01a-2d34c88bd9b0",
        "type": "output"
      },
      "end": {
        "id": "bc51a666-efe6-4807-a98c-bff796f373b2",
        "type": "input"
      },
      "startX": 800,
      "startY": 360,
      "endX": 512,
      "endY": 552
    }
  ],
  "zoomLevel": 1,
  "canvasOffsetX": 0,
  "canvasOffsetY": 0,
  "isTinyNodeMode": false
}

Install First-Pass Reviewer

First-Pass Reviewer is a working agent built around GitHub. Install it, point its last step at HubSpot, and you have this hand-off without building it from an empty canvas.

Runs on your own machine · See what it does

Build it in AGNT

  1. Install AGNT — it runs on your own machine and needs no account to start.
  2. Authorise HubSpot (one OAuth sign-in) and GitHub (one OAuth sign-in). Nothing is stored anywhere but your disk.
  3. Describe the job in plain language, or paste the definition above; github-api does the reading and custom-api the writing.
  4. Gate anything you would not want done unattended, then let it run and read the first receipt end to end.

GitHub and HubSpot — common questions

Can I connect GitHub to HubSpot without writing code?

Yes. GitHub connects with one OAuth sign-in and HubSpot with one OAuth sign-in, both from the local credential vault. You then describe the job in plain language — “when a PR opens or merges, create and enrich contacts” — and the agent handles the rest.

How is this different from a field-mapping GitHub to HubSpot automation?

A field mapping copies values and breaks on the first record nobody anticipated. The middle step here reads the GitHub item in full and decides — whether it matters, how to summarise it, and what belongs in HubSpot. Deciding to do nothing is a valid outcome, which no mapping can express.

Does my GitHub and HubSpot data leave my machine?

AGNT Community Core is local-first, so there is no vendor middleman holding your GitHub or HubSpot tokens. The runtime talks directly to both services. Choose a local model and the content of what it reads never leaves the machine at all.

What does a GitHub and HubSpot run leave behind?

A receipt: what was read in GitHub, which tools ran with which arguments, what the agent concluded, and what it wrote to HubSpot. Anything consequential can sit behind an approval gate so a person signs off before it happens.

Give AI a job. Get the proof.