Newer Version Available

This content describes an older version of this product. View Latest

Flow

Represents the metadata associated with a flow. With Flow, you can create an application that navigates users through a series of screens to query and update records in the database. You can also execute logic and provide branching capability based on user input to build dynamic applications.

For information about the corresponding UI-based flow building tool, see “Cloud Flow Designer” in the Salesforce Help.

When using the file-based Metadata API to work with flows, consider that:
  • You can’t use Metadata API to access a flow installed from a managed package.
  • Flow filenames shouldn’t contain spaces, which can cause errors at deployment. Heading and trailing spaces are allowed, but are trimmed during deployment.
  • You can’t overwrite an active flow or one that was once active when deploying a flow using Metadata API.
  • You can create a new version of a flow by giving the file a new version number and deploying it.

Don't edit the metadata of retrieved Process Builder processes (Flow components whose processType is Workflow or InvocableProcess.) If you deploy process metadata that you've edited, you might not be able to open the process in the target org.

Warning

Declarative Metadata File Suffix and Directory Location

Flows are stored in the Flow directory of the corresponding package directory. The file name matches the flow’s unique full name, and the extension is .flow.

Version

The flow Metadata API is available in API version 24.0 and later.

Flow

This metadata type represents a valid definition of a flow. This type extends the Metadata metadata type and inherits its fullName field.

Field Name Field Type Description
actionCalls FlowActionCall[] An array of nodes that define calls to actions. This field is available in API version 31.0 and later.
apexPluginCalls FlowApexPluginCall[] An array of nodes that define calls to Apex plug-ins.
assignments FlowAssignment[] An array of assignment nodes.
choices FlowChoice[] An array of static choice options.
constants FlowConstant[] An array of constants.
decisions FlowDecision[] An array of decision nodes.
description string Description of the flow.
dynamicChoiceSets FlowDynamicChoiceSet[] An array that constructs a set of choice options based on a database lookup.
formulas FlowFormula[] An array of formulas.
fullName string Required; inherited from the Metadata component. Name of the file in Metadata API.
The fullName consists of two parts, separated by a hyphen:
  • Unique name for the flow that contains only underscores and alphanumeric characters. It must be unique across the organization, begin with a letter, not include spaces, not end with an underscore, and not contain two consecutive underscores.
  • Version number for the flow.

For example, “sampleFlow-3” specifies version 3 of the flow whose unique name is sampleFlow.

The version number must be 1 or higher.

interviewLabel string Label for the interview. This label helps users and administrators differentiate interviews from the same flow.

In the user interface, this label appears in the Paused Flow Interviews component on the user’s Home tab and in the Paused and Waiting Interviews list on the flow management page.

label string Required. Label for the flow.
loops FlowLoop[] An array of nodes for iterating through collections. This field is available in API version 30.0 and later.
processMetadataValues FlowMetadataValue[] Metadata values for the flow.

This field is available in API version 31.0 and later.

processType FlowProcessType (enumeration of type string) The type of the flow, as determined by the active version (or latest version, if there’s no active version). Valid values are:
  • AutoLaunchedFlow—A flow that doesn’t require user interaction.
  • Flow—A flow that requires user interaction because it contains one or more screens, choices, or dynamic choices. In the UI and Salesforce Help, it’s a screen flow.
  • FieldServiceMobile—A flow for the Field Service Lightning mobile app. This value is available in API version 39.0 and later.
  • FieldServiceWeb—A flow for Snap-ins Appointment Booking. Its UI label is Field Service Snap-In Flow. This value is available in API version 41.0 and later.
  • Workflow—A process that is invoked when a record is created or edited. In the UI and Salesforce Help, it’s a record change process.
  • InvocableProcess—A process that can be invoked by another process or the Invocable Actions resource in the REST API. This value is available in API version 38.0 and later.
  • CustomEvent—A process that is invoked when a platform event occurs. In the UI, it’s an event process. This value is available in API version 41.0 and later.
These values are reserved for future use.
  • ActionPlan
  • JourneyBuilderIntegration
  • LoginFlow
  • OrchestrationFlow
  • TransactionSecurityFlow
  • UserProvisioningFlow

Across versions, you can change the type from Flow to AutolaunchedFlow or vice versa.

This field is available in API version 31.0 and later.

recordCreates FlowRecordCreate[] An array of nodes for creating records in the database.
recordDeletes FlowRecordDelete[] An array of nodes for deleting records in the database.
recordLookups FlowRecordLookup[] An array of nodes for looking up records in the database.
recordUpdates FlowRecordUpdate[] An array of nodes for updating records in the database.
screens FlowScreen[] An array of screen nodes.
stages FlowStage[] An array of stages that can be used throughout the flow.
startElementReference string Specifies which node or element is the starting point in the flow.
steps FlowStep[] An array of step nodes.
subflows FlowSubflow[] An array of subflows. This field is available in API version 25.0 and later.
textTemplates FlowTextTemplate[] An array of text templates.
variables FlowVariable[] An array of variable definitions.
waits FlowWait[] An array of wait nodes. This field is available in API version 32.0 and later.

FlowActionCall

Defines a call to an action from the flow. It extends FlowNode.

Available in API version 31.0 and later.

