The usual way people get chatbot leads into HubSpot is a Zap: chatbot fires a webhook, Zapier catches it, Zapier creates a HubSpot contact. It works, it costs another subscription, and it creates a duplicate contact every time the same person converts twice.
A direct connection removes the middle step. This guide covers what it writes to HubSpot, what it deliberately doesn't, and when a Zap is still the better answer.
What does the HubSpot integration do?
When a visitor completes a lead capture in the chat, the integration writes them to HubSpot Contacts. Specifically:
- It looks for an existing contact by email.
- If one exists, it updates that record. A returning visitor enriches the contact you already have.
- If not, it creates a new contact with the details from the conversation.
Standard fields map straight across, and anything else your chat collects can be written to properties you choose. Connection is by OAuth, so you authorise it inside HubSpot rather than handling API keys.
Will it create duplicate contacts?
No, as long as you collect an email. The email lookup runs before every write, so the same person converting three times updates one record rather than producing three.
This is the main practical reason to prefer the direct connection over a Zap. Most Zapier setups do a plain "create contact" because the find-then-branch version takes more steps and more tasks, and duplicates accumulate quietly until someone runs a cleanup and finds 400 of them.
The corollary: make email a required field in your chat form. Without it there's nothing to match on, and you lose the behaviour entirely.
Does it create deals, notes or timeline events?
No. Contacts only. The integration requests contact read and write permission and nothing else — no deals, no notes, no tasks, no timeline entries, no company records.
That's worth stating plainly because it decides whether this fits your process. If your pipeline works by contacts entering a list and a workflow taking over, this covers you completely. If you need a deal created in a specific stage the moment a lead converts, this doesn't do it, and you have two options: use a HubSpot workflow to create the deal from the new contact, which is the cleaner answer, or run it through Zapier.
If deal-stage creation is central to how you work, it's worth knowing that the GoHighLevel integration does create opportunities in a chosen pipeline stage. Different CRM, deeper write.
Can the chatbot read data back from HubSpot?
No. Data flows one way: conversation into HubSpot. The bot cannot look up a contact, report a deal stage, or personalise itself from your CRM.
Two good reasons that's the right design. Your CRM stays the system of record with no second copy drifting out of sync. And a chat widget on a public page that can query your CRM is an exposure risk — anyone typing into the box could probe for what you know about a person. Customer-specific data belongs behind a login.
Why not use HubSpot's own chatbot?
Reasonable question, and sometimes the answer is that you should. HubSpot's chat is free at entry level, sits natively in the CRM, and writes to the timeline in ways an external tool can't.
Where teams look elsewhere is usually one of these: the AI conversational features are on higher-priced tiers than they want, they need capabilities the CRM's chat doesn't have — like booking into Google Calendar, sending SMS alerts, running a scored assessment, handing off to WhatsApp, or answering from PDFs and a crawled website — or they want the same chatbot on a site that isn't HubSpot-hosted.
The honest framing is that this isn't a HubSpot replacement. It's a front door that fills HubSpot. Keep the CRM doing the CRM's job.
How do I connect it?
- Connect HubSpot from the integrations screen and authorise via OAuth. You'll need permission to install integrations in that HubSpot account.
- Make email required in your chat's lead form, so dedupe works.
- Map your fields. Name, email and phone are straightforward; decide deliberately which extra chat answers deserve a property.
- Create any custom properties in HubSpot first if you're mapping to them.
- Send a test lead through the chat, find the contact in HubSpot, then send a second with the same email and confirm it updated rather than duplicated.
- Set up whatever should happen next in HubSpot — a workflow, a list, an owner assignment, a deal if you need one.
The CRM integration is available on paid plans.
What should I actually map?
Less than the chat collects. A contact record with thirty half-empty properties is harder to work than one with six reliable ones.
- Name, email, phone. Always.
- The one answer that decides routing. Service needed, budget band, timeline, or location — whichever your follow-up actually branches on.
- Where they came from, if you run several bots or sites and need to tell them apart in reporting.
Everything else the visitor said is in the conversation transcript, which is where exploratory detail belongs. Properties are for things you filter, segment or automate on.
Contacts aren't appearing. What do I check?
- Is the connection still authorised? OAuth access can be revoked at the HubSpot end, including when the person who connected it loses access.
- Did the visitor complete the capture? An abandoned conversation produces no lead. Read the transcript before suspecting the integration.
- Is an email being collected? No email means no dedupe, and depending on your form it may mean no usable contact at all.
- Do the mapped properties still exist? Renaming or deleting a HubSpot property after mapping it is a common breakage.
- Are you looking in the right HubSpot account? Agencies and anyone with a sandbox trip over this regularly.
Related reading
- GoHighLevel integration, which also creates opportunities
- Where chatbot leads should land
- Qualifying leads before they reach your CRM
- Booking appointments in Google Calendar