Using a live chat software helps you to provide real-time support to users, provide better customer service and receive instant feedback. With Freshworks CRM, you can add a chat widget to your website, customize it to suit your business, add FAQs, business hours for chat and more. 


 1. Topics

When a customer or lead clicks on the chat messenger, the first thing they’ll see is Topics. Topics can be regarded as an IVR for chat. You can auto-route incoming messages from these Topics to different Groups (teams). 

For example, if you’re a SaaS company, you will have different teams like Pre-sales, Sales, and Support. You can create a Topic ‘Product Demo’, and map it to your Pre-sales team or a Topic called ‘Customer Support’ and map it to your Support tea, so that when new messages come in on these Topics they get auto-assigned to the corresponding groups.

  • To set up topics, go to Admin Settings > Chat (Under Communication Channels) > Topics and click + Topic

  • Give a name for your Topic, add an image, a relevant welcome message, and select the group(team) to which any incoming messages on this Topic has to be routed. 

  • You can also trigger a Custom Bot flow specific to a Topic. You can choose to trigger it inside or outside your Business Hours. For example, you can create a Custom Bot to qualify leads and trigger it on your Sales Enquiries Topic or a Custom Bot for support and launch it on your Customer Support Topic.

  • Let your users know how long they have to wait to get a response from your team. This can be calculated based on your team’s response time. Or you can add a custom message like  ‘Typically replies within 30 seconds’, or ‘We’re on top of this’.
  • Note: Your custom message will be displayed only within the Business Hours you have set up for the Topic in chat. Outside of this, the value calculated by chat will be displayed. 
  • Set Topic Visibility to make the topic available for your visitors/users. If you select Public, the Topic will go live immediately and all your users will be able to see it, on all the pages of your website/app. If you select Private, the Topic will be locked, and won't be visible on your customers. The Private option will come in handy if you want to save a Topic as a draft, or work on translating Topics into other languages before making it live.

  • You can turn Topics on or off on different pages of your website/app and for different users such as visitors or logged in customers using tags.
  • Let’s say you have a Topic called ‘Pricing Enquiry’, and you want this to appear only on your pricing page and not on your home page. Uncheck the Public checkbox and add a tag, say ‘pricing’, to this Topic, then use this tag in your chat code on your pricing page. 
  • You can make the relevant Topics appear either when the widget loads or when a user switches from one page to another on your website/app.
  • Use the following code snippet to make the Topics appear when the widget loads (during init)

    function initFreshChat() 
      ( {
      token: "WEB_CHAT_TOKEN", //Replace with your Freshchat token
      host: "WEB_CHAT_URL", //Replace with your Freshchat URL
           tags: ["pricing", "loggedin"], //tags your defined in topic settings
                               externalId: <externalId>
                          } );
  function initialize(i,t){var e;i.getElementById(t)?initFreshChat():((e=i.createElement("script")).id=t,e.async=!0,e.src="",e.onload=initFreshChat,i.head.appendChild(e))}function initiateCall(){initialize(document,"freshchat-js-sdk")}window.addEventListener?window.addEventListener("load",initiateCall,!1):window.attachEvent("load",initiateCall,!1);

  • Or use the below code to change the displayed Topics during page transitions

  function initFreshChat() 
 token: "WEB_CHAT_TOKEN",//Replace with your Freshchat token
 host: "WEB_CHAT_URL",//Replace with your Freshchat URL
      tags: ["pricing", "loggedin"],//tags your defined in topic settings
 externalId: <externalId>
 function initialize(i,t){var e;i.getElementById(t)?initFreshChat():((e=i.createElement("script")).id=t,e.async=!0,e.src="",e.onload=initFreshChat,i.head.appendChild(e))}function initiateCall(){initialize(document,"freshchat-js-sdk")}window.addEventListener?window.addEventListener("load",initiateCall,!1):window.attachEvent("load",initiateCall,!1);
window.fcWidget.setTags(tags);//For example ['pricing','loggedin']

2. Chat Assignment Rules

You can auto-assign incoming conversations to team members or teams (groups) by defining rules based on the content of the message and/or any information about the user or lead which you can track using chat.