Field Name Field Type Description
actionName string Required. Name for the action. Must be unique across actions with the same actionType.
actionType InvocableActionType (enumeration of type string) Required. The action type. Valid values are:
  • activateSessionPermSet—activates a session-based permission set for the running user.
  • apexinvokes an Apex method that has the @invocableMethod annotation
  • chatterPost—posts to Chatter
  • choosePricebook—selects a price book
  • contentWorkspaceEnableFolders—enables folders in a library
  • deactivateSessionPermSet—deactivates a session-based permission set for the running user.
  • emailAlert—sends an email by referencing a workflow email alert
  • emailSimple—sends an email by using flow resources
  • flow—invokes an autolaunched flow. This action type isn’t available for flows with a processType of “Flow” or “AutolaunchedFlow”. To invoke an autolaunched flow from one of those types, use FlowSubflow. Available in API version 32.0 and later.
  • generateWorkOrders—creates a new work order record. Available in API version 42.0 and later.
  • quickAction—invokes a QuickAction
  • submit—submits a record for approval
These values are reserved for future use.
  • thanks
  • metricRefresh
connector FlowConnector Specifies which node to execute after this action call.
faultConnector FlowConnector Specifies which node to execute if the action call results in an error.
inputParameters FlowActionCallInputParameter[] An array of input parameters from the flow to the action.
outputParameters FlowActionCallOutputParameter[] An array of output parameters from the action to the flow.

FlowActionCallInputParameter

Defines an input parameter from the flow to the action. It extends FlowBaseElement and inherits all its fields. Available in API version 31.0 and later.

Field Name Field Type Description
name string Required. Unique name for the input parameter.
value FlowElementReferenceOrValue Defines the value of the input parameter.

FlowActionCallOutputParameter

Defines an output parameter from the action to the flow. It extends FlowBaseElement and inherits all its fields. Available in API version 31.0 and later.

Field Name Field Type Description
assignToReference string Required. Specifies the variable to which you want to assign the output parameter value.
name string Required. Unique name for the output parameter.

FlowApexPluginCall

Defines a call to an Apex plug-in from the flow. It extends FlowNode and inherits all its fields.

Field Name Field Type Description
apexClass string Required. The name of the Apex class.
connector FlowConnector Specifies which node to execute after this Apex plug-in call.
faultConnector FlowConnector Specifies which node to execute if the Apex plug-in call results in an error.
inputParameters FlowApexPluginCallInputParameter[] An array of input parameters from the flow to the Apex plug-in.
outputParameters FlowApexPluginCallOutputParameter[] An array of output parameters from the Apex plug-in to the flow.

FlowApexPluginCallInputParameter

Defines an input parameter from the flow to the Apex plug-in. It extends FlowBaseElement and inherits all its fields.

Field Name Field Type Description
name string Required. Unique name for the input parameter.
value FlowElementReferenceOrValue Defines the value of the input parameter.

FlowApexPluginCallOutputParameter

Defines an output parameter from the Apex plug-in to the flow. It extends FlowBaseElement and inherits all its fields.

Field Name Field Type Description
assignToReference string Required. Specifies the variable to which you want to assign the output parameter value.
name string Required. Unique name for the output parameter.

FlowAssignment

Defines an assignment node that can dynamically change the value of a variable in the flow. It extends FlowNode and inherits all of its fields.

Field Name Field Type Description
assignmentItems FlowAssignmentItem[] An array of assignment operations that is executed in the given order, starting from the index 0.
connector FlowConnector Specifies which node to execute after this assignment node.

FlowAssignmentItem

Defines an operation to apply to a variable. It extends FlowBaseElement and inherits all its fields.

Field Name Field Type Description
assignToReference string Required. Reference to the variable to which you want to apply the specified operator.
operator FlowAssignmentOperator (enumeration of type string) Required. Operation to apply to the variable reference in the assignToReference field. Valid values are:
  • Assign–assigns the specified value to the variable in the assignToReference field.
  • Add–adds the specified value to the variable in the assignToReference field.
  • AddItem–adds the specified value as a new item to the variable in the assignToReference field. Supported for only variables that have a data type of Multipicklist. This operator automatically adds the semi-colon required to mark a value as a separate item. This operator is available in API version 34.0 and later.
  • Subtract–subtracts the specified value from the variable in the assignToReference field.
value FlowElementReferenceOrValue Defines the value that you want the operator to apply to the variable reference in the assignToReference field.

FlowChoice

A choice resource is a standalone choice option that you can reference or reuse throughout the flow. It extends FlowElement and inherits all of its fields.

Field Name Field Type Description
choiceText string Required. Choice label to display in the screen.
dataType FlowDataType (enumeration of type string) Required. Valid types are:
  • Currency
  • Date
  • Number
  • String
  • Boolean
userInput FlowChoiceUserInput Enables the choice to allow user input when the choice is selected. Not supported for choices in multi-select fields.
value FlowElementReferenceOrValue Actual value that’s used during flow execution, for example, in assignments, calls to Apex plug-ins, and record elements. If null, this choice always has the value of null.

FlowChoiceUserInput

Allows the choice to include a user input field that appears when the choice is selected by the user. User input isn’t supported for choices in multi-select fields. It extends FlowBaseElement and inherits all its fields.

Field Name Field Type Description
isRequired boolean Indicates whether users are required to enter something into the field when they select the choice.
promptText string Text that is displayed to prompt the user for input at runtime. Supports merge fields.
validationRule FlowInputValidationRule Rule used at runtime to validate the user input.

FlowCondition

Defines a condition for a rule. It extends FlowBaseElement and inherits all its fields.

