Skip to content

HubSpot integration

Turn AI chatbot hand-offs into HubSpot tickets

Your intoCHAT agent answers visitors from your own content. When someone needs a person, the hand-off opens a ticket in your HubSpot pipeline, files it under the visitor's contact and puts the AI summary and the conversation in the description.

Create your agent free See it in the docs

Last updated:

How intoCHAT works with HubSpot

If your support team already works tickets in HubSpot, the chat on your website shouldn't create a second place to look. With the integration connected, every hand-off by email from your intoCHAT agent also becomes a HubSpot ticket, created with a private app's access token. The ticket lands in your default ticket pipeline, in its first stage that isn't closed (Support Pipeline, New in a new HubSpot account), or in the pipeline and stage you choose. Before creating it, intoCHAT looks up the visitor's email address among your contacts and creates the contact if there is none, so the ticket sits on the right record in your CRM. The description holds the agent's summary of the request, three to five AI-written bullet points, the page and country, the last 30 messages and a link back to the conversation in intoCHAT. The hand-off email to your team still goes out as well, with the visitor as the reply-to address. The connection is deliberately narrow. intoCHAT writes one ticket per conversation and, when needed, one contact. It doesn't sync anything back: replies, stage changes and notes stay in HubSpot. HubSpot tickets also can't be imported as knowledge for the agent; ticket import works with Zendesk and Freshdesk only.

Connect HubSpot in five steps

  1. Turn on hand-off by email

    Open your agent's Setup tab, switch on Offer hand-off by email under Hand-off to your team and save. Tickets are opened only for hand-offs by email, so the HubSpot card needs this first.

  2. Create a private app in HubSpot

    In HubSpot, go to Development, Legacy apps, Create legacy app, Private (in some accounts: Settings, Integrations, Private apps). Under Scopes, add crm.objects.tickets.read and crm.objects.tickets.write, shown as tickets in some accounts, plus crm.objects.contacts.read and crm.objects.contacts.write.

  3. Paste the access token

    Create the app, open its Auth tab, click Show token and copy it. In the Helpdesk tickets card on the Setup tab, choose HubSpot, paste the token under Access token and click Test and connect. The card then shows which pipeline and stage new tickets go to.

  4. Pick a pipeline and properties (optional)

    Under Ticket fields, click Add ticket fields. Choose another Pipeline and stage, or fill ticket properties your account lets you edit, with fixed values or variables such as {{contact.plan}} or {{conversation.page}}.

  5. Run a test hand-off

    In the Playground, ask the agent for a person and give an email address. A few seconds later a real ticket appears in HubSpot, marked [Test] in the subject, on the contact with that address.

The ticket description intoCHAT writes

Subject: [Acme Support] Chat hand-off: Our CSV import stops with “Invalid date format”, but the dates look right. Can …

A visitor asked for a person in the chat with Acme Support. Reply to them by email: marco@example.com

What they need
The visitor's CSV import fails with "Invalid date format" although the dates use YYYY-MM-DD. They want someone to check their account.

Summary
- Wants help with a CSV import that stops with "Invalid date format"
- The AI explained the expected YYYY-MM-DD format; the visitor says the file already uses it
- Contact email given: marco@example.com

Visitor
Email: marco@example.com
Page: https://app.example.com/import
Country: United States

Conversation (last 4 messages)
Visitor: Our CSV import stops with “Invalid date format”, but the dates look right. Can a person check our account?
AI: The import expects dates as YYYY-MM-DD. If your file already uses that, I can pass this conversation to our support team by email so they can check your account. Which address should they reply to?
Visitor: It already does. marco@example.com
AI: Thanks. I've sent the conversation to the team, and they'll reply to marco@example.com.

In intoCHAT
https://www.intochat.ai/chatbots/…/edit?tab=activity&conversation=…

An example. The subject line becomes the ticket name and the rest is the ticket description. The headings and the AI summary are always in English; the subject and the conversation are in the visitor's words.

