Setup takes about 15 minutes. You need admin access in both HubSpot and OpenCX.
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 create Private Apps and manage webhook subscriptions in your HubSpot portal.
Owner or admin in OpenCX
Owner or admin in OpenCX
Only organization owners and admins can save integration credentials in the OpenCX dashboard.
Setup
Create a HubSpot Private App
In your HubSpot account, go to Settings → Integrations → Private Apps and create a new app. Name it something recognizable (e.g. “OpenCX”).Enable these scopes:
Save the app and copy the access token.
| Scope | Purpose |
|---|---|
crm.schemas.contacts.read | Read contact schema |
crm.objects.contacts.read | Fetch contact data |
crm.objects.companies.read | Fetch company data |
crm.objects.deals.read | Fetch deal data |
tickets | Create and manage tickets |
conversation.creation | Create conversations |
conversation.deletion | Clean up conversations |
conversation.newMessage | Receive new messages |
Open HubSpot settings in OpenCX
Go to Settings → Integrations in your OpenCX dashboard and find HubSpot.
Enter your credentials
Paste the access token and fill in the default user ID.
Click Save. OpenCX verifies the token and auto-detects your HubSpot portal.
| Field | Value |
|---|---|
| Access Token | The pat-na1-... token from Step 1. |
| Default User ID | Format: A-12345. The HubSpot user ID conversations are assigned to when no routing rule applies. Find this in HubSpot under Settings → Users & Teams. |
Copy your webhook URL
After saving, OpenCX displays a webhook URL unique to your organization. Copy it — you’ll paste it in HubSpot next.
Register the webhook in HubSpot
In HubSpot, go to Settings → Integrations → Private Apps, open your app, and navigate to Webhooks.Subscribe to these events and paste your webhook URL as the target:
conversation.newMessageconversation.messageCreatedticket.propertyChange
Verify end to end
Start a conversation through one of your connected channels (web chat or email) and trigger a handoff. Confirm:
- A ticket appears in HubSpot tagged
opencx_handedoff. - The ticket has a conversation summary and transcript.
- Reply from HubSpot — confirm the reply reaches the customer.
If any step fails, check Troubleshooting for common causes.
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
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.Disconnecting
To disconnect, click Disconnect in Settings → Integrations → HubSpot. Then remove the webhook subscription from your HubSpot Private App to stop event delivery.Related Documentation
Handoff & Sync
Ticket creation, contact sync, CRM context, assist mode.
Troubleshooting
Connection failures, missing tickets, reply sync issues.
HubSpot Overview
Capabilities, supported channels, observability.
Human Handoff
Global handoff settings and escalation rules.