Picklist
A picklist is a Salesforce field that lets users pick one value from a controlled list, with the available values defined by the admin rather than typed in by the user.
Definition
A picklist is a Salesforce field that lets users pick one value from a controlled list, with the available values defined by the admin rather than typed in by the user. It is the platform's answer to free-text fields for any value that should stay consistent across records, like Industry, Stage, Status, Priority, or Country.
Picklists come in two main variants: standard single-select picklists, which return exactly one value per record, and multi-select picklists, which allow several values stored as a semicolon-delimited string. A third form, the global picklist, lets administrators define a value set once and reuse it across multiple fields on different objects, so changing a value updates every reference at once. Picklist values participate in record types, validation rules, reports, list view filters, and Apex code, which is why getting the value set right early matters more than people expect.
How picklists shape data quality and reporting
Standard versus custom picklists
Salesforce ships standard picklists on many objects: Account Type, Industry, Lead Source, Opportunity Stage, Case Status. Standard picklists come with default values that can be customized, but the field itself cannot be deleted. Custom picklists are admin-created and fully editable. Both behave the same way at the API and Apex layer, but standard picklists carry built-in tie-ins to reports and dashboards (forecast categories on Stage, for example) that custom picklists do not get for free.
Global value sets keep options in sync
A global value set is a named list of values managed in one place (Setup > Picklist Value Sets) and referenced by multiple picklist fields across multiple objects. Industry, Country, Department: all common candidates. Updating a value in the global set updates every field that references it. The trade-off is field-level flexibility: you cannot reorder or rename values per field once they reference the global set. For shared business taxonomies, global value sets are the right pattern. For values that vary by object, keep them local.
Picklist values and record types
Record types filter which picklist values are available per variant of an object. The B2B Account record type can expose Customer, Partner, Reseller. The Personal Account record type can expose Customer only. Filtering happens at Object Manager > Record Types > the record type > Picklists Available for Editing. Missing this configuration is the second-most-common reason users report "missing values" after profile permissions.
Restrict to picklist values, and what it costs
By default, the API allows inserting picklist values that are not in the defined list, because legacy integrations sometimes send arbitrary strings. The "Restrict picklist to the values defined in the value set" checkbox enforces strict validation at the API layer, which improves data quality but can break integrations that rely on legacy behavior. Turn this on for new picklists, and audit older picklists carefully before flipping the flag because rogue values become rejection errors immediately.
Picklist values in reports and analytics
Picklist fields filter beautifully in reports and list views because they have a finite, indexed set of possible values. The report builder offers the values directly in the filter dropdown, and grouping by picklist produces clean buckets without "Other" piles. This is why teams convert free-text fields to picklists during data-quality projects: every report instantly becomes more useful. The catch is that historical data with values now removed from the picklist still shows the old value, leaving "deactivated" values in old records.
Dependent picklists and controlling fields
A dependent picklist filters its values based on another picklist on the same record. Stage values filter by Type, Country filters by Region, Sub-Status filters by Status. Dependent picklists need a controlling field (another picklist or a checkbox) and a value mapping that says which dependent values appear for each controlling value. The dependency matrix is configured at the field level under Field Dependencies. Validation rules and Apex can read both fields independently, so dependency is a UI affordance, not a hard constraint.
Hidden costs of picklist value changes
Renaming a picklist value updates the field metadata, but existing records keep the old value text until someone updates them. Deactivating a value hides it from the UI but leaves it on existing records, which means reports still surface deactivated values. Deleting a value warns about every record that holds it and offers a replacement value. Plan value cleanups carefully: a quick rename in Setup can break Apex switch statements, validation rule literal comparisons, and integration mappings that hard-coded the old value string.
How to create and manage a Picklist
A picklist is one of the most common fields in any Salesforce org. Creating one takes a minute. Managing the value set, controlling availability per record type, and keeping integrations in sync takes a quarter. Plan the value taxonomy before you create the field because each value becomes a contract with users, reports, Apex, and external systems.
- Decide between local and global value sets
If the same list of values will be used on multiple fields across objects, create a global value set first at Setup > Picklist Value Sets. If the values are specific to one field, a local value set is simpler and gives more reorder flexibility.
- Create the picklist field
Object Manager > target object > Fields and Relationships > New > Picklist (single-select) or Multi-Select Picklist. Enter the values one per line, or reference the global value set. Set a default value if applicable.
- Turn on "Restrict picklist to defined values"
For new picklists, check the Restrict checkbox. This blocks integrations and Apex from inserting unknown values, which keeps data quality high from day one. Skip this only if a known integration requires legacy permissive behavior.
- Configure record type availability
If the object has record types, go to each record type and edit the picklist availability. Specify which values appear and which is the default for that variant. Repeat for every record type that should see the new field.
- Set field-level security per profile
Profiles without read access see the field as blank or hidden. Permission sets layered on top can grant additional access. Verify the field is visible to the profiles that need to see it before going live.
- Configure dependent picklists if applicable
If this picklist depends on or controls another, set up the dependency. Setup > Object Manager > Fields and Relationships > Field Dependencies > New. Map the matrix of which dependent values appear for each controlling value.
- Document the values and the change-control process
Picklist values become contracts with reports, Apex, and integrations. Write down what each value means, who can request changes, and what review is required. Surprise value changes break downstream automations more often than admins expect.
Label appears in the UI. API name is permanent and referenced by validation rules, Apex, and reports.
The list of values users can pick. Local lives on the field; global is reusable across fields.
Controls whether the API blocks values outside the defined set. Enable for new fields to enforce data quality.
- Without "Restrict picklist to defined values" enabled, integrations can insert any string value, which silently corrupts reports and breaks list view filters. Turn it on for new picklists.
- Renaming a picklist value changes the field metadata but not the data on existing records. Plan a bulk update job alongside the value rename, or reports will show both old and new values for weeks.
- Picklist value availability per record type must be configured manually after each record type is created. New picklists added later default to showing all values until you explicitly filter per type.
- Apex code, validation rules, and integrations often hard-code picklist value strings. Audit every Apex class, validation rule, and integration mapping before deactivating or renaming a value.
- Multi-select picklist values are stored as semicolon-delimited strings, which makes reporting and Apex filtering awkward. Prefer separate boolean fields or a related junction object for values that need clean reporting.
Trust & references
Cross-checked against the following references.
- Picklist Field OverviewSalesforce Help
- Manage Picklist ValuesSalesforce Help
- Global Picklists OverviewSalesforce Help
Straight from the source - Salesforce's reference material on Picklist.
- Picklist FieldsSalesforce Help
- Create a Global Picklist Value SetSalesforce Help
- Manage Field DependenciesSalesforce Help
About the Author
Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He runs salesforcedictionary.com to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.
Test your knowledge
Q1. What is a Picklist?
Q2. What types of picklists exist?
Q3. Why use picklists?
Discussion
Loading discussion…