Instrument x Seth Akkerman
Projects Automated HubSpot Pipeline Reports

Automated HubSpot Pipeline Reports

A GitHub Actions-powered automation that pulls live deal data from HubSpot every weekday and generates a formatted Slack canvas — surfacing wins, active pitches, and kickoffs without anyone having to manually post a thing.

Sales pipeline visibility is one of those things that’s genuinely valuable to a team but consistently falls through the cracks — because it depends on someone remembering to post an update every week. This tool removes that dependency entirely. It’s a scheduled automation that pulls live deal data from HubSpot and generates a formatted Slack canvas every weekday at 10am, complete with wins, active pitches broken out by close probability, and upcoming project kickoffs.

How it works

A GitHub Actions workflow fires on a cron schedule (Monday–Friday, 10am PST) and kicks off a Node.js script that does two things: first, it queries the HubSpot CRM API for deals filtered by team, stage, and date window — mapping owner IDs to real names via the Owners API. Second, it calls the Slack Canvas API to either create or update a canvas in the target channel, then posts a summary message with key stats and a direct link to the full report. The canvas is structured markdown: a won-deals table, active pitches grouped by pipeline stage (Closing 90%, High Likelihood 65%, Moderate 30%, Qualified Lead 15%), and an optional kickoffs section.

The build

The system was built to support multiple studio teams at Instrument — Brand Studio and Product Studio each have their own canvas, channel, and team filter. Switching teams is a one-line config change. The canvas update flow uses canvases.edit with a replace operation so the canvas URL never changes and channel history stays clean. Owner fetching uses a direct fetch() call rather than the HubSpot SDK, which had reliability issues on that particular endpoint. Environment variables are managed via GitHub Secrets in CI and a local .env for development — no infrastructure required beyond a GitHub repo.

Why it matters

The real value here isn’t the technology — it’s the cognitive load it removes. Before this, someone on the team was manually compiling and posting pipeline updates every week. That’s a task that’s easy to skip, easy to do inconsistently, and easy to resent. Automating it means the team gets reliable, timely visibility into what’s winning and what’s in flight, and the person who was doing it gets that time back. The same pattern applies broadly: any CRM-to-communication-channel sync — agency new business, product sales, recruiting pipelines — can be automated this way with minimal infrastructure and zero ongoing maintenance cost.

Role
Design Engineer
Tools
Node.js GitHub Actions HubSpot API Slack API Slack Canvas API
Video thumbnail for Automated HubSpot Pipeline Reports