Field Name Field Type Description
leftValueReference string Required. Unique name of the element that serves as the left side of the condition expression.
operator FlowComparisonOperator (enumeration of type string) Required. Valid values are:
  • EqualTo
  • NotEqualTo
  • GreaterThan
  • LessThan
  • GreaterThanOrEqualTo
  • LessThanOrEqualTo
  • StartsWith
  • EndsWith
  • Contains
  • IsNull
  • WasSet—This value is available in API version 30.0 and later.
  • WasSelected—Requires a choice on the left side.
  • WasVisited—Requires a node on the left side.
rightValue FlowElementReferenceOrValue Unique name of an element or the actual value (such as text or a number) for the right side of the condition expression.

FlowConnector

Connectors determine the order in which the nodes of the flow are executed. A connector defines and links to the subsequent node. It extends FlowBaseElement and inherits all its fields.

Field Name Field Type Description
targetReference string Required. Which node to execute after completing the current node.

FlowConstant

A constant resource defines a fixed value that can be used throughout your flow. It extends FlowElement and inherits all of its fields.

Field Name Field Type Description
dataType FlowDataType (enumeration of type string) Required. Valid types are:
  • Currency
  • Date
  • Number
  • String
  • Boolean
value FlowElementReferenceOrValue Default value of the constant. This field can't have merge fields, nor can it reference another resource besides $GlobalConstant.EmptyString.

FlowDecision

Decision node that evaluates a set of rules and routes the flow execution based on the first rule that evaluates to true. It extends FlowNode and inherits all its fields.

Field Name Field Type Description
defaultConnector FlowConnector Specifies which node to execute if none of the rules evaluate to true.
defaultConnectorLabel string Label for the default connector.
rules FlowRule[] An array of rules for the decision. The rules are evaluated in the order they're listed, and the connector of the first true rule is used. If no rules are true, then the default connector is used. In the Cloud Flow Designer, rules are referred to as “outcomes.”

FlowDynamicChoiceSet

Looks up data or metadata from an sObject and dynamically generates a set of choices at run time. It extends FlowElement and inherits all of its fields. Depending on the fields that are set, this element represents either a record choice or a picklist choice.
  • A record choice dynamically generates choices based on records that meet specified filter criteria. If a dynamic choice doesn’t have the picklistField and picklistObject parameters set, it is a record choice and can’t have a data type of Picklist or Multipicklist.
  • A picklist choice dynamically generates choices based on the available values for a picklist or multi-select picklist field. If a dynamic choice has the picklistField and picklistObject parameters set, it is a picklist choice and must have a data type of Picklist or Multipicklist.
Field Name Field Type Description
dataType FlowDataType (enumeration of type string) Required. Valid types are:
  • Currency
  • Date
  • Number
  • String
  • Boolean
  • Picklist—Picklist choices only
  • Multipicklist—Picklist choices only

Picklist and Multipicklist are available in API version 35.0 and later.

displayField string Required for record choices. Which field from the sObject to display to the user as choice labels.

For example, for an account, use the DisplayField “Name” if you want the dynamically generated choices to be displayed as the account names from the records that are retrieved from the database.

Not supported for picklist choices. Picklist choices always display the labels for the retrieved picklist values.

filters FlowRecordFilter[] An array of filters to apply to the records that are retrieved from the database. For example, filter accounts to include only the accounts that were created in the past three months.

Not supported for picklist choices.

limit int Maximum number of choices to include in the generated set of choices. Maximum and default: 200.

If sortField and sortOrder are also specified, the records are sorted before the limit takes effect.

This field is available in API version 25.0 and later.

object string Required for record choices. The sObject whose fields you want to retrieve from the database and use to generate the set of choices. For example, use “Account” to dynamically generate choices from the information in account records in the database.

Not supported for picklist choices.

outputAssignments FlowOutputFieldAssignment[] An array that assigns fields from the user-selected record to variables that can be used elsewhere in the flow. For example, when the user selects an account name from the dynamically generated list of choice options, outputAssignments can assign the Id and AnnualRevenue from the user-selected account to variables that you specify.

Not supported for picklist choices.

picklistField string Required for picklist choices. The field whose available values you want to retrieve from the database and use to generate the picklist choice. For example, use “Industry” to dynamically generate one choice for each available value on the Industry picklist field.

Not supported for record choices.

This field is available in API version 35.0 and later.

picklistObject string Required for picklist choices. The sObject whose field metadata you want to retrieve from the database and use to generate the picklist choice. For example, use “Account” to dynamically generate choices from a picklist field on the Account object.

Not supported for record choices.

This field is available in API version 35.0 and later.

sortField string Field that is used for sorting the records that meet the filter criteria. If this field isn’t specified then the returned records are not sorted.

You can only sort records by fields that have the Sort API field property, as specified in SOAP API.

Not supported for picklist choices.

This field is available in API version 25.0 and later.

sortOrder SortOrder (enumeration of type string) Order in which to sort the records. If this field isn’t specified, then the results are not sorted.
Valid values are:
  • Asc—Ascending
  • Desc—Descending

Not supported for picklist choices.

This field is available in API version 25.0 and later.

valueField string Stored value for the choice, which can differ from what is displayed to the user as the choice options (displayField). For example, the displayField might be the account “Name” while the valueField is the account “Id.”

Not supported for picklist choices. Picklist choices always store the API value for the retrieved picklist values.

FlowElement

Base class for all flow elements. This is an abstract class. It extends FlowBaseElement and inherits all its fields.

Field Name Field Type Description
description string Description of the flow element.
name string Required. Unique name of the flow element.

FlowBaseElement

Base class for all flow elements that require contextual information in metadata values. This is an abstract class. FlowBaseElement is available in API version 32.0 and later.

Field Name Field Type Description
processMetadataValues FlowMetadataValue[] Contextual information for the element.

