Chapter 12 — Integrations
Integrations let your agent's outputs flow into the systems where your team already works. Today the platform ships with one integration provider — HubSpot — with more on the roadmap. The framework underneath is generic OAuth 2.0; adding new providers is a matter of database seed plus credential configuration, not application code.
In this chapter you'll:
- Tour the Integrations screen
- Walk through the HubSpot connect flow up to the OAuth handoff
- Understand what HubSpot sync does once it's wired up
The Integrations screen
Open Integrations from the team's left-hand rail.

A list of every integration provider available to your tenant. For a new team this currently shows one:
- HubSpot — HubSpot CRM integration using OAuth 2.0. Connect button to start the flow.
A connected integration would show its status (connected / disconnected / token-expired) and a Disconnect action.
Connecting HubSpot
Click Connect on the HubSpot card. The dashboard redirects you to HubSpot's OAuth bridge.

This is HubSpot's screen, not the Breezee dashboard. The text confirms what's being connected:
Connecting your Breezee Dev account to HubSpot.
Two paths:
- Create a new HubSpot account — for tenants who don't have HubSpot yet.
- Sign in to your HubSpot account — for tenants who do, this is the path that completes the grant.
This manual stops at the OAuth handoff. Completing the grant requires real HubSpot credentials and creates a live integration that immediately starts syncing prospect data. For the manual we screenshot the handoff and stop there. The remaining steps in production are:
- Sign in to HubSpot (or create an account)
- Pick the HubSpot portal to connect to
- Review the requested scopes (contacts read/write, companies read/write, schemas read/write)
- Click Allow
- HubSpot redirects you back to the dashboard with an authorisation code, the platform exchanges it for an access token and a refresh token, and the integration is live.
After completion the Integrations screen shows the HubSpot card with a Connected status and a Disconnect action.
What HubSpot sync does
Once the integration is connected, the pipeline starts syncing data from new and updated prospects into your HubSpot account. The sync runs as a background pipeline component called HubSpotContactSync and triggers on:
- New prospect created — when a visitor accepts "Remember me" and a prospect record materialises.
- Existing prospect updated — when subsequent activity adds memories, changes profile matches, or modifies the lead score.
What gets synced:
- Contact fields — first name, last name, phone, mobile phone, and job title from the prospect record.
- Breezee custom properties — two custom properties that Breezee creates automatically on first sync if they don't already exist:
BREEZEE SCORE(the numeric lead score) andBREEZEE SOURCE(the channel that brought the prospect in). These are Breezee-namespaced and do not touch any of HubSpot's built-in fields. - Activity log — chat session summaries and prospect activities (meetings booked, contact-form submissions) appear as notes on the contact's HubSpot timeline.
- Company association — if the agent captured a company name, Breezee searches for a matching HubSpot company record and associates the contact with it.
What is not synced: Individual memory values captured during the chat (industry, company size, budget, pain points, buying timeframe, etc.) are not sent to HubSpot. They remain inside Breezee and drive lead scoring and profile matching there.
The sync is one-way today (Breezee → HubSpot). Updates made in HubSpot don't flow back to the Breezee prospect record.
Which HubSpot fields Breezee will never overwrite
Breezee follows a strict "fill in the blank, never overwrite" policy for all standard contact fields. If a field already has a value in HubSpot, Breezee leaves it untouched — even if Breezee has a different value for that prospect.
| HubSpot field | Breezee behaviour |
|---|---|
| First name | Only written if the field is blank in HubSpot |
| Last name | Only written if the field is blank in HubSpot |
| Phone | Only written if the field is blank in HubSpot |
| Mobile phone | Only written if the field is blank in HubSpot |
| Job title | Only written if the field is blank in HubSpot |
| Lead Status | Never written — remains entirely under your control |
| Any other native HubSpot field | Never written |
The only fields Breezee always updates are its own namespaced custom properties:
| Custom property | Why it always updates |
|---|---|
BREEZEE SCORE | The score changes as the prospect engages — it must stay current |
BREEZEE SOURCE | Reflects the latest source attribution |
Last activity date | Reflects the prospect's most recent interaction |
This means your sales team's manual edits to names, phone numbers, and job titles in HubSpot are always preserved.
Required HubSpot scopes
When you complete the OAuth grant, HubSpot asks for these scopes:
| Scope | Why we need it |
|---|---|
crm.objects.contacts.read | To check whether a prospect already exists as a HubSpot contact before creating a duplicate. |
crm.objects.contacts.write | To create new contacts and update existing ones with captured memories. |
crm.objects.companies.read | To look up companies by name when the prospect provides a company memory. |
crm.objects.companies.write | To create company records when the prospect's company doesn't already exist in HubSpot. |
crm.schemas.contacts.read | To inspect the contact schema before deciding which custom properties to create. |
crm.schemas.contacts.write | To create custom properties for memory types HubSpot doesn't already have. |
The platform requests only the scopes it actually uses — there's no access to deals, tickets, or marketing tools, and read access is scoped to the objects we touch.
Viewing synced data in HubSpot
Once the integration is live, every prospect that comes through Breezee appears as a contact in your HubSpot account. You can view and filter on Breezee-specific fields directly from the HubSpot Contacts view.
Breezee fields in the contacts list
By default the HubSpot contacts table shows standard columns. To add Breezee's fields:
- Open Contacts in HubSpot.
- Click the three-dot menu on any column header, then choose Add column.

- In the property search panel that opens, you will see Breezee's custom properties listed alongside HubSpot's built-in ones:

| Property | What it contains |
|---|---|
| BREEZEE SCORE | The numeric lead score calculated by Breezee based on engagement, memory, and activity signals. |
| BREEZEE SOURCE | The source channel captured by the Breezee agent (e.g. sAllsbot). |
- Select the properties you want and they appear as columns in the contacts table.
Note: Breezee does not write to HubSpot's native Lead Status or Lead Score fields. Both remain entirely under your control. Breezee only populates its own namespaced custom properties (
BREEZEE SCORE,BREEZEE SOURCE).
Contact activity timeline
Click any contact to open their record. Switch to the Activities tab to see everything Breezee has logged for that prospect.

Two activity types appear for Breezee-synced contacts:
- Created — logged when Breezee first synced the prospect to HubSpot (shows the source channel and timestamp).
- Contact Activity — logged when Breezee updates the contact's lifecycle stage or lead score based on new engagement signals (e.g. "User Starc moved to Lead").
All activity entries are attributed to the connected Breezee application so your team can distinguish them from manually logged activities.
Disconnecting
To disconnect the integration, return to the Integrations screen and click Disconnect on the HubSpot card (visible once connected). The platform revokes its access token, stops the sync, and removes its stored OAuth credentials. Data already synced to HubSpot stays there — disconnecting doesn't delete anything in HubSpot.
To delete the synced contacts after disconnecting, you'd do that in HubSpot directly.
Other integrations on the roadmap
The OAuth framework is generic — adding new providers is configuration plus a credential block in the platform's environment, not application code. Likely future additions in approximate priority order:
- Salesforce CRM — same pattern as HubSpot, different OAuth provider
- Slack — pushing high-priority leads into a sales-team Slack channel
- Microsoft Teams — same shape as Slack
- Email (SMTP/SendGrid) — emailed lead summaries to a configured address
None of these are live today; the HubSpot integration is the only one currently shipping.
What's next
You've reached the end of the configuration tour. From here:
- Appendix A — Glossary — definitions of every term used in the manual
- Appendix B — Troubleshooting — common issues and their fixes
If you've worked through the manual end-to-end, your tenant is now configured, deployed, and instrumented — ready to handle real visitors. Good luck.