For example, you might have multiple sales teams for different regions or different support teams to handle specific queries. With Assignment Rules you can redirect the customer to the right person or team in your company. 

  • To set up assignment rules, go to Admin Settings > Chat (Under Communication Channels) > Chat Assignment Rules and click Add New Rule. 
  • Define a rule condition in the If block and the follow up action in the Then block.
  • When defining a rule, you can use the content of the message, the url it was sent from, or the message source along with any information about the lead or customer such as their country or email address to create a condition. And then choose a follow up action to either assign it to a team member or a group (team).

  • Reorder rules by holding and moving the rules up or down in the rules list page. 
  • You can also enable/disable and edit/delete these rules by clicking on the drop down arrow next to a rule.
  • Note: 
  • If you have set up your Business Hours in chat, you can even create rules based on your Business Hours settings.
  • Assignment Rules are order based. Only if the first condition of a rule is met, chat will proceed to check the subsequent conditions within the rule.
  • If you have multiple rules set up, and a new message comes in which matches more than one rule, the one on top of the page will take priority and the message will be assigned based on the first rule that matched.
  • Assignment Rules take priority over Intelli Assign. When a new message comes in, it will be first checked against Assignment Rules, if no rules match then the message will go through a topic to group mapping and get assigned based on those settings.

3. IntelliAssign

With IntelliAssign you can automatically assign incoming messages to agents or groups (teams) by configuring their skill level and conversation limit. IntelliAssign follows a load-based or round-robin method (you can choose between these two depending on your business needs) to assign conversations based on the load or number of active conversations in an agent’s queue.

When new messages come in or existing chats are reopened, agents who are logged in to the account, and have marked themselves active on IntelliAssign, will be assigned conversations. 

  • To set up Intelliassign, go to Admin Settings > Chat (Under Communication Channels) > Intelliassign and switch the toggle to Enabled.
  • Step 1: Choose IntelliAssign logic

  • The Intelliassign logic is of two types:

  • Load based 
  1. Load based logic assigns conversations to an agent who has the highest percentage of bandwidth at the moment and for whom a conversation hasn’t been assigned for the longest period of time. 
  2. Bandwidth is the number of conversations being handled by an agent at that moment out of the total number of conversations that an agent can handle.
  3. Load-based IntelliAssign considers the agent’s skill level first, followed by the time since the last assigned conversation.

  • Round robin 
  1. Round Robin logic auto-assigns conversation to an agent-based on who hasn’t been assigned a conversation for the longest period of time and their active conversation limits availability.

  • Step 2: Agent settings

  • In Agent settings, you can define the idle time for agents, conversation time-out limit (when a conversation becomes inactive), reassignment condition, and the number of chats an agent can handle at a time. 

  • Idle time: If the agent is not active on the chat tab for more than the number of minutes you define in Agent Settings, then they’ll be marked as idle.
  • Active conversation: A conversation pending reply from an agent or customer within a specified period of time. You can define this time limit against ‘Set a conversation as inactive if the customer has not responded in’.

  • When a conversation which has been closed (resolved) and moved to the resolved queue is reopened again, because the customer sends a message after it has been marked as resolved, you can reassign it to the same agent who handled it in the past.
  • But there are a few conditions which have to be met for you to be able to reassign it to the same agent.

  1. Reassign toggle should be enabled under Agent Settings.
  2. Agents must have marked themselves active on IntelliAssign.
  3. IntelliAssign must be enabled for a group; and the agent has to be part of that group.
  4. The conversation is reassigned if it is reopened within the specified time period. This time is calculated based on the time the last message was sent in the conversation, and not based on the time at which the message was resolved or archived.

  • Step 3: Auto resolve

  •  In IntelliAssign, you can configure auto-resolve to automatically resolve a conversation when it becomes inactive. 

  • Step 4: Define skill level for agents

  • You can classify agents into different categories such as ‘Beginner’, ‘Intermediate’, and ‘Expert’ and define the number of active conversations each of them can handle at a time. 
  • For example, you can have a higher active conversation limit for your pro support team while defining a lower limit for your newbies or interns. 
  • Note: The conversation limit that you define here will override the overall ‘Active conversations per agent’ that you set under ‘Agent Settings’.

  • Step 5: Group settings
  • Apart from auto-assigning conversations to agents, you can also distribute chats to different teams (groups).


  • All the groups that you have created in chat will be displayed here. All you have to do is move the toggle to enable IntelliAssign for a Group. 
  • Plus, if an agent goes inactive during a conversation, you can reassign it to other active members within the group. Select ‘Yes’ from the drop-down to enable this and the message will be reassigned to the member with the least number of current active conversations in the group. 

 4. Canned Responses

