Skip to main content
Integration · HubSpot

Sync every lead your AI agent captures to HubSpot

A visitor types their email at 11pm. By morning the conversation is in your inbox — but the HubSpot contact doesn’t exist yet. Someone on your team copies the email, retypes the company, pastes the highlights into a note, sets a lifecycle stage. By the time that’s done, the lead is six hours older than it should be and the rep has done thirty minutes of admin nobody pays them to do. NebulaHex closes that gap.

OAuth 2.0 · No API keys · Dedupes on email · Live in under a minute

CONTACTS
Just created
MK
Maya Kim
maya@pareto.co
LEAD SOURCENEBULAHEX
First nameMaya
Last nameKim
MESSAGE FROM CHAT11:43pm
What does the Pro plan cost for a 12-person agency? We’re comparing you against Intercom and need to be up and running by the end of the month.
Jump to section

01

The lead-leak problem (and what changes when you fix it)

The default lifecycle of a lead from chat at most companies looks like this: the bot asks for an email when a visitor wants something the bot can’t give them. The visitor types the email. The bot says thanks, somebody will be in touch. The conversation ends. A human reads the transcript later, decides the lead is real, and creates a HubSpot contact by hand. Or — more often — the conversation is one of forty that day, the human is busy, and nothing happens.

The cost of “nothing happens” isn’t visible on a single conversation. It’s visible at the cohort level: bots that capture five hundred leads a month, of which fewer than half make it into the CRM in the first 24 hours, of which a meaningful fraction never get worked at all. SDRs blame the source. Marketing blames the SDRs. The truth is that the handoff from chat to CRM was never built — there’s a person standing between two systems that should be talking to each other directly.

When the handoff is automated, the SDR opens HubSpot in the morning and sees a list of new contacts that came in overnight, each tagged with the bot that captured them and each carrying the message the visitor left. They click into the first record, see “asked about pricing for the Pro plan, said they’re a 12-person agency in Austin,” and have everything they need to write a useful first email. The friction between “lead arrived” and “rep takes action” goes from hours of admin to seconds of context.

02

What gets created in HubSpot

The bot fires events as conversations happen, and the HubSpot integration acts on two of them: a lead captured and a conversation escalated. Only lead capture is subscribed when you connect, and it creates or updates a contact. The deal and the escalation ticket are both opt-in — switch deals on and a captured lead also opens a deal associated with that contact; subscribe the escalation event and switch tickets on and an escalation opens a ticket. Here’s what those records actually look like when they land:

CONTACT● New
JR
Jordan Reyes
jordan@northstar.io
Lead sourceNEBULAHEX
What are your pricing tiers, and does the Shopify integration work on a Plus store? Trying to evaluate by Friday.

On lead captured

Contact created or updated (dedupes on email), carrying the visitor’s message as a property on the record itself.

TICKET● Escalated
NebulaHex Escalation — needs a human
Service Hub · Medium priority
PriorityMEDIUM
Pipeline id0
TICKET DESCRIPTION
Bot: Northstar Support
Session: 8c1f4a20…
Last message: My order arrived broken and I want to talk to a person.

On escalation

Ticket opened in Service Hub, carrying the bot’s name, the session id and the visitor’s last message — or a line naming the loss if that message cannot be fetched. Fixed subject, medium priority, pipeline 0, a NebulaHex Event ID so a retry updates it in place, and no link to a contact record.

DEAL● From lead capture
NebulaHex Lead — Dana Whitfield
Amount not set
Default pipeline · Appointment scheduled
OwnerNot set
Close dateNot set
ASSOCIATED CONTACT
Linked to the contact from the same lead — and it only exists because that contact does. Name, pipeline and stage are the only business fields written, plus a NebulaHex Event ID used to avoid creating the deal twice on a retry.

On lead capture, with contacts and deals enabled

Deal created in your default pipeline at the appointment-scheduled stage, associated with the contact. Ready for a rep to pick up.

The message the visitor left is the part that saves your reps the most time, and it rides onto the contact itself. On a brand-new contact it lands in the message property, next to first and last name, a hs_lead_source of NEBULAHEX, and the bot’s name in chatbot_source. On a contact that already existed, the message is written to notes_last_contacted as “NebulaHex interaction (bot name): message” and the lead source is set the same way. A rep can read it in fifteen seconds and know why the visitor got in touch, rather than just their name and email.

A fixed property set, for now. Lead capture writes email, first and last name, the visitor’s message, a lead source of NEBULAHEX and the bot’s name. Mapping conversation values onto your own custom properties is not something the integration does today.

03

How to connect

You set up the integration once and then it runs in the background. The OAuth handshake is the only setup step, and refreshes happen automatically. From a clean start it takes under a minute.

1

Click Connect in the Integrations tab

Open your bot in NebulaHex, go to the Integrations tab, click Connect on the HubSpot card. You’re redirected to HubSpot’s OAuth screen.

2

Authorize the scopes on HubSpot

Sign in to your HubSpot portal, pick the account you want to connect, review the scopes (read and write contacts, deals and tickets, plus the deal and ticket property schemas), click Authorize.

3

Configure event mappings

Back in NebulaHex, decide which bot events create which HubSpot records. Contacts from captured leads are on by default; switch on deals or escalation tickets if you want them, or leave them alone and you’re live.

