
Gong <> HubSpot
Integration
How connecting data silos enables all teams and systems to have more visibility, while removing vendor lock in.
Gongspot — Gong Call Intelligence in HubSpot
Type: Automated Data Pipeline
Stack: Python 3.11, GCP Cloud Functions, GCP Pub/Sub, GCP Secret Manager, Storj (S3), Google Drive API, Gong API, HubSpot CRM API
Role: Sole Developer
Problem
Sales and success teams using Gong for call recording and HubSpot for CRM operate with a persistent information gap. After every recorded call, Gong's AI generates summaries, action items, key points, talk trackers, and a full meeting outline — intelligence that is genuinely useful for follow-up, coaching, and deal progression. None of it surfaces in HubSpot automatically.
The result is a choice between two bad options: reps manually copy-paste Gong summaries into HubSpot notes (inconsistent, time-consuming, doesn't include recordings or detailed AI output), or the call data simply stays in Gong where it can't be acted on within the CRM workflow. Either way, Gong and HubSpot remain two separate contexts that reps have to mentally reconcile.
There is also a deeper strategic risk that's easy to overlook. Gong stores all call recordings on its own infrastructure. That's fine — until you want to leave. If the organization ever decides to switch recording vendors, cancel the contract, or negotiate pricing, every historical call recording goes with it. There is no practical self-service export path. Years of institutional knowledge — every customer conversation, every deal call, every onboarding — becomes inaccessible at the moment you most need leverage.
Even day-to-day, access management for Gong recordings is separate from the tools the organization already uses. Sharing a specific call with a new team member or a manager requires Gong seat allocation and manual configuration, rather than relying on the identity system the company already operates.
Solution
A fully automated pipeline that triggers on every completed Gong call, archives all media and metadata to independent storage, and creates a rich structured note in HubSpot — automatically associated with the right contacts, companies, and open deals.
The pipeline:
- Gong fires a
CALL_ANALYSIS_READYwebhook when AI processing completes - A GCP Cloud Function validates and queues the event via Pub/Sub
- A second Cloud Function processes the call: archives media to Storj and Google Drive, then creates the HubSpot note
Each HubSpot note includes:
- AI summary, key points, and action items from Gong
- Full meeting outline and highlights with timestamps and speaker names
- Tracked keyword mentions with quoted phrases and timestamps
- Call outcome (AI-determined)
- Direct link to the Google Drive folder for the call (video and audio accessible immediately)
- Gong link for reference
Smart associations: notes are linked to HubSpot contacts, companies (primary only), and any open deals by matching participant email addresses. Missing contacts and companies are created automatically.
Two-tier archive — strategic, not just redundant: every call is archived to both Storj and Google Drive before the HubSpot note is created. This was a deliberate architectural choice, not defensive engineering.
- Storj is a backend archive — end users never interact with it directly. Its purpose is data sovereignty: the organization owns a permanent copy of every recording, independent of Gong's infrastructure and retention policies. The archive is searchable via a SQLite FTS5 index stored in the same bucket. Access is through the Storj console or CLI scripts, not through links in notes.
- Google Drive (Shared Drive) is the user-facing recording library. The HubSpot note header links directly to the Google Drive folder for each call — reps click through to watch recordings without logging into Gong. Access is managed entirely through Google Workspace credentials — every employee has access from day one, and access revokes automatically when their company account is deprovisioned. No Gong seats, no manual sharing, no separate permissions system.
Key technical decisions:
- Custom AWS4 request signing for Storj — avoids boto3 dependency while maintaining full S3 API compatibility, including signed URL generation and presigned link expiry management
- Pub/Sub decoupling between the webhook receiver and call processor — the receiver responds to Gong immediately, preventing webhook timeouts during the longer archive + note creation flow
- SQLite FTS5 archive index synced to Storj — enables full-text search across all archived calls (by company, contact, or keyword) without requiring a hosted database
- Duplicate detection via a
gong-call-id:{id}signature in every note body — idempotent re-runs and backfills never produce duplicate notes - Local CLI with 10+ subcommands for backfill, dry-run previews, single-call processing, archive search, and diagnostics — usable independently of the cloud deployment
Outcome
Every recorded external Gong call surfaces in HubSpot within minutes of completion, on the contact and deal records where reps are already working. No manual effort required.
- Reps work entirely in HubSpot — AI summaries, action items, and recording links are on the contact and deal records where they already spend their time; they rarely need to open Gong at all
- Any employee can watch a full call recording via Google Drive using their existing company credentials — no Gong seat or manual sharing required
- All call media is permanently archived to Storj independent of Gong's infrastructure — if the Gong contract ends, the recordings don't go with it; the archive remains intact and searchable via the local CLI
- Full-text search across the entire call archive via the local CLI
- Backfill command covers historical calls — the pipeline can be applied retroactively across any date range
Part of a professional portfolio. Full source available at github.com/Suixcity/gongspot
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!