FlowMetadataValue

Defines contextual information that can be passed between elements in a flow. Flow metadata values can be used in an application that produces or consumes flows. FlowMetadataValue is available in API version 31.0 and later.

Field Name Field Type Description
name string Required. Name for the metadata value. This name doesn’t need to be unique across all elements.
value FlowElementReferenceOrValue Reference or value for the metadata value.

FlowElementReferenceOrValue

Defines a reference to an existing element or a particular value that you specify. Make sure that you specify only one of the fields.

Field Name Field Type Description
booleanValue boolean Use this field to specify a boolean value. Do not use this field if you want to specify a different data type or an element reference.
dateTimeValue dateTime Use this field to specify a dateTime value. Do not use this field if you want to specify a different data type or an element reference. This field is available in API version 30.0 and later.
dateValue date Use this field to specify a date value. Do not use this field if you want to specify a different data type or an element reference.
elementReference string Use this field to specify the name of an existing element. Do not use this field if you want to specify a value instead of an element reference.
numberValue double Use this field to specify a double value. Do not use this field if you want to specify a different data type or an element reference.
stringValue string Use this field to specify a string value. Do not use this field if you want to specify a different data type or an element reference.

FlowFormula

Calculates a value using functions and elements in the flow. It extends FlowElement and inherits all its fields.

Field Name Field Type Description
dataType FlowDataType (enumeration of type string) The data type for the formula. Valid values are:
  • Boolean
  • Currency
  • Date
  • DateTime
  • Number
  • String

dataType defaults to Number if it isn’t defined in a formula.

This field is available in API version 31.0 and later.

expression string Required. Salesforce formula expression. The return value must match the data type. See “Limitations for Flow Formulas” in the Salesforce Help.

For API version 30.0 and earlier, the return value must be numeric.

scale int Scale of the return value, specifically, the number of digits to the right of the decimal point. Only supported for Currency and Number data types.

FlowInputFieldAssignment

Assigns the value for a record field based on a resource or static value. It extends FlowBaseElement and inherits all its fields.

Field Name Field Type Description
field string Required. Name of the field that is to be assigned a value while a record is being created or updated.
value FlowElementReferenceOrValue Value that is to be assigned to the field.

FlowInputValidationRule

Validation rules verify that the data entered by the user meets the specified requirements. If the validation rule evaluates to false, then the specified error message is displayed.

Field Name Field Type Description
errorMessage string Required. Error message to display when formulaExpression evaluates to false.
formulaExpression string Required. Boolean formula used to validate the user input. See “Limitations for Flow Formulas” in the Salesforce Help.

FlowLoop

A construct for iterating through a collection. It extends FlowNode and inherits all of its fields. FlowLoop is available in API version 30.0 and later.

Field Name Field Type Description
nextValueConnector FlowConnector Points to the element that the flow navigates to for each of the entries in the collection. This is where the flow goes for the next value in the collection.
noMoreValuesConnector FlowConnector Points to the element to navigate to when all entries in the collection have been looped through.
collectionReference string Required. The collection being looped through.
assignNextValueToReference string Required. The variable to which the current value in the collection is assigned before navigating to the target of nextValueConnector.
iterationOrder iterationOrder (enumeration of type string) Valid values are:
  • Asc—Iterate through the collection in the order the values are listed (first to last).
  • Desc—Iterate through the collection in the reverse order the values are listed (last to first).

FlowNode

A node is a type of element that is visible in the flow diagram. It extends FlowElement and inherits all its fields.

Field Name Field Type Description
label string Required. Name of the node. This non-unique label is different from the unique name of the node, which is inherited from FlowElement.
locationX int Required. Horizontal location of the node, in pixels from the left.
locationY int Required. Vertical location of the node, in pixels from the top.

FlowOutputFieldAssignment

Assigns a record field’s value from a record to a variable that can be used elsewhere in the flow. The record may be selected by a record lookup or via a user selection for a choice. It extends FlowBaseElement and inherits all its fields.

Field Name Field Type Description
assignToReference string Required. Reference to the variable where you want to store the value of the record field.
field string Required. Name of the field whose value is to be assigned after a record lookup.

FlowRecordCreate

Create a new record in the database using values from the flow. It extends FlowNode and inherits all its properties.

The flow record create, lookup, update, and delete operations are different from the CRUD-based metadata calls create(), retrieve(), update(), and delete(). The flow record methods apply to record operations from within a flow, which aren’t the same as doing any metadata calls to CRUD setup entities.

Note

Field Name Field Type Description
assignRecordIdToReference string Reference to the variable where you want to store the ID after the record is created.
connector FlowConnector Specifies which node to execute after creating the record.
faultConnector FlowConnector Specifies which node to execute if the attempt to create a record results in an error.
inputAssignments FlowInputFieldAssignment[] An array that assigns values to the specified fields of the record being created.
object string Required. sObject for the record to be created by this element
inputReference string Specifies the sObject variable whose field values are used to populate the new record’s fields.

FlowRecordDelete

Deletes one or more records in the database. It extends FlowNode and inherits all its fields.

The flow record create, lookup, update, and delete operations are different from the CRUD-based metadata calls create(), retrieve(), update(), and delete(). The flow record methods apply to record operations from within a flow, which aren’t the same as doing any metadata calls to CRUD setup entities.

Note

