I frequently come across features in Salesforce that are easy to implement and provide good data quality, but are seldom used by new admins. Global Picklist is one of those features.
A Global Picklist can be defined to ensure data accuracy and continuity, by providing a central set of values that can be used across multiple objects. In this article, we’ll take a deep dive into what Salesforce Global Picklists are, as well as best practices for using them.
What is a Salesforce Global Picklist?
I first discovered global picklists years ago (probably the same way many Salesforce Admins did) when I got an error trying to convert a Lead to a Contact.
We get this error when a picklist on the Lead is mapped to a picklist on the converting record and the field value does not exist (either the Account, Contact, or Opportunity). In this example, the picklist is on the Contact.
What this error message is saying is that there is a picklist value on the Lead that does not exist on the Contact. When we double check the picklist, we see that is, in fact, true.
These two picklists should be the same, but we can see that on the Contact record we are missing one value: “Antarctica”. It just so happens that the Lead we are trying to convert has this picklist value. Since the “HQ Continent” field is mapped upon conversion, and the picklist values don’t match, we get the error message.
This happens all the time, whether it’s Sub-Industry, Territory, Product, Area of Interest, or Sub-Status, etc. These are all examples of picklist fields that should have the same value across multiple objects, but over time or by human error, they end up with slight variations. This is especially common if you have an un-restricted picklist connected to something like Marketo or HubSpot. Those integrated systems could be creating more picklist values, which you wouldn’t immediately notice until you get an error like this one.
The solution to this problem is the global picklist. Salesforce Global Picklists should be used any time you need the same set of picklist values on multiple objects. In this example, our picklist is called “HQ Continent” – and since there are always the same continents present on the earth, we want to present our uses with the same set of picklist values, no matter what object they’re working on.
How to Create a Global Picklist in Salesforce
There are actually two ways to create a global picklist – we’ll go through both. One is useful if you’re starting with a brand new picklist that does not yet exist anywhere. The other is useful if the picklist already exists on an object but you wish to use these picklist values on other objects.
1. Create a Brand New Global Picklist
In Setup, navigate to Picklist Value Set.
Name your picklist value set, and enter the values like you normally would. Then click Save.
Once your picklist value set is created, you can go to the object(s) you want and create the picklist itself, using values from this picklist value set.
Repeat this process everywhere this field needs to exist. Don’t forget to do your mapping from Lead to Contact, Account, or Opportunity, as needed.
2. Promote an Existing Global Picklist
This method is good when you have an existing picklist on one object, and you want to use it as the basis for a global picklist.
In this example, we’ll use a Product picklist (Product A, B, or C). On a Lead, it indicates which product the Lead is interested in. On an Account, it will indicate which product they have purchased. But our company only sells A, B, or C, and they are mutually exclusive, so we can always use the same picklist. Our Lead already has the existing picklist, so we’re going to use that as the basis for our Global Picklist.
Navigate to the existing picklist field, click Edit and then click Promote to Global Value Set.
Enter the field label and click Promote to Global Value Set again.
This is where it could get tricky if you have an existing picklist field on multiple objects; you will only be able to promote one of them to a Global Picklist – the rest of the picklist fields that need to use the same values will need to be recreated as new fields (and most likely have the data from the old field cleansed and imported into the new field).
There is no way to get an existing picklist field to use an existing Global Picklist. As you can see from the image, your only options are to add New, Reorder, and Replace – this involves adding single values. There’s no option here to begin using the picklist values from the Global Value Set.
The only course of action is to stop using the old picklist, and instead create a new picklist. As you create the new picklist, you’ll select the option to use the global picklist value set. This can be a hassle, especially if you have a lot of records that have to be bulk updated, or if you have integrations that refer to this field.
Here are the suggested steps when recreating your existing picklist fields to new fields that use a global picklist:
- Create the new picklist using the Global Value Set.
- Mass update the new picklist (refer to the old picklist for reference – note that you may need to cleanse this data if the picklist values don’t match exactly).
- Stop using the old picklist in Salesforce and exclusively refer to the new one. Depending on your org’s data policies, this may include (in no particular order):
- Updating Reports/Dashboards.
- Updating List Views.
- Updating Page Layouts.
- Update any integrations that refer to these fields.
- Renaming the old field with your legacy field naming convention, or deleting the old field.
- Notifying users to stop using the old field, and start using the new field
- Map the new fields to each other on Lead conversion.
As you can see, there is quite a bit involved! Whenever you make a new picklist going forward, ask yourself if this picklist might ever need to exist on multiple objects. If the answer is “yes”, create the Global Value Set first so that it is always available to access any item you need.
Here are a few important things to note about global picklists:
- Global picklist values are by default “Restricted Picklists” – integrated systems will not be able to insert new picklist values.
- You can use Global Picklist Values in field dependencies.
- You can use Global Picklist Values in validation rules.
- Global Picklist Values appear to be identical to a regular picklist from the end-user perspective.
Remember, the only difference between a standard picklist and a picklist that uses a Global Value Set, is where the values are coming from. They are the same field type, but the values can come either from the field itself, or from a Global Value Set.
Have you ever used Global Picklist Values? Let me know in the comments below!