Skip to main content

Fin Messenger: Freshchat setup

Set up the Fin Messenger on your site and configure Freshchat as the handoff destination for escalated conversations.

Updated over a week ago

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

  1. Navigate to Connect > Freshchat in your Fin workspace.

  2. 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:

    1. In Freshchat, go to Admin Settings.

    2. Use the search bar to find Conversation Webhooks.

    3. Ensure the toggle is set to Enabled.

    4. Paste the URL provided in your Intercom setup into the Webhook field.

    5. Click Save.

    6. Only after saving, click Copy on the RSA Public Key.

    7. Paste it back into Webhook Public Key section in Intercom.

    8. 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:

  1. In Freshchat, go to Admin Settings > Advanced Automations.

  2. Create a new automation and name it: Resolve inactive Fin conversations.

  3. Add two triggers: Agent sends a reply and System sends a reply.

  4. Add the condition: Assigned agent equals Fin (or the name you gave your AI agent).

  5. Add the action: Update the status to Waiting on customer.

  6. Set the duration for how long the conversation should stay inactive before the automation runs.

  7. 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.

  8. 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:

  1. Add a Welcome message block to introduce Fin and let the customer describe their issue

  2. Add a Let Fin handle block, Fin attempts to resolve the inquiry using your knowledge content

  3. If Fin cannot resolve, add a Branch step with two buttons:

    • Create a ticket

    • Human Agent

  4. 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.

  5. 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:

    1. Navigate to the Test tab in the Fin sidebar.

    2. Ask a question to see how Fin retrieves information from your knowledge base.

    3. 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

  1. Navigate to Deploy > Fin Messenger.

  2. Install the code snippet on your site.

  3. Click Go live.


FAQs

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?

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?

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?

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?

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)?

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.


💡Tip

Need more help? Get support from our Community Forum
Find answers and get help from Intercom Support and Community Experts


Did this answer your question?