Often customers tend to keep coming with repetitive and similar queries. And answering the same questions, again and again, will be tedious and time consuming for your support team. By pre-saving replies to common queries as Canned Responses, you can speed up your response time, while keeping your replies personalized.

  • You can send a canned response in a conversation by typing “/” (forward slash) followed by the shortcode. When you create canned responses in chat you will add a shortcode to each canned response that you create, make sure the shortcode you add is relevant and easy to remember.

  • You can also add a canned response to your reply by selecting the canned response icon from below the reply text box. From here you can search for your saved replies and also preview it before adding it to a conversation.
  • To create a Canned Response in chat go to Admin Settings > Chat (Under Communication Channels) > Canned Responses > New Canned Responses
  • Give a title to your canned response. It can be a question that a customer asks. For example, How to change the password. Type your reply. You can also include emojis or images in your response. Add a shortcode that you’ll remember to easily access the canned response later. 
  • Next, select a folder under the personal or shared category. Saved replies in your personal folder will be visible only to you, while those in the shared folders will also be available to your team members.

  • To delete a canned response click on the drop-down on the response and click Delete.

  • To create multiple folders under personal and shared categories, click the + sign next to the category title. 

  • Give a name and select the team members with whom you want to share this folder. You can share the new folder with all your team members or with specific teams.

 5. Files

You can send and receive file attachments in Chat. PDFs, images, videos, and text files are supported by default. 

  • You can attach files to a conversation from your computer or from the Files repository in chat. Files is similar to your Google Drive or Dropbox but within Freshworks CRM, where you can upload and store files, and even share it with your team.
  • To attach a file in a conversation, click the Attach icon at the bottom of the reply text box. When you upload an attachment from your computer which is not available in your Files folder, you will get a prompt asking if you want to save it to your Files repository.
  • If you select Files, you will see a list of files in your repository. From here you can search, select, and send files to your users.
  • To upload attachments to files, Go to Admin Settings > Chat (Under Communication Channels) > Files. 
  • You can either drag and drop your files or click the upload button to browse and upload a file. You can search for your uploaded files using the search bar on the top.
  • You can share files with your team by clicking share against the files you want to share.  
  • You can also download or delete an attachment by clicking on the drop-down next to it. 

  • Note: Some file types, such as executable files (e.g: .exe), are not supported in Freshchat as they pose a security risk for malware and malicious content. The following files types are not supported in Freshchat - cmd, .msi, .com, .exe, .hta, .html, .htm, .js, .jar, .vbs, .vb, .sfx, .bat.

 6. Auto resolve Chats

To improve your team’s productivity you can auto-resolve (close) conversations with customers who have stopped interacting. You can set the time for auto-resolving conversations. This will help your team to organize their Inbox better and focus on conversations that require their attention.

  • To set up auto-resolve chats, go to Admin Settings > Chat (Under Communication Channels) > Auto-resolve Chats and set the toggle to Enabled. You can do this for all the conversations or conversations assigned to specific groups.
  • Set the time limit after which the conversation will be auto-resolved. 
  • You can also label auto-resolved messages to easily identify them later. Or auto-convert these conversations into tickets. Hit Save.

  • Now if a customer doesn't reply to a conversation for more than 15 minutes, the conversation will be auto-resolved (closed) and moved to the Resolved view.
  • Note: You need to set a time limit of a minimum of 5 minutes. 

 7. Business Hours for Chat

As a company, you might have different teams working across regions and across international time zones. You can set up your working hours in chat and let your users know your team’s availability and when they can expect a response from your team.

When a user initiates a conversation in chat, outside your working hours you can send an Away Message letting them know that your team is offline.

  • To set up business hours, go to Admin Settings > Admin Settings > Chat (Under Communication Channels) > Business Hours and click on Add Business Hours.
  • Give your Business Hour a name, pick a time zone, enter your Away Message and select the groups for which you want this Business Hour to be applicable. Finally, set the time intervals for each day of the week.

  • You can have either one Global Business hour for all your teams or multiple Business hours for your different teams (Groups). 

  • You can also set up multiple working hours for each day considering your team’s lunchtime or break hours. The gap between two working hour slots will be considered a break. And the Away message will be sent to any user during these breaks as well as out of office hours.

 8. Away Experience

