Salesforce Omni-Channel Skills-Based Routing

As mentioned in our previous article, Salesforce Skills-based routing may get used to route incoming – non-voice – questions to the best-skilled agent.  Based on the data available with the incoming question, a match may get made with the skills of the available agents.  And so, Salesforce will push the question to the agent that is best suited to answer the question.


We don’t go in detail about configuring email-to-case, web-to-case or Chat as such in this article.  Setting up and configuring these long-existing functionalities doesn’t change when you start using skills-based routing.

However, in this article we focus on the activation of skills-based routing.

Implementing Salesforce Skills-based routing

Before activating routing via incoming chat requests, some initial setup tasks have to be done.  These basic steps are described in this article, and these basically require the following:

  • Enable Omni-channel
  • Enable Skills-based routing
  • Create Skills
  • Create Service Resources for Agents
  • Assign Skills to Service Resources
  • Route Work Items using Skills

We will look into the ‘point-and-click’ possibilities for implementing Skills-based routing in Salesforce.  But know that it is possible to implement more complex scenarios via custom Apex and Trigger.


Important: When searching for skills, only the first 2000 skills are retrieved. If more than 2000 skills are set up, then the search results only show the matches of the first 2000 skills that were created.

With smaller and/or a local implementation, you might ask why this is important.  But when looking at multi-national implementations where multiple channels – Chats from multiple communities, Cases in different countries, etc, get implemented, you may get to that 2000 skills point.

Defining Skills is like setting up reference data.  As an organisation, you will prefer having unique skills defined, like ‘Language_English’ or ‘Country_France’.  Note that we mention the type of skill as part of the name.  At this point in time, it is not possible to ‘organise’ skills per type.  So, to have a clear view on what the skill is about, it is easier to prefix such information in the name of the skills itself.

Also read

As mentioned, this is like setting up reference data.  Defining Skills doesn’t make anything happen in your Salesforce org. Rather, these data will get used when defining Service Resource and when setting up the Routing Rules.

In the picture on the right side, you see that Skills may get selected for different channels in Salesforce. Which means that you define skills just once, and afterwards you may use them where appropriate.

Service Resources & Skills Assignment

Once you have Skill defined, you may start assigning these Skills to Support Agents.  In Salesforce, this happens via the Service Resources object. 

For usage in Skills-based routing and Omnichannel, ensure that you select ‘Agent’ as Resource Type.  You might be interested in the ‘Capacity-Based’ checkbox which defining your Service Resource. However, this is not used when defining support agents, this is specifically for Field Service Technicians.

Assign Skills to Service ResourcesOnce a new Service Resource is created, we may assign Skills to this resource.  

If needed, specific Skill Levels and/or Start Date may get entered.  The Skills Level could be interesting in Skills-based Routing.  It allows you to give higher priority to higher skilled agents, but to lower the expected skills if none of the high-skilled agents is available.  So, if an incoming interaction is waiting for too long, you lower the expected skills, and so more support agents become eligible for answering the question at hand.

Route Work Items

Via the Skills-Based Routing Rules, we now may map values for incoming questions with the expected Skills need to answer the question.

Let’s look at the following example to clarify:

  • Skills-based routing will be used to route incoming chat requests from 2 distinct Salesforce Community sites. These sites are used in different countries, by people who speak different languages (also different languages per country)
  • The incoming chat request creates a record in the Chat Transcript object, and so it is important to have distinct values for
    • Button from which the chat got initiated
    • Page (country-based?) from which the chat got initiated
    • Language of the person that initiated the chat
  • To be able to use these values in the Skills-based Routing Rule, the values have to be on the Chat Transcript object.  

    : It is not possible to use, for instance, values from related objects when mapping values to skills


The mapping of the incoming chat values with skills, may look as you see in the picture here below


Mapping values to skills

Take into account that only 1 rule may get defined per object. So, when implementing Skills-based routing for multiple variations – multiple communities, multiple countries, multiple language – and estimating that different teams will answers questions based on the specifics of a certain community or country, you should carefully plan Skills, Service Resources, and Skills-based Mapping Rules.

Finally, and not specifically detailed in this article, but take into account that you should enable skills-based routing on the respective channels that you want to enable.  For instance, when you want to use Skills-based routing with Cases created from Email-to-Case, then you should have a Routing Configuration (with Skills-based Routing enabled) linked with the Queue where the Cases enter.


Would you like to start with Omni-Channel Skills-based routing? But you need some support?  Then let’s discuss on how you may implement this in your company.


Similar Posts