Field Name Field Type Description
connector FlowConnector Specifies which node to execute after deleting the record.
faultConnector FlowConnector Specifies which node to execute if the attempt to delete a record results in an error.
filters FlowRecordFilter[] An array that specifies the criteria used to select which records to delete from the database. For example, delete accounts whose last activity was older than a specified date.
object string Required. The name of the object whose records are deleted.
inputReference string Specifies the sObject variable whose record ID is used to identify which record to delete in the database.

FlowRecordFilter

Sets the criteria for searching records in the database. It extends FlowBaseElement and inherits all its fields.

Field Name Field Type Description
field string Required. The field to be used for filtering records.
operator FlowRecordFilterOperator (enumeration of type string) Required. Valid values are:
  • EqualTo
  • NotEqualTo
  • GreaterThan
  • LessThan
  • GreaterThanOrEqualTo
  • LessThanOrEqualTo
  • StartsWith
  • EndsWith
  • Contains
  • IsNull
value FlowElementReferenceOrValue Reference or value used with the field and operator to filter records.

FlowRecordLookup

Finds a record in the database and uses or stores the values from its fields in the flow. It extends FlowNode and inherits all of its fields.

The flow record create, lookup, update, and delete operations are different from the CRUD-based metadata calls create(), retrieve(), update(), and delete(). The flow record methods apply to record operations from within a flow, which aren’t the same as doing any metadata calls to CRUD setup entities.

Note

Field Name Field Type Description
assignNullValuesIfNoRecordFound boolean Specifies that all values are set to null if the record is not found. This field is available in API version 30.0 and later.
connector FlowConnector Specifies which node to execute after completing the record lookup.
faultConnector FlowConnector Specifies which node to execute if the attempt to look up a record results in an error.
filters FlowRecordFilter[] An array that specifies the criteria used to select the record from the database.

If the filters return more than one record, they are sorted according to the specified sortField and sortOrder. The first record in the sorted list is then selected.

If either the sortField or sortOrder is not specified, then the first record returned is selected. Note, however, that records are not returned in any particular order.

limit int The maximum number of records to return, to limit the amount of data received. This field is available in API version 30.0 and later.
object string Required. Name of the sObject from which to select the record.
outputAssignments FlowOutputFieldAssignment[] An array that assigns fields from the selected record to variables that can be used elsewhere in the flow.
outputReference string Specifies the sObject variable that stores the queried fields’ values.
queriedFields string[] An array that specifies which fields from the selected record is saved to the specified sObject variable.
sortField string Field that is used for sorting the records that meet the filter criteria. If this field isn’t specified then the returned records are not sorted.

You can only sort records by fields that have the Sort API field property, as specified in SOAP API.

This field is available in API version 25.0 and later.

sortOrder SortOrder (enumeration of type string) Order in which to sort the records. If this field isn’t specified, then the results are not sorted.
Valid values are:
  • Asc—Ascending
  • Desc—Descending

This field is available in API version 25.0 and later.

FlowRecordUpdate

Finds records in the database and updates them with values from the flow. It extends FlowNode and inherits all of its fields.

The flow record create, lookup, update, and delete operations are different from the CRUD-based metadata calls create(), retrieve(), update(), and delete(). The flow record methods apply to record operations from within a flow, which aren’t the same as doing any metadata calls to CRUD setup entities.

Note

Field Name Field Type Description
connector FlowConnector Specifies which node to execute after completing the record update.
faultConnector FlowConnector Specifies which node to execute if the attempt to update a record results in an error.
filters FlowRecordFilter[] An array that specifies the criteria used to select the records to update in the database.
inputAssignments FlowInputFieldAssignment[] An array that assigns values to the specified fields of the record being updated.
object string Required. Name of the sObject whose records are updated.
inputReference string Specifies the sObject variable whose field values are used to update the record’s fields.

FlowRule

Defines the conditions and logic that would enable a rule to evaluate to true. It extends FlowElement and inherits all of its fields.

Field Name Field Type Description
conditionLogic string Specifies logic for the conditions. Value can be:
  • and—evaluates to true only if all its conditions evaluate to true
  • or—evaluates to true if any of its conditions evaluate to true
  • Advanced logic like 1 AND (2 OR 3)—evaluates to true if the first condition is true and either the second or third condition is true

    When you use advanced logic, the string must consist of 1,000 or fewer characters.

Advanced logic is available in API version 33.0 and later.
conditions FlowCondition[] An array of conditions for the rule.
connector FlowConnector Specifies which node to execute if this is the first rule that evaluates to true in a decision.
label string Required. Label for the connector.

FlowScreen

Screens provide the ability to capture information from users and display information to users. It extends FlowNode and inherits all its fields.

Field Name Field Type Description
allowBack boolean Indicates whether to show (true) or hide (false) the Previous button on the screen at runtime. When true, the Previous button appears only if the user visited a previous screen in the flow path and if showFooter for the screen is set to true. Set this to false when revisiting the previous screen would trigger an action that should not be repeated, such as a credit card transaction.

This field is available in API version 26.0 and later.

Default: true

You can set either allowBack or allowFinish to false, but not both.

allowFinish boolean Indicates whether to show (true) or hide (false) the Finish button on the screen at runtime. When true, the Finish button appears only if the screen element is the end of a flow path and if showFooter for the screen is set to true. Set this to false if you need the user to go back to a previous screen to continue or complete the flow. For example, you wouldn’t want to offer a Finish button on a screen that tells the user to go back and make corrections on a previous screen.

This field is available in API version 26.0 and later.

Default: true

You can set either allowBack or allowFinish to false, but not both.

