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


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


You can also add a relevant welcome text to these Topics to set the right context and let your users know what they can reach out to you about on a specific Topic. This will also enable your team members to understand intent right when a message comes in. 


How to set up Topics


Go to Admin Settings > Channels > Chat Settings > Web Chat Topics



You can name your Topic, add an image, a relevant welcome text, and select the Chat Groups (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 Chat


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.



Under Advanced Options, you can do a number of things,


Response Expectations for Topic

You can let your users know how long they have to wait to get a response from your team. 


You can let Chat calculate this, based on your team’s response time (Account Settings > Response Expectations). Or you can add a custom message of your choice. For example, you can say ‘Typically replies within 30 seconds’, or something like ‘We’re on top of this’.



Note: Your custom message will be displayed only within the Business Hours for Chat you have set up for the Topic in chat. Outside of this, the value calculated by chat will be displayed.


What is Topic visibility


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.



What are tags


In chat, you can turn Topics on or off on the different pages of your website/app and for different users such as visitors or logged in customers.



You can do this 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. All you have to do is uncheck the ‘Set as public’ checkbox and add a tag, say ‘pricing’, to this Topic, and 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)


<!--Body-->
<script>
  function initFreshChat() {
  
    window.fcWidget.init({
  
      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="https://wchat.freshchat.com/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);
  
</script>
<!--Body-->

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

<!--Body-->
<script>
  function initFreshChat() {
  
  window.fcWidget.init({
  
  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="https://wchat.freshchat.com/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);
  
</script>
<script>
window.fcWidget.setTags(tags);//For example ['pricing','loggedin']
<!--Body-->


Note: Make sure you use the tags you define for a topic on the corresponding webpage's code.


Some examples


You can have a separate Topic called ‘Priority Support’ for your VIP customers.



You can even create ad-hoc  Topics (on the fly) for temporary concerns or announcements like server downtime, scheduled maintenance, or webinar registrations.



Did you know?


You can translate Topics into other languages and support your customers in their native language.