When a customer chats via the Fin Messenger on your website or app, Fin handles the conversation entirely within Intercom. If Fin cannot resolve the issue, it escalates to your configured Freshchat agent group with full conversation history intact.
Tip: You can also configure Fin to create a Freshdesk ticket on escalation instead of a Freshchat message.
Prerequisites
Before you begin, ensure you have the following:
A Freshchat account (part of the Freshworks suite).
Your Freshchat API key and RSA public key.
A dedicated Freshchat agent to represent Fin (this should be separate from your Freshdesk Fin agent).
(Optional) Freshworks CRM API key and bundle alias if you want to sync contact and company fields.
Note on Omni: If Freshworks has moved your account to their Omni product, the integration is manageable, but some Freshworks API documentation is still pending. Contact Intercom support if you encounter issues.
Part 1: Connect the accounts
Navigate to Connect > Freshchat in your Fin workspace.
Under Freshchat API, enter your Freshchat subdomain, API key, and RSA public key. Add your CRM API key and bundle alias if you want to sync contact and company fields.
To activate the webhook handshake:
In Freshchat, go to Admin Settings.
Use the search bar to find Conversation Webhooks.
Ensure the toggle is set to Enabled.
Paste the URL provided in your Intercom setup into the Webhook field.
Click Save.
Only after saving, click Copy on the RSA Public Key.
Paste it back into Webhook Public Key section in Intercom.
Click Connect to Freshchat to save your settings and establish the connection.
Part 2: Configure Fin settings
Once connected, navigate to Settings > Messenger > Configure for Freshchat to define how Fin behaves.
In the Configure for Freshchat tab, complete the following:
Fin Freshchat agent: Select the dedicated agent you created to represent Fin.
Escalation group: Select the group that should receive handoffs.
Freshchat Topics: Choose the specific topic (channel) Fin should respond to.
Auto-resolve inactive conversations: When Fin resolves a conversation, Freshchat leaves the conversation "open" if no one replies again. To ensure these are properly closed, you must create a specific automation in Freshchat.
Important: The auto-resolve step requires the Advanced Automations add-on in your Freshchat workspace. If you don't see this option, navigate to Admin Settings > Apps to install it.
Set up auto-resolve for inactive conversations
When Fin resolves a conversation, Freshchat leaves it open if the customer doesn't reply again. To close these automatically, create the following automation in Freshchat:
In Freshchat, go to Admin Settings > Advanced Automations.
Create a new automation and name it: Resolve inactive Fin conversations.
Add two triggers: Agent sends a reply and System sends a reply.
Add the condition: Assigned agent equals Fin (or the name you gave your AI agent).
Add the action: Update the status to Waiting on customer.
Set the duration for how long the conversation should stay inactive before the automation runs.
Under Cancel execution of actions if any of these events occur (set the schedule to 86400 seconds / 24 hours), add: User sends a reply and Agent sends a reply.
Click Save to finish the automation setup.
Collecting user information
There are three ways to pass a customer's name, email, or other details into a Freshchat conversation, depending on whether the user is new, anonymous, or already logged in to your app.
Option 1: CRM sync (existing Freshchat users)
If the customer already exists as a contact in Freshchat and you have configured the CRM API credentials during setup, their name and email are automatically synced into Intercom. No additional workflow steps are needed.
Option 2: Collect Data workflow step (new or anonymous visitors)
For customers who are not already in your system, add a Collect Data step to your Intercom workflow before the Let Fin Answer block. This prompts the customer to provide their name, email, or other details at the start of the conversation.
To allow customers to skip providing this information, use branching logic in your workflow. For example:
If email is unknown: ask the customer for their email
If email is already known: skip the collection step and proceed to Fin
Note: Freshchat does not natively support a "Skip" button on data collection prompts. Skip logic must be built into the Intercom workflow using conditional branches.
Option 3: JWT / Identity Verification (logged-in users)
If customers are already logged in to your app, use Identity Verification to automatically pass their name and email to Intercom via a JWT token. This removes the need for customers to re-enter their details and ensures the data syncs accurately to Freshworks.
Tip: Custom attributes such as plan type or account ID can also be passed via JWT and mapped to Freshdesk or Freshchat fields using the field mapping configuration.
Part 3: Test and Deploy
Step 1: Add to your workflow
Navigate to Workflows and add the Handoff to agent in Freshchat step. Save the workflow to enable the escalation path.
Optional: Set up a hybrid escalation (chat and ticket)
If you have both Freshchat and Freshdesk connected, you can give customers a choice of how they want to escalate either via live chat or a support ticket. This is done by adding a Branch step to your workflow after the Let Fin handle block.
The recommended workflow structure for a hybrid path:
Add a Welcome message block to introduce Fin and let the customer describe their issue
Add a Let Fin handle block, Fin attempts to resolve the inquiry using your knowledge content
If Fin cannot resolve, add a Branch step with two buttons:
Create a ticket
Human Agent
Connect the Create a ticket path to a Handoff to ticket in Freshdesk step, a ticket is automatically created in Freshdesk containing the full conversation transcript.
Connect the Human Agent path to a Handoff to agent in Freshchat step, the conversation is routed to a live agent using your escalation group settings.
Note: The Handoff to ticket in Freshdesk step includes a User verification setting. When enabled, customers must verify their email address with a one-time password (OTP) before their ticket is created. This applies when the Messenger is not in secure mode. You can toggle this off directly in the workflow step.
Step 2: Test the integration
Use the Fin Test dashboard
You can preview response quality and verify escalation paths without affecting your live site:
Navigate to the Test tab in the Fin sidebar.
Ask a question to see how Fin retrieves information from your knowledge base.
Simulate an escalation (e.g., type "talk to a human") to confirm that the Handoff to agent in Freshchat step triggers correctly.
Limit Fin to a test audience
To perform a controlled rollout or test Fin on your actual website before a full launch:
Use a staging environment: Install the Messenger code snippet on your staging site only.
Apply URL rules: In the Deploy section, set rules to show the Messenger only on specific sub-pages, such as
yoursite.com/test.
Step 3: Go live
FAQs
Do I need to set up both Freshdesk and Freshchat?
Do I need to set up both Freshdesk and Freshchat?
No, the integrations are independent. You can connect Freshchat only for live messaging or Freshdesk only for email tickets.
What is a Freshchat topic?
What is a Freshchat topic?
Topics (channels) are categories customers select in the Freshchat widget (e.g., "Support" or "Billing"). You select one topic during setup for all Fin conversations.
Can I sync contact and company data?
Can I sync contact and company data?
Yes, but only if you provide your Freshworks CRM API key and bundle alias during the initial setup.
What happens when a customer escalates outside of business hours?
What happens when a customer escalates outside of business hours?
Fin does not automatically detect Freshchat business hours. You need to handle out-of-hours behaviour in your Intercom workflow. The recommended pattern is: A Close action in Intercom triggers the Advanced Automation in Freshchat, reliably closing the conversation in both systems.
Fin is responding to a conversation the customer already closed, how do I stop this?
Fin is responding to a conversation the customer already closed, how do I stop this?
This happens when a customer reopens a closed conversation in the Messenger widget and Fin re-engages. To prevent it, enable the Prevent visitors/users replying to closed conversations setting. When enabled, the text composer in the Messenger is replaced with a Start a new conversation button, preventing Fin from being triggered on old threads.
How do I delete a conversation containing personal data (GDPR)?
How do I delete a conversation containing personal data (GDPR)?
Always delete in Intercom first, then in Freshchat. Do not delete the contact in Freshchat first. If you do, Intercom may attempt to sync updates to a contact that no longer exists, causing API errors in your Intercom logs.
Need more help? Get support from our Community Forum
Find answers and get help from Intercom Support and Community Experts