allowPause boolean Indicates whether to show (true) or hide (false) the Pause button on the screen at runtime. The default value is true.
A flow screen displays the Pause button if all the following conditions are true.
  • In the organization’s process automation settings, Let users pause flows is enabled.
  • allowPause for the screen is set to true.
  • If the flow is embedded in a Visualforce page, the <flow:interview> component has its showAllowPause attribute set to true.
  • The showFooter field for the screen is set to true.

This field is available in API version 33.0 and later.

connector FlowConnector Specifies which node to execute after the screen node.
fields FlowScreenField[] An array of fields to display on the screen.
helpText string Text that appears if the end user clicks a link for help text.

Supports merge fields in API version 26.0 and later.

pausedText string Confirmation message that appears when an end-user clicks Pause.

This field is available in API version 33.0 and later.

rules FlowScreenRule[] Reserved for future use.
showFooter boolean Indicates whether to show (true) or hide (false) the screen’s footer at Lightning runtime. Classic runtime isn’t supported. The default value is true.

The footer includes navigation actions for the screen. If showFooter is hidden, use Lightning components on the screen to show navigation actions.

This field is available in API version 42.0 and later.

showHeader boolean Indicates whether to show (true) or hide (false) the screen’s header at Lightning runtime. Classic runtime isn’t supported. The default value is true.

The header includes access to help text for the screen. If showHeader is hidden, use Lightning components on the screen to show help text.

This field is available in API version 42.0 and later.

FlowScreenField

Configurable field on a screen. It extends FlowElement and inherits all its fields.

Field Name Field Type Description
choiceReferences string[] An array of references to FlowChoices or FlowDynamicChoiceSets. The resulting choice options appear in the order specified in this array, where the element at index 0 provides the top-most choice option. Supported for the following screen field types:
  • RadioButtons
  • DropdownBox
  • MultiSelectCheckboxes
  • MultiSelectPicklist

Multi-select checkboxes and multi-select picklist fields are available in API version 26.0 and later.

dataType FlowDataType (enumeration of type string) Required. Data type of this screen field. Only supported for the InputField, RadioButtons, and DropdownBox screen field types. Valid types are:
  • Currency
  • Date
  • Number
  • String
  • Boolean

A boolean InputField appears as a checkbox field at runtime. Checkbox input fields are available in API version 26.0 and later.

Only the string data type is supported for multi-select checkboxes and multi-select picklist fields. Multi-select fields are available in API version 26.0 and later.

defaultSelectedChoiceReference string The name of the FlowChoice element to use as the default value for the screen field. Supported for the following screen field types:
  • RadioButtons
  • DropdownBox
  • MultiSelectCheckboxes
  • MultiSelectPicklist

For DropdownBox field types only, if the defaultSelectedChoiceReference is empty or null, the reference at index 0 of choiceReferences are used as the default value.

You can specify only one FlowChoice element as the default value for multi-select checkboxes and multi-select picklist fields. Multi-select fields are available in API version 26.0 and later.

defaultValue FlowElementReferenceOrValue The value that is used by default when this screen field requires users to provide input. Only supported for InputField, LargeTextArea, and PasswordField.
extensionName string The name of the Lightning component to display. This field is available in API version 42.0 and later.
fieldText string Field label that is displayed on the screen. Supports merge fields.
fieldType FlowScreenFieldType (enumeration of type string) Required. Valid values are:
  • DisplayText
  • InputField
  • LargeTextArea
  • PasswordField
  • RadioButtons
  • DropdownBox
  • MultiSelectCheckboxes
  • MultiSelectPicklist
  • ComponentInstance

At runtime, each multi-select field stores its field value as a concatenation of the user-selected choice values, separated by semicolons. Any semicolons in the selected choice values are removed when added to the multi-select field value.

Multi-select checkboxes and multi-select picklist fields are available in API version 26.0 and later. Lightning component fields are available in API version 42.0.

helpText string Required. Text that appears if the end user clicks the help icon (info) for the screen field.

Supports merge fields in API version 26.0 and later.

inputParameters FlowScreenFieldInputParameter[] An array of input parameters. Supported only when fieldType is ComponentInstance.

This field is available in API version 42.0 and later.

isRequired boolean Indicates whether the user must select a choice or provide input. Not supported for DisplayText or boolean inputField.
isVisible boolean Reserved for future use. .
outputParameters FlowScreenFieldOutputParameter[] An array of output parameters. Supported only when fieldType is ComponentInstance.

This field is available in API version 42.0 and later.

scale int The scale of this screen field if its data type is number or currency. The scale sets the number of digits to the right of the decimal point.
validationRule FlowInputValidationRule Rule used to validate the user input when this screen field is of type InputField, LargeTextArea, or PasswordField.

FlowScreenFieldInputParameter

Defines an input parameter from the flow to the extension. It extends FlowBaseElement and inherits all its fields. FlowScreenFieldInputParameter is available in API version 42.0.

Field Name Field Type Description
name string Required. Unique name for the input parameter.
value string Defines the value of the input parameter.

FlowScreenFieldOutputParameter

Defines an output parameter from the extension to the flow. It extends FlowBaseElement and inherits all its fields. FlowScreenFieldOutputParameter is available in API version 42.0.

Field Name Field Type Description
assignToReference string Required. Specifies the variable to which you want to assign the output parameter value.
name string Required. Unique name for the output parameter.

FlowStage

A section of your flow that can be represented in the UI, such as with breadcrumbs. It extends FlowElement and inherits all its fields.

When an interview starts, any stages where isActive is true are added to the $Flow.ActiveStages system variable, which holds a collection of stages. Each stage’s stageOrder determines the order they’re added in. The stage with the lowest stageOrder is assigned to the $Flow.CurrentStage system variable.

