POS layout filters
On this page
POS layout filters let staff narrow a list layout to the records they need. Filters appear as controls in the POS alongside the record list, and are configured per layout in Salesforce.
| Filters apply only to List type layouts. See [[pos-layouts | POS layouts]] for an overview of layout types. |
POS layout filter types
Each filter record (Pos_Layout_Filter__c) has a Type that controls how the filter appears and how it matches records.
Select
A single-value dropdown. Staff choose one option from a predefined list to filter records.
- Values are defined in the Select Options field as semicolon-separated
value:Labelpairs — for example:active:Active;inactive:Inactive - Matching is case-insensitive
- An All option is added automatically to clear the selection
Multiselect
A checkbox list that allows staff to select multiple values at once.
- Values are defined in the Select Options field using the same
value:Labelformat as select filters - Use a semicolon to separate each option:
lead:Lead;vip:VIP;wholesale:Wholesale - Matching is case-insensitive; a record is included if it matches any selected value
Number range
Two numeric inputs — Minimum and Maximum — that filter records to those within the specified range.
- Either input can be left blank to create an open-ended range (for example, “500 and above” or “up to 100”)
- The filter button displays the applied range in a readable format:
- Both values:
100 – 500 - Minimum only:
100 min - Maximum only:
500 max
- Both values:
Date range
Two date pickers — From and To — that filter records by a date field.
- Either date can be left blank to create an open-ended range (for example, “from 1 Jan 2025 onwards”)
- The To date is inclusive — records dated on that day are included
- The filter button displays the applied range in a readable format:
- Both dates:
Jan 15 – Feb 28 - From only:
From Jan 15 - To only:
To Feb 28
- Both dates:
Hidden
A filter that applies values without displaying any filter control to staff. Hidden filters are always active, but staff cannot see or interact with them.
Use hidden filters to enforce a fixed scope on a layout — for example, always showing only records with a specific status — without exposing that constraint to the user interface.
:::note Hidden filters behave differently to visible filters in several ways: - They do not appear in the filter controls area of the layout - They are not included in the no-records message (see below) - When staff clear visible filters, hidden filter values are preserved and continue to apply :::
Auto-generated options
For select and multiselect filters, you can either configure options explicitly or let the POS generate them automatically from live data.
How auto-options work
When the Options field on a filter record is left blank, the POS queries the local dataset for all distinct values present in the filtered field, and builds the option list at runtime. Options update automatically as records sync — no manual maintenance is needed.
When the Options field is set, those values are used as-is and no auto-generation occurs. Switching from explicit to blank re-enables auto-generation on the next render.
:::note Auto-options are derived from the local IndexedDB dataset — they reflect only records that have already synced to the device. Fields must be indexed in the local schema for auto-options to work; this happens automatically when the field name is set on a layout filter. :::
Auto-option formatting rules
| Raw field value | Label shown in filter |
|---|---|
All-lowercase (e.g., sales) |
Sentence case: Sales |
Any uppercase characters (e.g., VIP, IT Support) |
Used as-is: VIP, IT Support |
Boolean true / false |
True / False |
| Empty string | (blank) — placed at the end of the list |
null or undefined |
Not included |
Auto-options vs explicit options
| Auto-options | Explicit options | |
|---|---|---|
| Options field | Blank | Set |
| Source | Distinct values from local data | Configured value:Label pairs |
| Updates automatically | Yes — reactive to data sync | No — static |
| Custom ordering | No — alphabetical by field index | Yes — defined by your configuration |
| Label control | Sentence-case rule (see above) | Full control |
Use auto-options when the set of values in your data is dynamic or unknown in advance. Use explicit options when you need a fixed, ordered list or custom labels.
:::tip
Auto-options apply to select and multiselect filter types only. number_range and date_range filters do not use an options list.
:::
Configuring a POS layout filter
- Open the
Pos_Layout__crecord in Salesforce. - In the POS Layout Filters related list, click New.
- Complete the filter record:
| Field | Notes |
|---|---|
| POS Layout | The layout this filter belongs to (auto-filled from the related list) |
| Field Name | API name of the Salesforce field to filter by. Must exist on the layout’s object or custom data mapping. |
| Label | The display label shown to staff in the filter controls |
| Type | Select the filter type (see above) |
| Position | A number controlling the order in which filters appear |
| Select Options | Required for select and multiselect types. Format: value:Label;value:Label |
| Initial Values | The default value(s) applied when the layout first loads. Separate multiple values with a semicolon for multiselect filters. |
| Hidden | Check this to apply the filter silently without showing it to staff |
- Save the filter record.
:::tip The Initial Values field works for all filter types, including hidden filters. Use it to set a default that applies before staff make any selections. :::
Filter values format
| Filter type | Initial values format | Example |
|---|---|---|
| Select | Single value | active |
| Multiselect | Semicolon-separated values | lead;vip |
| Number range | min,max (omit either for open-ended) |
100,500 or 100, |
| Date range | from,to in ISO format (omit either for open-ended) |
2025-01-01,2025-12-31 |
| Hidden | Same format as the visible equivalent | complete |
No-records returned messages
When a filtered list returns no results, the POS displays a contextual message to help staff understand why. The message is built from the active search term and visible filters:
- No search or filters active:
No records found - Search active:
No records found matching "keyword" - Visible filter active:
No records found with Status Active - Both active:
No records found matching "keyword" and Status Active
A Clear filters button appears when at least one visible filter has a value. Selecting it resets all visible filters — hidden filter values are not affected.
:::note Hidden filters are excluded from the no-records message. If records are missing due to a hidden filter, staff will not see that filter referenced in the message. Ensure hidden filter values are intentional and the scoped data is expected by the staff using the layout. :::
Object reference
| See [[pos-layout-filter-object-reference | POS Layout Filter Object Reference]] for the full Salesforce field listing. |