As a business, you cannot be online 24/7 and you can convey this proactively to your users with Offline Experience. You can also prompt customers and leads to leave a message and their email id or phone number which you can use to get back to them later once you are back online.

  • You can enable the Away Experience for all your Topics or for specific Topics and when a visitor or customer clicks on a Topic to start a conversation with you, it will be visible to them in Offline mode.

  • In the Offline mode, the Topic name will have an ‘offline’ label attached to it and there will be an offline prompt for the user to enter their email id/phone number (which you can choose) and a message.

  • When a customer clicks on a Topic for which you have enabled Offline Experience, it gets activated. The user will be prompted to enter their email ID or phone number and a message. 

  • When the Away Experience prompt is active the reply text box will not be visible.

  • To set up Away Experience go to Admin Settings > Chat (Under Communication Channels) > Away Experience and  Switch the toggle to Enabled

  • Select the Topics for which you want to trigger the Away prompt and add your Offline message. You can also add Offline messages in other languages based on your language settings.

  • You can choose to get either the user’s phone number or email ID. You can even add a thank you message at the end.

 9. Conversation Labels

Conversation labels help keep track of the different kinds of requests and messages you receive. By labeling conversations and sharing your findings, you can make sure the right feedback is delivered to the right people in your company.

  • To create conversation labels, go to Admin Guide > Chat (Under Communication Channels) > Conversation Labels and click Add Conversation Labels. 
  • Give your label a category name. 
  • You can only edit/disable labels and subcategories. You cannot delete it once created. To edit a label, click on the drop-down against the label.

  • Note: When you resolve(close) a conversation you will be able to add a label to the conversation.

10. FAQs

Freshworks CRM comes with a native in-product FAQs support. You can create FAQ articles about the topics your customers ask about the most and help them self-service. This will also help you speed up your resolution time and deflect common queries.

You can organize these articles into different categories so your customers can easily browse and find what they need.

  • To create FAQ articles, go to Admin Guide > Chat (Under Communication Channels) > FAQs and click on Add category. For example, you can have all your plan and pricing related FAQs under a category called ‘Pricing Queries’. 
  • Give the category a name, a description, a tag and a relevant image to your category. Also choose the platforms (website, iOS or Android) on which you want to show your FAQs and hit Publish.

  • To add relevant articles under each category, Click Add FAQ. You can format your content, add images, hyperlinks and video links.
  • To save your category/article as a draft click on Hide this. To make it visible, you need to uncheck this option.

  • You can make the relevant FAQs appear either when the widget loads or when a user switches from one page to another on your website/app.
  • Use the following code snippet to make the FAQs appear when the widget loads (during init)

<!-- Body -->
  function initFreshChat() 
       token: "WEB_CHAT_TOKEN,
       host: "",
       // Setting FAQ Tags in the object below.
       faqTags : 
         // Array of Tags
         tags : ['paidusers'],
         //For articles, the below value should be article.
         //For article category, the below value should be category.
         filterType:'category' //Or filterType: 'article'
function initialize(i,t){var e;i.getElementById(t)?initFreshChat():((e=i.createElement("script")).id=t,e.async=!0,e.src="",e.onload=initFreshChat,i.head.appendChild(e))}function initiateCall(){initialize(document,"freshchat-js-sdk")}window.addEventListener?window.addEventListener("load",initiateCall,!1):window.attachEvent("load",initiateCall,!1);

  • Or use the below code to change the displayed FAQs during page transitions.

   // For ex: ["public", "paid"]
   tags : ['hello'],
   //For articles, the below value should be article.
   //For article category, the below value should be category.
   filterType:'article' //Or filterType: 'category'

  • To re-order your articles within a category, hover over the article and click the icon on the left, hold and drag it to move your articles.
  • To edit or delete an article, click on the Edit button against each article and click the Delete button.

11. Chat Language ettings

You can localize the chat messenger and team member interface to work in multiple languages. You can also have Topics and FAQs in multiple languages.

