What you're doing when you add values to a multipicklist in Flow

A multipicklist in Salesforce is a field that lets you select multiple values from a predefined list — think of it like checkboxes rather than a dropdown. When you're building a Flow, you often need to populate that field with values, either from user input, a database lookup, or logic you've written. The way you do this depends on whether you're setting a single value, multiple values, or building the list dynamically as the Flow runs.

The core difference from a regular picklist is that multipicklist values are stored as semicolon-separated text. If you're adding "Option A" and "Option B", Salesforce stores it as Option A;Option B. Understanding this format matters because it changes how you construct the value in your Flow.

Key Takeaways

  • Multipicklist values in Salesforce are stored as semicolon-separated text, so you must join multiple selections with semicolons when setting the field in Flow.
  • Use the Assignment element in Flow to set a multipicklist variable to a single value, multiple hardcoded values, or a formula that builds the list dynamically.
  • If you're collecting user selections through a screen, use a Multipicklist component on the screen element and the Flow automatically handles the formatting.
  • When pulling multipicklist values from a database record, the field already contains the semicolon-separated format, so you can assign it directly without reformatting.
  • Use the SUBSTITUTE function in formulas if you need to replace or clean up semicolons when combining values from different sources.

Setting a multipicklist with hardcoded values in an Assignment

The simplest way to add values to a multipicklist is to use an Assignment element and type the values directly, separated by semicolons. In the Assignment element, create a new variable or select an existing multipicklist field, then enter the values exactly as they appear in your field definition, with a semicolon between each one and no spaces around the semicolon.

For example, if your multipicklist field has the values "Red", "Blue", and "Green", and you want to set it to Red and Blue, you would type: Red;Blue. The order does not matter — Salesforce will display them in the order defined in your field setup, not the order you typed them. If you type only one value, like Red, that works too; you do not need a semicolon for a single selection.

This approach works well when you know exactly which values you want to set every time the Flow runs. If the values change based on conditions or user input, you will need a formula or a screen component instead.

Building a multipicklist value with a formula

When you need to combine values conditionally or pull them from different sources, use a formula in the Assignment element. The most common formula pattern is to use the CONCATENATE function or the ampersand operator to join values with semicolons between them.

For example, if you have a variable called selectedColor and another called selectedSize, and you want to combine them into a multipicklist, your formula would be: selectedColor & ";" & selectedSize. If either variable might be empty, wrap each part in an IF statement to avoid creating empty selections: IF(ISBLANK(selectedColor), "", selectedColor) & IF(ISBLANK(selectedSize), "", ";" & selectedSize). This prevents a leading or trailing semicolon if one of the values is missing.

You can also use formulas to filter or transform values. If you have a text variable containing semicolon-separated values and you want to remove a specific value, use SUBSTITUTE: SUBSTITUTE(myList, "ValueToRemove;", ""). This is useful when a user deselects an option and you need to update the stored list.

Collecting multipicklist selections from a user through a screen

If you want the user to choose which values to add, use a Multipicklist component on a Screen element. Drag the Multipicklist component onto your screen, bind it to a variable, and configure the values that should appear as options. When the user selects items and clicks Next, Flow automatically stores their selections in the correct semicolon-separated format.

You do not need to manually format the output — Flow handles it for you. After the screen, you can assign that variable directly to your record's multipicklist field, or use it in formulas and conditions. If you want to set default selections (the items that appear already checked when the screen loads), use the Default Value property and enter the values separated by semicolons, just like you would in an Assignment.

One common mistake is trying to use a Picklist component instead of a Multipicklist component. A Picklist component only lets the user select one value, so it will not work if you need multiple selections. Always check that you are using the Multipicklist component from the Screen Elements palette.

Assigning multipicklist values from a database record

When you query a record from Salesforce and that record has a multipicklist field, the field value is already in the correct format (semicolon-separated). You can assign it directly to another multipicklist variable or field without any reformatting.

For example, if you retrieve a Contact record and it has a multipicklist field called Interests__c containing "Sports;Music;Travel", you can assign it like this: set your variable to the value of Contact.Interests__c. The semicolons are preserved automatically. This also works when you are updating a record — if you want to copy the multipicklist values from one record to another, just assign the source field to the target field in an Assignment element.

Be careful if you are combining a database value with user input. If you query a record's multipicklist and then want to add more values to it, use a formula to concatenate them: Contact.Interests__c & ";" & newInterest. This preserves the existing values and appends the new one.

Handling empty or null multipicklist values

A multipicklist field can be empty (no values selected), and Flow treats this as a blank or null value. If you try to concatenate a value onto an empty multipicklist, you will end up with a leading semicolon, which Salesforce may reject when you try to save the record.

To avoid this, check whether the field is blank before concatenating. Use an IF statement: IF(ISBLANK(myMultipicklist), newValue, myMultipicklist & ";" & newValue). This adds the new value without a leading semicolon if the field is empty, or appends it with a semicolon if the field already has values.

When you delete all selections from a multipicklist (the user unchecks everything on a screen), Flow sets the field to empty, not to a string of semicolons. This is the correct behavior and will save without errors.

Testing your multipicklist values in Flow

Before you deploy your Flow to production, test it by running the Flow manually and checking what value ends up in the multipicklist field. Use the Debug option in Flow Builder to see the exact value of your variable at each step. Look for unexpected semicolons, missing values, or extra spaces.

A common issue is spaces around semicolons. If your formula produces "Red ; Blue" instead of "Red;Blue", Salesforce will not recognize "Red " and " Blue" as valid values and the field will appear empty or show an error. Always use semicolons with no spaces: Red;Blue.

If you are pulling values from a formula field or a text field that might have inconsistent formatting, test with real data from your org. Some data sources add spaces or extra characters that will break the multipicklist format.

Frequently Asked Questions

Can I add values to a multipicklist without overwriting the existing values?

Yes, but you need to read the current value first and then append to it. Use a formula like myMultipicklist & ";" & newValue to add a value while keeping what is already there. If the field is empty, use an IF statement to avoid a leading semicolon.

What happens if I type a value that does not exist in the multipicklist definition?

Salesforce will reject the record when you try to save it. The value must match exactly (including capitalization) one of the options you defined in the field setup. If you are unsure of the exact spelling, check the field definition in Setup or use a Multipicklist screen component so users can only select valid options.

Can I use a formula to remove a specific value from a multipicklist?

Yes, use the SUBSTITUTE function: SUBSTITUTE(myMultipicklist, "ValueToRemove;", ""). This removes the value and the semicolon after it. If the value is the last one in the list, use SUBSTITUTE(myMultipicklist, ";ValueToRemove", "") to remove the semicolon before it instead.

How do I set a multipicklist field to empty in Flow?

In an Assignment element, set the variable to an empty string or leave the value field blank. This clears all selections. You can also use a formula: IF(someCondition, "", myMultipicklist) to conditionally clear the field.

Why does my multipicklist show an error when I try to save the record?

Check for spaces around semicolons, extra semicolons at the start or end, or values that do not match the field definition exactly. Use the Debug tool in Flow Builder to inspect the exact value before it is saved, and compare it character by character to the valid options in your field setup.