What a multipicklist is and why you might need to add values to it

A multipicklist in Salesforce is a field that lets someone pick more than one option from a list — like checking multiple boxes instead of picking just one. In a Flow (Salesforce's automation tool), you sometimes need to add new values to that list while the flow is running, rather than having all the options set up ahead of time.

The reason you'd do this is usually because the values you need depend on something that happens during the flow. For example, a flow might ask a user what products they want, then based on their answer, add related options to a multipicklist field on a record. Without this ability, you'd be stuck with a fixed list that doesn't change.

Salesforce doesn't have a single "add to multipicklist" action that works the way you might expect. Instead, you build the new value into the existing list using a formula or a text variable, then save the whole thing back to the field. The method depends on whether you're working with a record that already exists or building a list from scratch.

Key Takeaways

  • Multipicklist fields in Salesforce store multiple values separated by semicolons, and you add to them by treating them as text and concatenating the new value.
  • The most common approach is to use a formula element in your flow to combine the existing field value with a new value, separated by a semicolon.
  • If the field is empty or you're creating a new record, you can assign values directly without worrying about what was there before.
  • You must check whether the value already exists in the list to avoid duplicates, which will cause the update to fail or create unwanted entries.
  • Testing your flow with different combinations of existing and new values catches errors before the flow runs on real data.

How multipicklist values are stored and why that matters

Salesforce stores multipicklist values as plain text, with each selected option separated by a semicolon. So if a field called "Product Interests" has three values selected, it looks like this in the database: Software;Hardware;Services. There are no commas, no spaces after the semicolons, and no extra punctuation.

This matters because when you add a new value, you're not actually inserting it into a list — you're building a new text string that includes both the old values and the new one. If the field currently holds "Software;Hardware" and you want to add "Services", you need to create the string "Software;Hardware;Services" and save that entire string back to the field.

If you just save "Services" by itself, you'll overwrite the existing values and lose "Software" and "Hardware". That's why every method for adding values involves either preserving what's already there or deliberately replacing it.

Using a formula element to add a single value to an existing record

The most straightforward approach is to use a formula element in your flow. A formula element lets you write an expression that combines text, field values, and logic. Here's the basic pattern:

First, create a formula element and give it a name like "Add Product to List". In the formula field, write an expression that checks whether the multipicklist field is empty, then either adds the new value or appends it to what's already there. The formula looks like this:

IF(ISBLANK(YourObject__c.MultipicklistField__c), "NewValue", YourObject__c.MultipicklistField__c & ";" & "NewValue")

This formula says: if the multipicklist field is blank, set it to just "NewValue". If it already has values, take those values, add a semicolon, then add "NewValue". The & symbol concatenates (joins) the text pieces together. After the formula runs, use an Update Records element to save the result back to the field.

The catch is that this approach doesn't check whether "NewValue" is already in the list. If you run the flow twice, you'll end up with duplicates: "Software;Hardware;Hardware". To prevent that, you need a more complex formula that searches for the value first.

Checking for duplicates before adding a value

To avoid adding the same value twice, use the CONTAINS function inside your formula. This checks whether the text string already includes the value you're trying to add. The formula becomes:

IF(CONTAINS(YourObject__c.MultipicklistField__c, "NewValue"), YourObject__c.MultipicklistField__c, IF(ISBLANK(YourObject__c.MultipicklistField__c), "NewValue", YourObject__c.MultipicklistField__c & ";" & "NewValue"))

This reads as: if the field already contains "NewValue", leave it alone. If it doesn't contain "NewValue" but is blank, set it to "NewValue". If it doesn't contain "NewValue" and isn't blank, append "NewValue" with a semicolon. This prevents duplicates and handles all three scenarios.

One limitation: CONTAINS is case-sensitive, so "Software" and "software" would be treated as different values. If your multipicklist values use mixed case, you may need to standardize them or use a more complex formula that converts everything to the same case before comparing.

Adding multiple values at once using a text variable

If you need to add more than one value in a single flow step, build them into a text variable first, then add that variable to the field. Create a variable of type Text and set its value to the values you want to add, separated by semicolons: Value1;Value2;Value3.

Then use a formula element to combine that variable with the existing field value, the same way you would with a single value. The formula might look like:

IF(ISBLANK(YourObject__c.MultipicklistField__c), YourMultipleValuesVariable, YourObject__c.MultipicklistField__c & ";" & YourMultipleValuesVariable)

This approach is useful when the values you're adding come from a loop or a decision in your flow. For example, if your flow loops through a list of products and builds a string of product IDs, you can add all of them to the multipicklist in one step rather than adding them one at a time.

Common mistakes and how to avoid them

The most common error is forgetting the semicolon between values. If you write "Software;Hardware" and then add "Services" without a semicolon, you get "Software;HardwareServices" — which Salesforce treats as a single invalid value. Always include the semicolon in your formula or variable.

Another mistake is trying to update the field without first retrieving the record. If your flow doesn't load the current record before the formula runs, the formula can't read what's already in the multipicklist field, and you'll overwrite it. Make sure your flow includes a Get Records element that pulls the record you're updating before you try to add values to it.

A third pitfall is not testing with edge cases. Test your flow with a record that has an empty multipicklist, a record with one value, and a record with many values. Test adding a value that's already there, and adding a value that's new. These tests catch logic errors before the flow runs on real data.

When to use a choice variable instead of a multipicklist field

Sometimes the problem isn't really about adding values to a multipicklist field on a record — it's about collecting multiple selections from a user within the flow itself. In that case, use a choice variable instead. A choice variable lets a user pick multiple options in a flow screen, and you can build the list of options dynamically based on earlier steps.

Choice variables are easier to work with because Salesforce handles the list management for you. You don't have to worry about semicolons or duplicates. The trade-off is that choice variables only exist within the flow; they don't save to a record unless you explicitly map them to a multipicklist field at the end.

If you're building a flow that asks a user to select multiple items and then saves those selections to a record, start with a choice variable to collect the input, then use a formula element to convert the choice variable into the semicolon-separated format that the multipicklist field expects.

Frequently Asked Questions

What happens if I add a value that contains a semicolon?

Salesforce will treat the semicolon as a separator, which breaks the value into two separate entries. Multipicklist values should not contain semicolons. If your data includes semicolons, you'll need to remove or replace them before adding the value to the field.

Can I add values to a multipicklist field on a record that hasn't been created yet?

Yes. In a Create Records element, you can set the multipicklist field directly to the values you want, separated by semicolons. You don't need to check for existing values because the record doesn't exist yet. Just assign the field the value "Value1;Value2;Value3" and the new record will have those values when it's created.

How do I remove a value from a multipicklist in a flow?

Removing a value is more complex than adding one because you have to rebuild the entire list without that value. The easiest approach is to use a formula that replaces the unwanted value with nothing. For example: SUBSTITUTE(YourObject__c.MultipicklistField__c, "ValueToRemove;", "") removes "ValueToRemove" and the semicolon after it. Test this carefully because the position of the value matters — if it's the last value, you may need a different formula.

Can I add values to a multipicklist field using an assignment element instead of a formula?

An assignment element can set a variable to a value, but it can't directly read and modify a field on a record in the way a formula can. You can use an assignment to build a text variable that holds the new values, then use a formula to combine that variable with the field. The formula approach is more flexible and handles the logic in one place.