For FAQs and Topics we currently support the following languages.


























Chinese (Simplified)






Spanish - Latin America


Chinese (Traditional)












Portuguese - Brazil





































  • Before adding a new language, set the default (primary) language for your chat. It’ll also be a fallback language (the language they’ll see) if their browser is set to a language that isn't supported.

  • To set language for FAQ and Topics, go to Admin Settings > Chat (Under Communication Channels) > Chat languages. 

  • Set a primary language for your chat features. 

  • Click Add a language and select the language from the drop-down. By default newly added languages are disabled. You have to enable it by switching the toggle to the right.
  • Note: Primary language can be set only once. You cannot change it later. 

12. Chat Widget Settings

  • Install chat messenger on your website

  • To install the chat messenger on your website for logged-out visitors use this code snippet. 
  • JavaScript
function initFreshChat() 
   token: "WEB_CHAT_TOKEN,      
   host: ""    
function initialize(i,t)
 var e;
 i.getElementById(t)?initFreshChat():((e=i.createElement("script")).id=t,e.async=!0,e.src="",e.onload=initFreshChat,i.head.appendChild(e))}function initiateCall(){initialize(document,"freshchat-js-sdk")

NOTE: Replace ‘Web Chat Token’ in the above code with your chat token

  • Paste the code snippet on every page of your website where you want the messenger to appear.
  • To install the messenger on your web app  and start communicating with logged-in users on your website.
  • Use the following code snippet to identify logged-in users and restore conversations across browsers and devices.

  • JavaScript
function initFreshChat() 

   token: "WEB_CHAT_TOKEN",  host: "WEB_CHAT_URL",  externalId: '1234567',  restoredId: restoreId? restoreId : null,   onInit: function() 
  window.fcWidget.on('widget:loaded', function() 
    var status = resp && resp.status, data = resp &&;     if (status !== 200) 
      firstName: "John", //user's first name       
      lastName: "Doe", //user's last name       
      email: "", //user's email address              phone: "8668323090", //phone number without country code        phoneCountryCode: "+1",  // phone's country code                  plan: "Estate",  // user's meta property 1       
      status: "Active", // user's meta property 2      
      "Last Payment": "12th August" // user's meta property 3        });    
window.fcWidget.on('user:created', function(resp) {      var status = resp && resp.status,      data = resp &&;      if (status === 200) {        if (data.restoreId) {        // Update restoreId in your database           }              }            });           }        });     });   } });
function initialize(i,t){var e;i.getElementById(t)?initFreshChat():((e=i.createElement("script")).id=t,e.async=!0,e.src="WEB_CHAT_URL/js/widget.js",e.onload=initFreshChat,i.head.appendChild(e))}function initiateCall(){initialize(document,"freshchat-js-sdk")}window.addEventListener?window.addEventListener("load",initiateCall,!1):window.attachEvent("load",initiateCall,!1);

  • You can restore user conversations for logged-in users on your webapp, every time they initiate a conversation from a different device or browser. To do this, you need to set a unique external ID and restore ID for every user. 

  • External ID - This has to be unique to each logged in user. This information should be passed to Freshchat from your side. For example, a user’s email ID can be their external ID.

  • Restore ID - This will be created when a logged-in user (from your webapp) initiates a conversation for the first time. Restore ID is also unique to each user. This ID will be passed to your website from chat on the user creation callback function. You need to store this ID in your database. 

  • The next time the same user starts a conversation, from a different browser or app, this restore ID, along with the external ID must be passed from your side to Freshworks CRM chat for the user conversation to be restored. Otherwise every conversation initiated by the user on a new/fresh browser session will create a new user and the conversation history will be lost.

  • NOTE: Replace ‘Web Chat Token’ in the above code with your chat token. Replace user values with your placeholders. Paste the code snippet on every page of your website where you want chat to appear.

  • Customize the messenger to reflect your brand

  • To add business logo and name, go to Admin Settings > Chat (under Communication Channels) > Chat Widget Settings > Site/App Settings. Upload your business logo, add your business name, and web notifications domain name. 

  • To set a theme for the messenger, go to Admin Settings > Chat (under Communication Channels) > Chat Widget Settings > Bot profile. 

  • Add your bot logo and bot name.