How a chat lands on the AI
The match step is the load-bearing one. OpenCX uses the Freshchat conversation ID to decide whether to append to an existing session or open a new one — the session back-links to the Freshchat thread so your reps can jump straight into Freshchat from the OpenCX Inbox.Routing modes
The Auto Handle All Incoming Chats toggle on the FreshChat integration settings picks which conversations the AI answers. See Connect Freshchat for setup.- Auto-handle all incoming chats — the AI claims every unassigned Freshchat conversation and replies.
- Assigned-only — the AI only replies to conversations Freshchat has already assigned to the default agent email.
When the AI hands off
The AI decides it cannot resolve
Handoff triggers follow your global handoff rules — topics not in the Autopilot allowlist, explicit customer asks for a human, confidence thresholds, office-hours rules.
OpenCX unassigns the Freshchat conversation
The conversation goes back to new in Freshchat so your routing or your reps’ unassigned queue can pick it up. The default agent is removed from the conversation so it does not stay pinned to the AI.
A private handoff note lands on the Freshchat conversation
OpenCX posts a private note containing the AI summary and detected sentiment. The note is Freshchat-internal — your customer never sees it.
Your rep reads the summary before typing. The note is the primary handoff-to-rep observability surface; there is no separate OpenCX link inside Freshchat today.
When the AI resolves
The AI session auto-resolves
OpenCX’s auto-resolution logic closes the session when the conversation is complete — for example, after a successful answer with no further customer response.
When a rep closes in Freshchat
When a rep closes or resolves the conversation directly in Freshchat, the Conversation Resolved or Conversation Closed webhook event flows back to OpenCX and closes the matching session as resolved. If these events are not subscribed in your Freshchat webhook, the OpenCX session stays open — see Troubleshooting.Channel-specific details
One contact per email, even across Freshchat users
One contact per email, even across Freshchat users
OpenCX maps contacts by email. If two Freshchat users share the same email, the second conversation links to the first user’s contact in OpenCX — history stays on one record. This is by design to keep customer histories merged. If you need separate contacts, use distinct emails in Freshchat.
Rep replies in Freshchat are not echoed back
Rep replies in Freshchat are not echoed back
When a rep types a reply in Freshchat after handoff, OpenCX does not re-ingest that reply as a new customer message. The AI stays silent on handed-off conversations by default.
Attachments flow through
Attachments flow through
Images and files sent through Freshchat message parts land on the matching OpenCX session so the AI sees them alongside text.
Very long messages
Very long messages
OpenCX does not truncate outbound messages before sending them to Freshchat. Freshchat itself may reject messages that exceed its per-message size limit without an error surfaced to you — keep replies within typical chat lengths.
Duplicate webhook deliveries
Duplicate webhook deliveries
Freshchat sometimes re-delivers the same webhook. OpenCX deduplicates within a 24-hour window by message content and timestamp, so retries do not produce double replies or duplicate sessions.
Related Documentation
Troubleshooting
AI not replying, handoff note missing, conversations not closing.
Connect Freshchat
Re-verify credentials, webhook events, and routing mode.
Overview
What the Freshchat integration does and how it fits with your team.
Human handoff
Global handoff rules and office hours.