- Access token status — is the integration showing as active in Settings → Integrations?
- Session ID — find it in the OpenCX inbox for the conversation in question.
- Webhook URL — copy it from the HubSpot integration settings in OpenCX.
Common scenarios
Connection test fails
: expired or revoked access token, wrong token format, or missing scopes. Fix:- In HubSpot, go to Settings → Integrations → Private Apps and check if the app is still active.
- Confirm the token starts with
pat-na1-. If in doubt, regenerate it. - Verify all required scopes are enabled — see the scopes table.
- Paste the new token in OpenCX and save.
Handoff runs but no ticket appears
: ticket creation is disabled, or the contact has no email address for HubSpot to match. Fix:- Check with your OpenCX admin whether ticket creation is enabled for HubSpot.
- Confirm the contact in the OpenCX session has an email address — HubSpot needs it to associate the ticket with a contact.
- If both are correct, check that the webhook is still registered in HubSpot (see below).
Rep replies don’t reach the customer
: webhook not registered in HubSpot, wrong event subscriptions, or stale webhook URL. Fix:- In HubSpot, go to Settings → Integrations → Private Apps → your app → Webhooks.
- Confirm subscriptions include
conversation.newMessage,conversation.messageCreated, andticket.propertyChange. - Re-copy the webhook URL from OpenCX and paste it in HubSpot if it looks stale.
- Confirm the rep replied publicly, not as an internal note — internal notes are not delivered to customers.
CRM context panel is empty
: CRM integration not connected, or the contact’s email doesn’t match any HubSpot record. Fix:- The CRM context panel is configured at Settings → CRMs — this is a separate connection from Settings → Integrations.
- Confirm the contact’s email in OpenCX matches a contact in your HubSpot portal.
- Test the CRM connection from Settings → CRMs.
OpenCX returns 200 OK to HubSpot webhooks immediately and processes them in the background. A successful webhook delivery in HubSpot’s logs does not guarantee processing succeeded on the OpenCX side.
Replies not syncing: full checklist
If handoff creates a ticket but replies do nothing:- Confirm the ticket has the
opencx_handedofftag in HubSpot. - Check webhook event subscriptions in your HubSpot Private App settings — all three events must be subscribed.
- Confirm the webhook URL in HubSpot matches the URL shown in OpenCX at Settings → Integrations → HubSpot.
- Confirm the reply was sent as a public message, not an internal note.
- Check the customer’s channel is still reachable (email valid, phone active, widget session open).
Limits & timing
| Value | |
|---|---|
| Webhook processing | Returns 200 OK immediately, async processing |
| Ticket update rate limit | 15 seconds between updates |
| Transient failure retry | Retries automatically on temporary HubSpot API errors |
| Contact creation failure | Non-blocking — handoff proceeds even if the HubSpot contact can’t be created |
| Email channel delay | Short delay on email messages to allow workflows to complete |
OpenCX retries transient HubSpot API failures automatically but does not retry indefinitely past rate limits. If tickets are not appearing during a high-volume period, wait a few minutes and check again.
Related Documentation
Connect HubSpot
Re-check credentials, webhook, and email signatures.
Handoff & Sync
Re-check operational behavior and assist mode.
Human Handoff
Global handoff settings and escalation rules.
Autopilot
Control which topics the AI resolves vs escalates.