- Inbound (HubSpot → OpenCX)
- Outbound (OpenCX → HubSpot)
HubSpot POSTs an array of events to your OpenCX webhook URL. OpenCX returns
200 OK immediately and processes in the background — at-most-once, no redelivery on failure.Event type. OpenCX only acts on three — everything else is ignored.
Thread ID (conversation events) or ticket ID (ticket events).
On conversation events, OpenCX re-fetches the message via
GET /conversations/v3/conversations/threads/{threadId}/messages/{messageId} — the webhook envelope does not carry the message body.COMMENT events are skipped (internal notes aren’t customer messages).Set on
ticket.propertyChange. Empty values are ignored.conversation.newMessage / conversation.messageCreated
conversation.newMessage / conversation.messageCreated
Re-fetches the message from HubSpot, then routes it through the AI if it passes filters.Skipped when:
messageType === 'COMMENT', sender is BOT or AGENT, messageDirection === 'OUTGOING', the text contains OpenCX’s own AI markers (🔄 AI decided to handoff or <!-- OpenCX-AI-Response -->), or the conversation owner is not the configured AI user.Email only: a 5-second delay lets other OpenCX workflows (drafting, signatures) finish first.Dedup key: ${objectId}-${messageId ?? eventId} within a single delivery batch.ticket.propertyChange
ticket.propertyChange
Syncs the changed property onto the associated OpenCX session’s custom data.Skipped when: ticketing is disabled in settings, or
propertyValue is null / empty string.Owner gating
Owner gating
If the HubSpot conversation is owned by a user other than your configured AI user, OpenCX stops replying. Reassign to the AI user to resume — or enable Assist Mode, which ignores owner checks and posts drafts as internal comments.
Related Documentation
Connect HubSpot
Legacy App, scopes, access token, and webhook registration.
Handoff & Sync
Day-to-day handoff flow, rep replies, CRM context, contact sync.
Troubleshooting
Connection, webhook, ticket, and reply sync debugging.
HubSpot Overview
Capabilities and supported channels.