---
schema_version: "1"
id: 8dc3acca114a8185a199492a39bc8592f40dfa893610a5ea4027c77f8cd171f7
title: Use Skills-Based Routing to Transfer Bot Conversations
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/service/264-0-0/bots_service_transfer_skills.md
canonical_url: https://help.salesforce.com/s/articleView?id=service.bots_service_transfer_skills.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 8d21a810091c79e5dbec8a753f12d9ccb21235b09c7cbe605322774d07b3fbcb
description: Increase customer satisfaction with skills-based service rep routing and bots. Now you can route work items to service reps that can best serve customer needs based on skills like language or technical expertise. Skills-based routing makes bots the first point of customer contact. The bot identifies the required skills then transfers the customer to the next available service rep that matches their needs. Skills-based routing works the same across all channels.
products:
  - Service Cloud
  - Service Intelligence
release: "264"
---
# Use Skills-Based Routing to Transfer Bot Conversations

Increase customer satisfaction with skills-based service rep routing and bots. Now you can route work items to service reps that can best serve customer needs based on skills like language or technical expertise. Skills-based routing makes bots the first point of customer contact. The bot identifies the required skills then transfers the customer to the next available service rep that matches their needs. Skills-based routing works the same across all channels.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><a href="https://help.salesforce.com/s/articleView?id=service.einstein_service_intro.htm&amp;language=en_US" target="_blank">View supported editions</a>.</td></tr></tbody></table>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small permission">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="colgroup" class="slds-cell-wrap" colspan="2" style="text-align:center;vertical-align:top;" id="d85535e57">User Permissions Needed</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="User Permissions Needed" class="slds-cell-wrap" style="vertical-align:top;" headers="d85535e57 ">To build and manage Einstein Bots:</td>

            <td class="slds-cell-wrap" style="vertical-align:top;" headers="d85535e57 ">
              <p>Customize Application</p>
              <p>OR</p>
              <p>Modify Metadata</p>
              <p>OR</p>
              <p style="margin-bottom:0;">Manage Bots</p>
            </td>

          </tr>
        </tbody>
      </table>

You must have the following features enabled to set up Skills-Based Routing for Einstein Bots:

- Chat or Messaging enabled
- Einstein Bots enabled
- Omni-Channel set up with Skills-Based Routing enabled
- The routing type for the Chat Button set to Button Skills
- A list of the 18-digit skill IDs

In Chat, if a transfer is started, the bot follows this process to identify the destination of the conversation:

- The bot first checks for service reps with the skills required to complete the work item and identifies their availability. If a service rep is available to take the chat, the bot transfers to the service rep.
- If all service reps are at capacity, the bot reviews the settings of the Chat Button record assigned to the bot to identify the queue size. The bot reviews the queue size only if Enable Queue is checked, and uses the Overall Queue Size or the Queue Size Per Agent to identify the size. You can identify the Chat Button assigned to the bot by visiting the Connections section of the Bot Overview page.
- If there’s room to wait in the queue defined by the Chat Button, the session is added to the queue and a message is sent to the customer to let them know they are on hold.
- If there’s no room to wait in the queue, the bot moves to the No Agent system dialog.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_intelligence-264-0-0-production-enus/dcd06a7b-b5ab-448b-a767-4e2e90481508/images/icon_note.png)

Note Limitations with Skills-Based Routing and Einstein Bots:

- Einstein Bots don’t support Skills-Based Routing Rules.
- Refer to the Omni-Channel documentation for more limitations around Omni-Channel and Skills-Based routing.

1. In your bot, create a list variable with the data type of ID. Set the SObject Type to Skill.
    
    ![Creating a new list variable to store skill IDs.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_intelligence-264-0-0-production-enus/dcd06a7b-b5ab-448b-a767-4e2e90481508/support_intelligence/images/bots/bots_service_transfer_skills_variable2.png)
2. To add a set of skill IDs to a list, create an Apex class. We recommend adding the list of Skill IDs as a comment for reference.
    
    ```java
    global with sharing class GetSkillsIdsAction {
    @InvocableMethod(label='Get Skills Ids' description='Return Ids of Skills') 
    global static List<List<Id>> getSkillsIds() {
    List<Id> skillsIds = new List<Id> ();
    
    /*
    * 18 char Skills Ids in the org:
    *
    * Dutch - 0C5RM000000028I0AQ
    * French - 0C5RM000000028D0AQ
    * Spanish - 0C5RM000000026R0AQ
    */
    
    skillsIds.add('0C5RM000000028I0AQ');
    skillsIds.add('0C5RM000000026R0AQ');
    
    return new List<List<Id>> {skillsIds};
    }
    }
    ```
3. In the Bot Builder, from the Dialog Component Library, drag the **Apex** action step onto the canvas to call the Apex class and set the skills IDs in the bot variable.
    
    ![An action dialog step to call the Apex class.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_intelligence-264-0-0-production-enus/dcd06a7b-b5ab-448b-a767-4e2e90481508/support_intelligence/images/bots/bots_service_transfer_skills_action2.png)
4. Drag the **Transfer** rule step onto the canvas to transfer the bot conversation. In the Step Properties panel, in the Destination Variable field, select the ID variable that you created.
    
    ![A rule dialog step transfers the conversation using the Skill IDs.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_intelligence-264-0-0-production-enus/dcd06a7b-b5ab-448b-a767-4e2e90481508/support_intelligence/images/bots/bots_service_transfer_skills_rule2.png)

Bot Behavior in Messaging

Bots check for available service reps differently depending on the channel. In Messaging, the bot checks service rep availability by using the business hours in the Messaging Settings. If the transfer is attempted outside of the set business hours, the bot moves to the No Agent dialog. To set business hours, see Modify Messaging Channel Settings.