# Keep HubSpot current from every conversation | Busymate AI

Source: https://busymate.ai/ko/docs/guides/hubspot
Last modified: 2026-09-13T13:56:19+03:00
Busymate AI writes into the HubSpot account your team already works in: a request for a person raises a ticket, a resolved conversation adds a timeline note to the customer's record, and the assistant can read that record back while it answers. A workspace admin wires it up once from the Console, with your own credential and nobody else's.

## 1. Create a private app

In HubSpot, open **Settings → Integrations → Private Apps** and choose **Create a private app**. Name it so your colleagues recognize it later, then grant three scopes: `crm.objects.contacts.read`, `crm.objects.contacts.write` and `tickets`. HubSpot reveals the access token once — copy it before closing the dialog.

There is no marketplace listing to install and no consent screen to approve: a private app token is the whole credential today. An OAuth app is planned, and [the changelog](https://busymate.ai/changelog) records it when it lands.

## 2. Paste the token into Connections

Open [Console → Connections](https://busymate.ai/console/connections) and find the HubSpot card. Paste the access token and save. From then on the value is write-only — the card shows only its final characters, never the token, and pasting a fresh one rotates the previous one out.

## 3. Add the two optional details

| Field | What it changes |
|---|---|
| Portal ID | Your account id, the number that follows app.hubspot.com/contacts/ in the URL. Supplying it makes links from a conversation open the matching object in your own account. |
| Ticket pipeline ID | Which pipeline a raised ticket enters. Leave it empty and the account default is used. |

Neither is required. A connection holding only a token is complete.

## 4. Send a test ticket

The card carries a **Send test ticket** button. It exercises the real path — credential, account, pipeline — and a ticket surfaces in HubSpot within seconds. Press it after the first save, and again after any rotation.

## 5. What reaches your CRM, and when

- **A visitor asks for a person.** A ticket is raised holding the conversation so far and the page that visitor was reading.
- **Your site has already identified them.** The ticket names them, and once the conversation is resolved their contact is created if new or updated if it exists, gaining a timeline note with the exchange.
- **The visitor is anonymous.** No contact is invented — no placeholder address, no stand-in name. The ticket simply arrives unattributed, so your database stays a record of customers instead of a log of traffic.

## 6. What the assistant reads back

Answering someone your site has identified, the assistant may look up that person's existing contact and their open tickets, so it can say where a request stands rather than making the customer repeat it. The look-up is read-only, and it is unavailable for an anonymous visitor.

## Verify

1. Save the token, press **Send test ticket**, and find the ticket in HubSpot.
2. On your own site, signed in as a test customer, ask to talk to a person. A ticket is raised naming that customer.
3. Resolve that conversation from the Inbox, then open the contact in HubSpot — its timeline carries a note with the exchange.
4. Repeat step 2 signed out. The ticket arrives with nobody attached, and your account gains no new record.
5. Rotate the token in HubSpot, paste the replacement, and confirm a test ticket still lands.

<!-- qa:start -->
### Can I connect with OAuth instead of pasting a token?
Not yet. The card accepts a private app access token and nothing else today; an OAuth app is on the roadmap and will be announced in [the changelog](https://busymate.ai/changelog).

### Will this fill my CRM with website traffic?
No. A contact is only ever written for a visitor your own site has identified. Every other conversation produces a ticket with no contact behind it.

### What if someone asks for a person before I have saved the token?
The job waits instead of failing. Attempts are retried with a widening gap, and an unconnected account holds the work rather than discarding it, so the queue catches up once you save.

### Can I read the token back after saving it?
No. Only the final characters are ever shown. If you lose the value, create a new private app token in HubSpot and paste it over the old one.
<!-- qa:end -->

## Next

- **[Recognize signed-in customers](https://busymate.ai/ko/docs/guides/identified-visitors)** — identity is what turns a ticket into a contact.
- **[Set up human handoff](https://busymate.ai/ko/docs/guides/human-handoff-setup)** — the moment that raises the ticket.
- **[Connect your MCP server as assistant tools](https://busymate.ai/ko/docs/guides/connect-mcp-server)** — reach the rest of your systems.
