One-time setup to connect HubSpot to OpenCX. Use OAuth Public App unless your OpenCX admin tells you to use the legacy Private App path.Documentation Index
Fetch the complete documentation index at: https://docs.open.cx/llms.txt
Use this file to discover all available pages before exploring further.
OAuth setup usually takes less than a minute. You need HubSpot admin access and OpenCX admin access.
Before you start
HubSpot account with Service Hub
HubSpot account with Service Hub
The integration uses HubSpot’s conversations and ticketing APIs. Service Hub (Starter or above) is required.
HubSpot admin access
HubSpot admin access
You need permission to approve connected apps for the HubSpot portal you want OpenCX to use.
Owner or admin in OpenCX
Owner or admin in OpenCX
Only organization owners and admins can save integration credentials in the OpenCX dashboard.
What OAuth handles for you
The OAuth Public App replaces the manual Private App setup:| OAuth Public App | |
|---|---|
| Connection | Approve OpenCX on HubSpot’s consent screen |
| Tokens | Issued and refreshed automatically |
| Webhooks | Registered by OpenCX during install |
| AI sender | Picked from a HubSpot teammate dropdown after connect |
| Workflow actions | Adds OpenCX actions to HubSpot workflows |
Setup
Open HubSpot integration settings
Open Settings → Integrations in your OpenCX dashboard and select HubSpot.The modal asks which connection method to use. Choose OAuth Public App.
Connect with HubSpot
Click Connect with HubSpot. OpenCX redirects you to HubSpot’s consent screen.Choose the HubSpot portal to connect and approve the requested permissions.
The permissions cover conversations, tickets, contacts, companies, deals, owners, files, lists, and HubSpot workflow actions. OpenCX requests them through HubSpot’s standard app consent screen; you do not paste a token into OpenCX.
Confirm the connection in OpenCX
After approval, HubSpot redirects you back to Settings → Integrations. The HubSpot card shows Connected, and the modal shows Connected via OAuth.If the redirect shows an error, re-open the modal and try again. If HubSpot says the app is not available for the selected portal, confirm you are an admin for that portal.
Pick who the AI posts as
In the OAuth view, use AI posts as to select the HubSpot teammate OpenCX should attribute outgoing replies to.Customers see this teammate’s name on email replies. Use a dedicated AI teammate if your team wants replies to be clearly labeled.
Enable Autopilot for the channel
Before testing, enable Autopilot for the channel you’ll use in Settings → Autopilot.Autopilot is configured per channel. If it is off for Email, Web, SMS, WhatsApp, or Phone, OpenCX stores the conversation but does not auto-reply on that channel.
Send a test message
For a HubSpot conversation to appear automatically, the conversation must originate from a channel HubSpot owns — either a HubSpot chat widget or an email address routed through a HubSpot inbox.
- Send a test email to a HubSpot-connected inbox, or send a message through the HubSpot chat widget.
- Confirm the conversation appears in HubSpot.
- Confirm a matching session appears in the OpenCX inbox.
- Let the AI reply and confirm the reply posts back to the same HubSpot thread.
- Trigger a handoff and confirm the handoff note appears in HubSpot with a link back to the OpenCX session.
Workflow actions
OAuth installs add OpenCX actions to HubSpot workflows. Use them when HubSpot rules should control the AI:| Action | Use it when |
|---|---|
| Pause OpenCX AI | A HubSpot workflow claims the conversation for a human. |
| Resume OpenCX AI | A workflow returns a handed-off conversation to the AI. |
| Send to OpenCX AI | A workflow decides the latest customer message should be processed by the AI. |
| Request OpenCX handoff | HubSpot should ask OpenCX to hand the session to a human. |
Workflow actions are available only on the OAuth Public App path. They do not appear for legacy Private App connections.
Email signatures
Append branded email signatures to outgoing replies sent through HubSpot. Signatures are matched to the sender’s email domain, so different domains can have different signatures.Open HubSpot settings
Go to Settings → Integrations → HubSpot in your OpenCX dashboard.
Add a signature
In the OAuth view, scroll to Email Signatures and click Add. Enter the domain pattern and paste your signature HTML.
Domain matching
| Pattern | Matches |
|---|---|
open.cx | Emails from open.cx only (exact match) |
*.nl | All emails ending with .nl (wildcard) |
*.co.uk | All emails ending with .co.uk (wildcard) |
Exact domain matches always take priority over wildcard patterns. If you have both
open.cx and *.cx, emails from open.cx use the exact-match signature.Advanced: Private App (legacy)
Use Private App (legacy) only when OAuth is unavailable for your organization or support asks you to use the fallback path.Create the Private App
Create the Private App
In HubSpot, go to Settings → Integrations → Private Apps → Legacy Apps → Create Legacy App and choose Private.Enable these scopes:
crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.companies.read, crm.objects.deals.read, crm.objects.owners.read, tickets, conversations.read, and conversations.write.Copy the Private App Access Token after creation. HubSpot shows it only once.Configure the legacy webhook
Configure the legacy webhook
In OpenCX, choose Private App (legacy) and copy the Webhook URL.In HubSpot, paste that URL into the Private App’s Webhooks tab, set event throttling high enough for your volume, and subscribe to:
Click Commit changes in HubSpot after editing subscriptions.
| Object type | Event |
|---|---|
| Conversation | New message |
| Conversation | Conversation creation |
| Ticket | Property change |
Save legacy credentials in OpenCX
Save legacy credentials in OpenCX
In OpenCX, enter:
Find the user ID in HubSpot under Settings → Users & Teams. Open the teammate profile and copy the number at the end of the URL.
| Field | Value |
|---|---|
| Private App Access Token | The pat-... token from HubSpot. |
| Default User ID | The numeric HubSpot user ID only, with no A- prefix. |
Disconnecting
To disconnect an OAuth install, click Disconnect in Settings → Integrations → HubSpot, then typeDELETE to confirm. Existing OpenCX sessions remain available.
If you use the legacy Private App path, also remove the webhook subscriptions from your HubSpot Legacy App.
Related Documentation
Handoff & Sync
Ticket creation, contact sync, CRM context.
Troubleshooting
Connection failures, missing tickets, reply sync issues.
HubSpot Overview
Capabilities, supported channels, observability.
Human Handoff
Global handoff settings and escalation rules.