The Manage Workflows option under Advanced Workflow lets you define events (triggers) and conditions that cause automated actions to occur in the end user work environment.
‼️This reference is intended for more advanced users who are interested in viewing the capabilities of actions and triggers and using more complex workflow features.
Users who are just getting started with workflow should begin using the Links Launcher feature to create web page links in the UI in the previous section.
Parts of a Workflow
There are two main parts to any workflow. An action, which tells the app what to do, and a trigger which tells the app when to do it.
- Triggers: (WHEN) Events like
onChat
, onNoteSave
, resolveNoMatch
, etc. - Actions: (WHAT) Automated responses like
openCustomUrl
, openCrmFlow
, sendRequest
, and more.
💡Example: When no matching record is found in Salesforce, open a Google search or launch a Salesforce Flow to guide the agent.
These workflows enable powerful automation and customization tailored to your brand’s needs.
Workflow Triggers
The top level of the workflow includes the information about the trigger. A trigger is a set of conditions that must happen (such as clicking a link or receiving a chat) before the action portion of the workflow can occur.
Salesforce Connector/Tenfold includes the following workflow triggers:
webLink
| Adds links with custom labels to the UI. This trigger is the same as the one used to create workflows for Launcher; however, it is possible to go beyond the basic abilities configured in Launcher by using webLink in custom workflows. |
onChat
| Performs an activity as defined by the action section when a chat message is received. |
onFindAgain
| Opens a URL when the user clicks "Find record" above the Search box in the Tenfold UI. Can be combined with parameters in the same way that the webLink trigger can. |
onRelatedResource
| Detects when a resource related to Call has changed; runs when Call has no related resource, when a resource has been related with call, or if a related resource is replaced by another resource. |
resolveMultiMatch
| Performs the defined action when a multi-match call is resolved to a single match. |
resolveNoMatch
| Performs the defined action when a no-match call is resolved to a single match. |
onClickCreateRecord
| Performs the defined action when a user creates a new record in the UI. |
onNoteSave
| Performs the defined action when a user saves note for an interaction. |
Workflow Actions
The workflow proceeds to the action portion when the conditions for the trigger are met. The action section of the workflow is inside the action {...}
of the workflow code.
Salesforce Connector/Tenfold includes the following actions:
openCustomUrl
| Opens a URL in a browser tab. |
openMatchingRecord
| Opens a record in context in the CRM. |
openParentAccount
| Opens the record for the account which is the parent of the record currently in context. |
openCrmSearch
| Opens search in the Salesforce CRM |
openCrmFlow
| Opens a Salesforce Lightning Flow. |
openCrmUrl
| Opens a relative URL (only in Salesforce Lightning); uses the Salesforce API to open a specified view. |
openRelatedResource
| Opens the target resource of the onRelatedResource trigger in the CRM |
postCustomMessage
| Integrates Tenfold with a Dynamics custom search page via windows.postMessage(). |
runApex
| Runs a Salesforce OpenCTI method |
sendRequest
| Sends an http request. This action can support use cases where it is necessary to make a request to some service on a localhost:port |
Table 2. Workflow triggers and the actions they support
How to:
1 - Login to Tenfold Dashboard
2 - Click Features in top, main nav
3 - Click Advanced Workflow in left menu, under "Features"
4 - Ensure "Advanced Workflow" is enabled. You will see the green button labeled "Enabled".
5 - Click Manage Workflows
6 - Click +Create New Workflow
7 - Complete the form on the next screen. Select Messaging as the Interaction Channel
8 - Select the Skill(s)
- Only Skills selected will have access to the link.
9 - Team/Agent Groups and Role do not apply to Salesforce Connector so you can leave those selections blank.
- Once you Save the link, All Users/All Roles will be automatically applied.
10 - Give your Workflow a Name and Description (optional)
11 - A code panel displays on the right. Input your workflow details, replacing the existing default code.
‼️IMPORTANT: Make sure you save the id automatically set up for this workflow. This is particularly important if you delete the sample code and replace it with code from another screen or from one of the examples provided below. This id is unique to this workflow and is automatically created for you.
Example 1: openCrmSearch
The action openCrmSearch
searches Salesforce CRM for information.
This action supports the following:
Name | Supported Values | Description |
---|
searchTemplate
| Tenfold variables | Variables which can be passed to the CRM to use as search parameters.
"searchTemplate": "{<variable_name>}"
...
|
Supports name
and value
parameters, which can be used with the URL to construct a search query.
Example 1. openCrmSearch code block |
---|
{
"id":" <workflow_id> ",
"_teams":[
],
"roles":[
"user"
],
"type":"onChat",
"action":{
"type":"openCrmSearch",
"searchTemplate":"{callPhoneNumber}"
},
"match":"noMatch"
}
|
Important: Replace <workflow_id>
with the unique workflow id (see note under step 11 above).
Example 2: openCrmUrl
The action openCrmUrl
opens a relative URL (only in Salesforce Lightning); uses the Salesforce API to open a specified view based on passed parameters.
This action supports the following:
Name | Supported Values | Description |
---|
urlTemplate
| A URL relative path
| A URL inside Salesforce which receives the parameters sent from the workflow
"urlTemplate":"<path_to_CRM_URL>",
"parameters":[
{
"name": "<URL_parameter_name>",
"value": "<URL_parameter_value>"
}
],
...
|
Example 2: openCrmUrl code block |
---|
{
"id":"<workflow_id>",
"_teams":[
],
"roles":[
"user"
],
"action":"openCrmUrl",
"urlTemplate:":"/internal-salesforce-relative-url/{callPhoneNumber}/{recordType}",
"parameters":[
{
"name":"id",
"value":"{callId}"
},
{
"name":"module",
"value":"{recordType}"
}
]
}
|
Important: Replace <workflow_id>
with the unique workflow id (see note under step 11 above).
Example 3: OpenCustomUrl
The action openCustomUrl
opens a new URL in a new browser tab. Included parameters are converted into a query string.
This action supports the following:
Name | Supported Values | Description |
---|
urlTemplate
| name and value parameters
| The URL you want to open. May contain variables from the Tenfold platform.
"urlTemplate" : "https://www.google.com/search",
"parameters" : [
{
"name" : "q",
"value" : "{recordName}"
}
…
|
Example 3: openCustomUrl code block |
---|
{
"id":"<workflow_id>",
"_teams":[
],
"roles":[
"user"
],
"type":"webLink",
"display":"contact",
"label" : "Look up name",
"action":{
"type":"openCustomUrl",
"urlTemplate":"https://www.google.com/search",
"parameters":[
{
"name":"q",
"value":"{recordName}"
}
]
}
}
|
Important: Replace <workflow_id>
with the unique workflow id (see note under step 11 above).
Example 4: OpenCrmFlow
This advanced workflow uses openCrmFlow
and is designed to automatically initiate a specific Salesforce Flow when a chat begins. It streamlines agent workflows by proactively opening relevant Salesforce tasks, such as creating a new customer case, directly from the LivePerson Salesforce Connector Workspace. Further, this particular flow is set to only trigger when a singleMatch
has been made.
How it Works
When a chat starts, the openCrmFlow
workflow triggers the specified Salesforce Flow, in this example, "Create_New_Case". It passes crucial chat-related information to the Salesforce Flow as input arguments. This ensures that the Salesforce Flow has the necessary context to perform its intended action.
Key Components
id
: A unique identifier for this workflow. Remember to replace <workflow_id> with the actual ID.type
: "onChat"
: This specifies that the workflow activates automatically when a new chat session starts.label
: "openCrmFlow"
: The display name for this workflow.action
: "openCrmFlow"
: This is the core action, instructing the system to open a Salesforce Flow.name
: "Create_New_Case"
: This indicates the specific Salesforce Flow that will be launched. In this instance, it's a Flow designed to create a new customer case.args
: These are the input parameters passed from LivePerson to the Salesforce Flow, providing essential context:input_ContactId
: Passes the Salesforce record ID of the contact associated with the chat. This helps link the new case to the correct customer record in Salesforce.input_Channel
: Transmits the channel through which the chat originated (e.g., web, mobile).input_Skill
: Sends the skill the chat was routed to, providing additional context for the case.
match
: "singleMatch"
: Ensures that this workflow is the only one of its type that will execute when its conditions are met.display:
"global"
: Indicates the workflow's scope, making it available system-wide.enabled
: true
: The workflow is active and ready to be triggered.
Benefits
This example workflow significantly enhances agent efficiency by:
- Automating Case Creation: Agents don't need to manually navigate to Salesforce and start a new case; the system does it for them.
- Providing Contextual Information: By passing relevant record data, the Salesforce Flow can pre-populate fields, reducing manual data entry and potential errors
- Requires the Flow configuration to allow external updates.
- Streamlining Workflows: It ensures that critical CRM actions are initiated immediately when a chat begins, contributing to faster issue resolution and improved customer satisfaction.
Requires the Salesforce Flow API Name (not the Label Name), which can be found in the configuration of the Flow within Salesforce.
‼️Opening a Lightning Flow requires additional configuration on the CRM side. Flow variables should be configured to "Available for input". This is done via Salesforce Flow configuration.
This action supports the following:
Name | Supported Variables | Description |
---|
name
| string | Flow API Name "name":"<Flow_API_name>"
|
args
| name = Flow variable name
type = the data type of the variable
value = the name of the variable which passes a value to the workflow
| Name of a Lightning Flow variable that is configured as "Available for input" in the variables settings. "args":[
{
"name":"<flow_variable_name>",
"type":"<variable_data_type>",
"value":"<variable_name>"
}
],
...
|
Example 4: openCrmFlow code block |
---|
{
"id": "<workflow_id>",
"type": "onChat",
"label": "openCrmFlow",
"action": {
"type": "openCrmFlow",
"name": "Create_New_Case",
"args": [
{
"name": "input_ContactId",
"type": "String",
"value": "{recordId}"
},
{
"name": "input_Channel",
"type": "String",
"value": "{channel}"
},
{
"name": "input_Skill",
"type": "String",
"value": "{skill}"
}
]
},
"match": "singleMatch",
"display": "global",
"enabled": true
}
|
Important: Replace <workflow_id>
with the unique workflow id (see note under step 11 above).
Supported Variables
The following variables can be used in workflows using trigger types other than webLink
.
Table 1. Workflow variables supported in Manage Workflows (workflows other than webLink). Additional variables configured in the Attached Data feature are made available on the Chat object.
Available on the Chat object.
Property | Description |
---|
recordId | Unique identifier assigned by the CRM to the matched record from the CRM. For example, a contact, account, or lead. |
recordName | Name of the matched record from the CRM. For example, the name of the contact, account, or lead. |
recordEmail | Email address associated with the matched record from the CRM. |
recordPhone | Phone number associated with the matched record from the CRM. |
recordType | Type of CRM record for the matched record. For example, a contact, lead, or account. |