Field Name Field Type Description
isActive boolean Indicates whether the stage is active by default.
label string A user-friendly label for this stage.
stageOrder int Indicates how the stage should be ordered against other stages. The stageOrder value must be unique within the flow.

FlowStep

Steps function as placeholders when you're building a flow. It extends FlowNode and inherits all its fields.

Field Name Field Type Description
connectors FlowConnector[] Specifies which node to execute after the step node.

FlowSubflow

A subflow element references another flow, which it calls at run time. The flow that contains the subflow element is referred to as the master flow. FlowSubflow extends FlowNode and inherits all of its fields. It is available in API version 25.0 and later.

Field Name Field Type Description
connector FlowConnector Specifies which node to execute after the subflow.
flowName string References the flow to call at runtime. The value must be a unique name of a flow and can’t contain an appended hyphen and version number. The referenced flow must have been created in the Cloud Flow Designer.
inputAssignments FlowSubflowInputAssignment[] An array of input variable assignments that are set at the start of the referenced flow.
outputAssignments FlowSubflowOutputAssignment[] An array of output variable assignments that are set at the end of the referenced flow.

FlowSubflowInputAssignment

Assigns an element or value from the master flow to a variable in the referenced flow. Input assignments occur when the subflow calls the referenced flow. It extends FlowBaseElement and inherits all its fields. It is available in API version 25.0 and later.

Field Name Field Type Description
name string Required. Unique name for the variable in the referenced flow.
value FlowElementReferenceOrValue Defines the value to assign to the variable.

FlowSubflowOutputAssignment

Assigns the value of a variable from the referenced flow to a variable in the master flow. Output assignments occur when the referenced flow is finished running. It extends FlowBaseElement and inherits all its fields. It is available in API version 25.0 and later.

Field Name Field Type Description
assignToReference string Required. Unique name for the variable in the master flow.
name string Required. Unique name for the variable in the referenced flow.

FlowTextTemplate

Defines a text template that can be used throughout the flow. It extends FlowElement and inherits all its fields.

Field Name Field Type Description
text string Actual text of the template. Supports merge fields.

FlowVariable

Variables allow you to create updatable values to use in the flow. FlowVariable extends FlowElement and inherits all its fields.

Field Name Field Type Description
dataType FlowDataType (enumeration of type string) Required. Valid types are:
  • Boolean
  • Currency
  • Date
  • DateTime—This value is available in API version 30.0 and later.
  • Number
  • Multipicklist—This value is available in API version 34.0 and later.
  • Picklist—This value is available in API version 34.0 and later.
  • String
  • sObject
isCollection boolean Indicates whether the variable is a collection of values. This field is available in API version 30.0 and later. In API version 32.0 and later, a collection variable can be of any data type.

Default value is False.

isInput boolean Indicates whether the variable can be set at the start of the flow using URL parameters, Visualforce controllers, or subflow inputs. This field is available in API version 25.0 and later.
Default value:
  • False for a variable created in API version 25.0 and later or in the Cloud Flow Designer in Summer ’12 and later.
  • True for a variable created in API version 24.0 or in the Cloud Flow Designer in Spring ’12 and earlier.

Disabling input or output access for an existing variable can break the functionality of applications and pages that call the flow and access the variable. For example, you can access variables from URL parameters, Visualforce controllers, subflows, and processes.

Warning

isOutput boolean Indicates whether the variable’s value can be accessed from Visualforce controllers and other flows. This field is available in API version 25.0 and later.
Default value:
  • False for a variable created in API version 25.0 and later or in the Cloud Flow Designer in Summer ’12 and later.
  • True for a variable created in API version 24.0 or in the Cloud Flow Designer in Spring ’12 and earlier.

Disabling input or output access for an existing variable can break the functionality of applications and pages that call the flow and access the variable. For example, you can access variables from URL parameters, Visualforce controllers, subflows, and processes.

Warning

objectType string Object type of this variable if its data type is sObject.
scale int Scale of this variable if its data type is Number or Currency.
value FlowElementReferenceOrValue Default value of this variable.

Default values aren’t supported if the variable’s data type is Picklist or Multipicklist.

FlowWait

Waits for one or more defined events to occur. FlowWait extends FlowNode and inherits all its fields. FlowWait is available in API version 32.0 and later.

Field Name Field Type Description
defaultConnector FlowConnector Specifies which node to execute if the conditions are false for every event in the Wait element.
defaultConnectorLabel string Label for the default connector.
faultConnector FlowConnector Specifies which node to execute if the attempt to wait results in an error. If any of the wait events fail, the flow takes the fault connector.
waitEvents FlowWaitEvent[] An array of events that the Wait element is waiting for.

If the conditions for every event evaluate to false, the defaultConnector is used.

FlowWaitEvent

An event that a FlowWait element is waiting for. FlowWaitEvent extends FlowElement and inherits all its fields. FlowWaitEvent is available in API version 32.0 and later.

Field Name Field Type Description
conditionLogic string Specifies logic for the conditions. Value can be:
  • and—evaluates to true only if all its conditions evaluate to true
  • or—evaluates to true if any of its conditions evaluate to true
  • Advanced logic like 1 AND (2 OR 3)—evaluates to true if the first condition is true and either the second or third condition is true

    When you use advanced logic, the string must consist of 1,000 or fewer characters.

