Before debugging, have this ready: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.
- 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 → Development → Legacy Apps and check if the app is still active.
- Confirm the token starts with
pat-(region suffix varies — e.g.pat-na1-,pat-eu1-). 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
: the conversation didn’t originate from a channel HubSpot owns (most common), ticket creation is disabled, or the contact has no email for HubSpot to match. Fix:- Check the channel. Tickets appear automatically only when the conversation starts from a channel HubSpot owns — a HubSpot chat widget, or an email routed through a HubSpot inbox. Messages sent to OpenCX’s
temporary+...@instant.cxaddress never reach HubSpot, so no ticket is created. - For non-HubSpot channels (OpenCX email, widget, WhatsApp, SMS, phone), use the
create-hubspot-ticket-from-sessionworkflow action on handoff. See Workflows for how to wire it. - 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 all of the above 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, uncommitted subscription changes, or stale webhook URL. Fix:- In HubSpot, go to Settings → Integrations → Private Apps → Legacy Apps → your app → Webhooks.
- Confirm subscriptions include
Conversation→New message,Conversation→Conversation creation, andTicket→Property change(with the relevant properties selected). - Confirm you clicked Commit changes after editing subscriptions — uncommitted changes don’t fire.
- 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 comment — internal comments are not delivered to customers.
AI stopped replying mid-thread
: the conversation owner is not the OpenCX AI user. Fix:- In HubSpot, open the conversation and check the Assigned to field.
- Reassign to the user whose ID you configured as the Default User ID in OpenCX.
- If you want the AI to keep drafting while reps own the conversation, enable Assist Mode instead.
Webhook shows delivered in HubSpot but nothing happens
: the webhook URL in HubSpot is stale or was copied from a different org. Fix:- In OpenCX, re-copy the webhook URL at Settings → Integrations → HubSpot.
- In HubSpot, open your Legacy App (Settings → Integrations → Private Apps → Legacy Apps) → Webhooks and replace the target URL.
- Trigger a test conversation to confirm events are now processed.
Email reaches HubSpot, threads appear, but no OpenCX session is created
: the Legacy App is missing thecrm.objects.owners.read scope.
How to confirm:
- In HubSpot, open your Legacy App → Monitoring → API Calls.
- Look for
GET /crm/owners/v3/A-<number>returning 403 withMISSING_SCOPESin the error body. This is the exact failure.
- Legacy App → Scopes tab → enable
crm.objects.owners.read. - Click Save / commit scope changes.
- In OpenCX Settings → Integrations → HubSpot, re-save to refresh the cached client.
- Send a fresh test email and confirm the session now appears in the OpenCX inbox.
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 a handoff comment posted on the associated HubSpot conversation (AI summary, sentiment, language, OpenCX session link).
- Check webhook event subscriptions in your HubSpot Legacy App settings — all three must be subscribed (
Conversation→New message,Conversation→Conversation creation,Ticket→Property change). - Confirm you clicked Commit changes after adding or editing the subscriptions — uncommitted subscriptions don’t fire.
- Confirm event throttling is set to
100per second (or higher), not the default10— the default silently drops events during bursts. - 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 comment.
- 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 |
| Event delivery | At-most-once — failures are logged, not retried |
| Ticket close delay | ~15 seconds before closing tickets on resolution |
| Transient failure retry | HubSpot API calls retry up to 3 times on error |
| Contact creation failure | Non-blocking — handoff proceeds even if the HubSpot contact can’t be created |
| Email channel delay | ~5 seconds on email events to let concurrent workflows finish |
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 handoff behavior, ticket creation, and contact sync.
Webhook Reference
Event payloads, skip rules, and outbound HubSpot API calls.
Human Handoff
Global handoff settings and escalation rules.