This article explains how to configure and use Policy Operation Tags (Policy Tags) to route records (like Leads or Accounts) to the correct queues within Fullcast based on specific field values from Salesforce.
Overview
Policy Operation Tags (or Policy Tags) help match records, like Leads, to the correct routing queues in Fullcast. More specifically, policy tags reference specific record fields — such as Lead Source, Industry, or Lead Score. For instance, you might route Leads from a 'Demo' request differently than those from an 'Event', or apply different routing rules for 'High' score Leads in the 'Tech' industry compared to 'Low' score ones.
How do Policy Tags work?
Policy Tags connect record data from Salesforce to Fullcast routing logic through three key concepts:
Tag String: A combined string of multiple record field values, created within a Salesforce Flow.
Tag Expression: An expression defined in a Fullcast Routing Policy that uses specific syntax to match incoming Tag Values, determining which policy runs.
Tag Value: The actual string generated by the Flow at runtime for a specific record (e.g.,
Demo||Tech||High
). This value is passed to Fullcast.
Step 1: Construct the Tag String in Salesforce Flow
To enable Fullcast to evaluate multiple fields for routing, combine their values into a single Tag String within your Salesforce Flow. This string is then passed to the Fullcast Policy Handler Apex action.
Identify Routing Fields: Determine which fields on the record you need to evaluate for routing decisions.
Combine Fields in Flow:
Use a Flow Formula resource or the
CONCAT()
function to join the API names of the desired fields.Separate each field value in the string with double pipes (
||
).Example Formula (Lead Source, Industry, Lead Score):
CONCAT({!$Record.LeadSource}, "||", {!$Record.Industry}, "||", TEXT({!$Record.Lead_Score__c}))
(Note: Ensure numeric or other non-text fields are converted to text, e.g., using
TEXT()
).
Note: Order Matters
The order you place fields in the Tag String matters. You must use the same order when creating Tag Expressions.
Pass String to Fullcast: Map the output of your formula resource to the inputVal1 field within the Fullcast Policy Handler Apex action in your Flow. (See Images below for Example of Formula Editor for inputVal1 and Example of Policy Handler Apex Action in Flow Builder)
(Optional) Store Tag String on Record: For easier debugging, you can first save the concatenated string to a custom text field on the Salesforce object (e.g.,
Lead.Tag_String__c
) using a Flow assignment step and then reference this custom field in inputVal1.(Optional) Enable Wildcards: If you plan to use wildcard matching (
*
) in your Fullcast Tag Expressions, set the inputVal4 field in the Fullcast Policy Handler action:Type:
String
Value:
WILDCARD
.png)
Example of Formula Editor for inputVal1.
.png)
Example of Policy Handler Apex Action in Flow Builder.
Step 2: Create Tag Expressions in the Fullcast Routing Policy
Within your Fullcast Routing Policy, define Tag Expressions to match the incoming Tag Values from Salesforce. This determines which specific policy or queue the record should be routed to.
Matching Numeric Values
Use this for conditions like "Lead Score is greater than 50" or "Lead Score is between 25 and 75".
Syntax:
Enclose numeric expressions in square brackets
[]
.Use commas to separate operators and values.
Do not use spaces.
Supported Operators:
equals
=
not equals
!=
less than
<
less than or equal to
<=
greater than
>
greater than or equal to
>=
between
(exclusive).
Examples:
[>=,1000]
: Matches values greater than or equal to 1000.[between,0,1000]
: Matches values greater than 0 and less than 1000.[*]
: Matches any numeric value, including null (use only ifinputVal4
is set toWILDCARD
in the Flow).[~]
: Matches only null values.
Matching String Values
Use this for conditions like "Industry is Technology" or "Lead Source is Web or Event".
Syntax:
For a single value, just enter the string (case-sensitive). Example:
Technology
For OR conditions (that is, scenarios where multiple values are acceptable), enclose a comma-separated list of strings within curly brackets
{ }
. Example:{Web,Event}
Case Sensitivity: String matching is case-sensitive.
Web
will not matchweb
.""
'
Examples:
Hot
: Matches only the exact string "Hot".{Hot,Warm}
: Matches either "Hot" or "Warm".{*}
: Matches any string value, including null{~}
: Matches only null values.
Using Wildcards
Wildcards provide flexibility in matching.
*
: Matches any character(s) or lack thereof within its position. Can be used for numeric[*]
or string{*}
matching when enabled.?
: Matches a single character.{???}
matches exactly three characters.~
: Specifically matchesnull
or empty values ([~]
).
Caution: Wildcards Cannot be in First Position in a Tag Expression
A wildcard
*
cannot be the first item in your Tag Expression if it's part of a concatenated string. The first item must be a specific string value for matching. To work around this, always start your Tag String in the Salesforce Flow with a fixed identifier. Examples: RouteLead or RouteAccount.
Concatenating String and Numeric Expressions
Combine different match types using double pipes ||
, mirroring the structure of your Tag String from the Flow.
Syntax Examples:
FixedString||[NUMERIC_EXPRESSION]||{STRING_LIST}
FixedString||{STRING_LIST}||[NUMERIC_EXPRESSION]
Example Usage
Assuming a Tag String like
RouteLead||{!$Record.Industry}||{!$Record.Lead_Score__c}
:To match Leads in the 'Technology' industry with a score >= 75:
RouteLead||Technology||[>=,75]
To match Leads from 'Finance' or 'Banking' industries with any score:
RouteLead||{"Finance","Banking"}||[*]
To match Leads from any Industry except 'Healthcare' with a score between 50 and 100:
RouteLead||[*]||[between,50,100]
(Requires a separate policy or logic to exclude Healthcare).
Important Considerations for Tag Expressions
Matching Precedence: Fullcast evaluates more specific Tag Expressions before broader ones. If one policy uses the tag expression
RouteLead||USA||[*]
and another usesRouteLead||*||[*]
, a lead with the Tag ValueRouteLead||USA||50
will match the first, more specific tag expression.First Element Restriction: The very first item of a concatenated Tag Expression must be a static string for direct comparison; it cannot be a numeric range, list, or wildcard. Example:
RouteLead
is valid, but[>=,50]||Technology
is not a valid start.Concatenation Separator: Always use
||
to separate segments in the Tag Expression. Do not use commas between concatenated groups.