You don’t paste an API key. You don’t generate a private app token. You don’t manage a refresh token. Disconnecting is just as fast — go back to the Integrations tab, click Disconnect, and the OAuth tokens are revoked. Your contact records, deals, tickets, and notes all stay in HubSpot exactly as they were. The integration is a write path, not a sync that owns your data.

04

Real scenarios where this earns its keep

📝

Inbound marketing team running a content site

You publish a steady stream of blog posts and gate the deeper guides behind an email form. The bot lives in the corner of every page. When someone asks for a guide, it collects their email. With contact creation on, a first-time email shows up as a HubSpot contact on the next drain — usually inside a minute — carrying the message the visitor left, the name of the bot that captured them, and a lead source of NEBULAHEX; an email already in your portal gets that lead source and the message on its last-contacted note instead. The topic, the source page and the guide they asked for are not written as properties either way — the visitor’s own message is.

The visitor’s own words, not a CSV export
🚀

B2B SaaS doing self-serve sales

Your trial flow ends with a bot helping new signups configure their first integration. ~10% of those conversations turn into real questions about pricing, multi-seat licensing, or enterprise security. Ask for an email and the lead becomes a HubSpot contact carrying the visitor’s message — and, with deals enabled, an associated deal in your default pipeline for a rep to work.

Marketing-influenced pipeline becomes visible
🏢

Digital agency managing client portfolios

You run HubSpot portals for ten clients, each with their own bot on their own marketing site. Each bot is connected to the matching HubSpot portal — leads on the law firm site land in the law firm’s HubSpot, leads on the dental practice site land in the dental practice’s HubSpot. No routing logic to maintain.

Per-client CRM routing, zero plumbing
🎧

Support team rolling out Service Hub

You already use HubSpot for sales and are rolling Service Hub out for support. Your bot handles the easy questions and escalates the rest. With tickets switched on, every escalation opens one in Service Hub whose description carries the bot name, the session id and the visitor’s last message, so the agent starts from the question rather than from a bare notification — and if that message cannot be fetched, the ticket says so in place of it rather than arriving blank. The ticket stands on its own: it is not linked to a contact record, and its subject, priority and pipeline are the same on every escalation.

One inbox, one CRM, bot as the layer

05

Where HubSpot fits in the CRM picture

HubSpot is the CRM most small and mid-market companies actually use. Salesforce is bigger across the broader CRM market, but HubSpot dominates the segment where small and growing businesses pick their first or second CRM — the segment NebulaHex is built for. Public reporting puts HubSpot’s customer base near 290,000 by end of 2025, and the company is widely considered the leader in marketing automation by market share.

HubSpot grew up around the inbound marketing thesis — pull customers in with content rather than push them with cold outreach — and the product reflects that. The Marketing Hub is where you run your blog, your forms, your nurture emails. The Sales Hub is where your reps work the leads those activities produce. The Service Hub is where your support team handles tickets. Each Hub shares one underlying CRM database, so the contact your bot creates is the same contact your marketer enrolls is the same contact your salesperson works is the same contact your support agent helps when they email in three months later. That continuity is the thing that makes HubSpot worth integrating against — when you write a contact to HubSpot, you’re writing it to the spine.

06

Why not just build it yourself

You can build this. Anyone can build this. The HubSpot API is well-documented, OAuth is a solved problem, and a junior engineer with a weekend can wire up a webhook listener that creates contacts. The reason most teams don’t is the long tail of edge cases that show up after the happy path is shipped:

NebulaHex ships those edge cases handled. The integration deduplicates on email by default. Outbound calls back off and retry on transient failures. OAuth tokens refresh in the background. Which records get written is a set of toggles in the dashboard rather than a change in code, so a marketing operations person can turn deals or tickets on without filing a ticket with engineering. And every write to HubSpot is paired with a corresponding bot event you can see in the conversation history, so when something doesn’t show up in HubSpot you know exactly which event was supposed to fire and what its payload was.

07

Trust & security

The HubSpot connection is OAuth 2.0. NebulaHex never sees or stores your HubSpot password. The access tokens we hold on your behalf are encrypted at rest and in transit, and they’re scoped to only the things the integration actually needs to do — typically reading and writing contacts, deals, tickets, and notes inside the portal you authorized.

You can revoke the connection from inside HubSpot at any time, and you can disconnect from the NebulaHex dashboard with a single click. NebulaHex stops sending events to HubSpot immediately, and the OAuth tokens are revoked on the next call.

Access inside your workspace is role-based. Only members of your organization with the right role can connect, modify, or disconnect an integration — viewers can see that the integration exists but can’t change its configuration. Every change to integration settings is logged so you can see who connected what and when.

Your data is yours. The conversations your bot has with your visitors are not used to train AI models. The contact data that flows from those conversations into HubSpot belongs to your HubSpot portal and is governed by your portal’s data retention and privacy settings. See our privacy policy and terms for the full posture.

08

Connect HubSpot to your bot in minutes

Set the integration up once and your sales, marketing, and support teams stop doing the data-entry work that’s been quietly costing them their best hours of the day. Every lead the bot captures becomes a HubSpot contact carrying the visitor’s message. Subscribe the escalation event and turn tickets on, and every escalation becomes a ticket. Turn deals on and a captured lead also opens a deal a rep can pick up — the deal hangs off the contact, so with contact creation switched off only leads whose email is already in your portal get one.

The bot does the conversation

HubSpot keeps the record. You keep the customer. Your CRM stays the source of truth; your bot becomes a dependable feeder of qualified records.