What lands in HubSpot

  • Filed under the right contact

    intoCHAT searches your contacts for the visitor's email address and associates the ticket with that contact. If there is none, it creates one with the email, and the first and last name when the visitor's name is known.

  • In the pipeline you choose

    By default, tickets go to your default ticket pipeline's first open stage, and the card names it. Pick any other pipeline and stage under Ticket fields, for example a separate one for chat hand-offs.

  • Your ticket properties filled

    Set editable text, number, dropdown, checkbox and date properties on every ticket. Values can be fixed or come from the chat, like the visitor's email, the page they were on or a contact attribute.

  • A summary your team can scan

    Three to five bullet points in English say what the visitor wants and what the agent already answered, followed by the last 30 messages. If the summary isn't ready in time, the ticket goes in without it.

  • The email to your team still goes out

    The hand-off email reaches your lead-alert recipients as before, with the visitor as the reply-to address. The HubSpot ticket is an addition, not a replacement.

  • Linked from both sides

    In the Conversations tab, the transcript shows Ticket # with a link that opens it in HubSpot, and the description links back to the conversation. The handoff.requested webhook carries the ticket number and link too.

  • A safe connection check

    Test and connect only reads: your account ID and your ticket pipelines. A token that can't read tickets is refused with a message that says so, and nothing is saved until the check passes.

  • Token stored encrypted

    The access token is encrypted and never shown again; the card shows its last four characters. Only the account owner and admins can connect or disconnect HubSpot, while editors can change ticket fields.

What the HubSpot integration doesn't do

  • No two-way sync: replies, stage changes and notes in HubSpot don't come back to intoCHAT.
  • HubSpot tickets can't be imported as knowledge for the agent. Ticket import works with Zendesk and Freshdesk only. Public help articles can still be added on the Knowledge tab like any other web page.
  • It doesn't sync your leads to HubSpot. A contact is found or created only when a hand-off opens a ticket. To send leads to your own systems, use webhooks.
  • Tickets are opened for hand-offs by email only, not when your team takes over a chat in intoCHAT's live chat.
  • One ticket per conversation and one helpdesk per agent. A later hand-off in the same conversation sends another email, but no second ticket.
  • If HubSpot doesn't answer within 10 seconds or is limiting requests, that ticket isn't created and isn't retried. A ticket refused because of its properties is sent once more without them.
  • Up to 25 ticket fields per agent, each value up to 500 characters. Multi-select properties aren't offered.

Frequently asked questions

Which HubSpot account do I need?

One where you can create a private app and work with tickets. intoCHAT uses HubSpot's tickets and contacts APIs with the private app's access token. Which HubSpot tiers include tickets and private apps is up to HubSpot, so check your own account if you're unsure.

Which scopes does the private app need?

crm.objects.tickets.read and crm.objects.tickets.write, which some accounts show simply as tickets, to read your pipelines and create tickets. Add crm.objects.contacts.read and crm.objects.contacts.write so intoCHAT can find or create the visitor's contact. Without the contacts scopes, the ticket is still created, just not associated with a contact.

Which pipeline and stage do new tickets go to?

Your default ticket pipeline, in its first stage that isn't closed. In a new HubSpot account that is Support Pipeline, New. The card shows the pipeline and stage intoCHAT chose when you connected. To use another, set Pipeline and stage under Ticket fields.

Will it create duplicate contacts?

It shouldn't. Before each ticket, intoCHAT searches your contacts by the visitor's email address and uses the contact it finds. It creates a contact only when there is none with that address, and if HubSpot reports that the contact already exists, the existing one is used.

Can the agent learn from our HubSpot tickets?

No. Importing solved tickets as knowledge works with Zendesk and Freshdesk only; with HubSpot connected, the Helpdesk tickets card on the Knowledge tab says ticket import isn't available. You can train the agent on your website, files, Q&A pairs, Notion and Google Drive instead, and add public help articles like any web page.

Do replies in HubSpot show up in the chat?

No. There is no two-way sync. Replies, stage changes and notes stay in HubSpot, and your team follows up with the visitor from there, using the email address on the ticket's contact. In intoCHAT, the transcript shows the ticket number with a link that opens the ticket.

Which intoCHAT plan includes the HubSpot integration?

Every plan, Free too. Hand-off by email and helpdesk tickets aren't limited by plan. Team seats are: Free has the owner only, Starter includes 2 team members and Pro 5.

What data does intoCHAT send to HubSpot?

For each hand-off: the transcript, the AI summary, the visitor's email address and name when known, the page and the country, plus any properties you map, such as contact attributes. The contact is created with the email and, when known, the name. intoCHAT reads back only what it needs: matching contacts, and your ticket properties and pipelines when you edit ticket fields.

What happens if the token stops working?

The hand-off email to your team still goes out, and the transcript shows Ticket couldn't be created instead of a ticket number. The card on the Setup tab says when the saved credentials no longer work. Create a new token and click Replace credentials; if you connect a different HubSpot account, the ticket fields are removed, because they name the old account's properties.

See it answer from your own website

Paste your website address and chat with an agent built from your pages. It takes about a minute.

Create your agent free

Free plan, no credit card needed.