Advanced logic is available in API version 33.0 and later.
conditions FlowCondition[] An array of conditions that must be true for the flow to wait for this event.
connector FlowConnector Specifies which node to execute if this is the first event that occurs.
eventType string Required. The event’s type. The type determines which input parameters are available to define this event. Valid values are:
  • AlarmEvent—This event is an alarm based off of an absolute date/time value.
  • DateRefAlarmEvent—This event is an alarm based off of a date/time field on a record.
inputParameters FlowWaitEventInputParameter[] An array of the event’s input parameters. The parameter values are set by using values from the flow.
label string Required. Label for the wait event.
outputParameters FlowWaitEventOutputParameter[] An array of the event’s output parameters. The parameter values are assigned from the event to variables in the flow.

FlowWaitEventInputParameter

An input parameter for FlowWaitEvent. The parameter’s value is set by using values from the flow. It extends FlowBaseElement and inherits all its fields. FlowWaitEventInputParameter is available in API version 32.0 and later.

Field Name Field Type Description
name string Required. Unique name for the input parameter.
value FlowElementReferenceOrValue Defines the value of the input parameter.

FlowWaitEventOutputParameter

An output parameter for FlowWaitEvent. The parameter’s value is assigned to a variable in the flow so that it can be referenced in another part of the flow. It extends FlowBaseElement and inherits all its fields. FlowWaitEventOutputParameter is available in API version 32.0 and later.

Field Name Field Type Description
assignToReference string Required. Specifies the variable to which you want to assign the output parameter value.
name string Required. Unique name for the output parameter.

Declarative Metadata Sample Definition

A sample XML definition of a flow is shown below.

1<?xml version="1.0" encoding="UTF-8"?>
2<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
3    <choices>
4        <name>Bad</name>
5        <choiceText>Bad</choiceText>
6        <dataType>Number</dataType>
7        <value>
8            <numberValue>0.0</numberValue>
9        </value>
10    </choices>
11    <choices>
12        <name>Excellent</name>
13        <choiceText>Excellent</choiceText>
14        <dataType>Number</dataType>
15        <value>
16            <numberValue>20.0</numberValue>
17        </value>
18    </choices>
19    <choices>
20        <name>Fair</name>
21        <choiceText>Fair</choiceText>
22        <dataType>Number</dataType>
23        <value>
24            <numberValue>10.0</numberValue>
25        </value>
26    </choices>
27    <choices>
28        <name>Good</name>
29        <choiceText>Good</choiceText>
30        <dataType>Number</dataType>
31        <value>
32            <numberValue>15.0</numberValue>
33        </value>
34    </choices>
35    <description>Simple Flow app to calculate a Tip according to corporate
36        policies</description>
37    <formulas>
38        <name>fTipAmount</name>
39        <dataType>Number</dataType>
40        <expression>{!Bill_Amount} * {!Service_Quality} / 100</expression>
41        <scale>0</scale>
42    </formulas>
43    <formulas>
44        <name>fTotalAmount</name>
45        <dataType>Number</dataType>
46        <expression>{!fTipAmount} + {!Bill_Amount}</expression>
47        <scale>0</scale>
48    </formulas>
49    <label>Tip Calculator App</label>
50    <screens>
51        <showHeader>false</showHeader>
52        <showFooter>true</showFooter>
53        <name>Simple_Tip_Calculator</name>
54        <label>Simple Tip Calculator</label>
55        <locationX>513</locationX>
56        <locationY>112</locationY>
57        <connector>
58            <targetReference>TipAmount</targetReference>
59        </connector>
60        <fields>
61            <name>Bill_Amount</name>
62            <dataType>Currency</dataType>
63            <fieldText>Bill Amount</fieldText>
64            <fieldType>InputField</fieldType>
65            <isRequired>false</isRequired>
66            <scale>2</scale>
67        </fields>
68        <fields>
69            <name>Service_Quality</name>
70            <choiceReferences>Excellent</choiceReferences>
71            <choiceReferences>Good</choiceReferences>
72            <choiceReferences>Fair</choiceReferences>
73            <choiceReferences>Bad</choiceReferences>
74            <dataType>Number</dataType>
75            <fieldText>Service Quality</fieldText>
76            <fieldType>RadioButtons</fieldType>
77            <isRequired>false</isRequired>
78            <scale>2</scale>
79        </fields>
80    </screens>
81    <screens>
82        <showHeader>false</showHeader>
83        <showFooter>true</showFooter>
84        <name>TipAmount</name>
85        <label>Tip Amount</label>
86        <locationX>518</locationX>
87        <locationY>266</locationY>
88        <fields>
89            <name>TipSUmmary</name>
90            <fieldText>&lt;TEXTFORMAT
91                LEADING=&quot;2&quot;&gt;&lt;P
92                ALIGN=&quot;LEFT&quot;&gt;&lt;FONT
93                FACE=&quot;Arial&quot;
94                STYLE=&quot;font-size:12px&quot;
95                COLOR=&quot;#000000&quot;
96                LETTERSPACING=&quot;0&quot;
97                KERNING=&quot;0&quot;&gt;If you think the quality of
98                service is &lt;FONT
99                KERNING=&quot;1&quot;&gt;{!Service_Quality},
100                &lt;/FONT&gt;for a meal of {!Bill_Amount} you should tip
101                {!fTipAmount}, so the total recommended amount should be
102                {!fTotalAmount}&lt;/FONT&gt;&lt;/P&gt;&lt;/TEXTFORMAT&gt;</fieldText>
103            <fieldType>DisplayText</fieldType>
104        </fields>
105    </screens>
106    <startElementReference>Simple_Tip_Calculator</startElementReference>
107</Flow>