Data Control & Customization
Wave Grid gives you the power to personalize how data is displayed and interacted with—just like a flexible spreadsheet. Whether you're sorting, filtering, or accessing related records via lookup fields, you’re always in control of the grid layout and field behavior.
Key controls include:
Column Header Actions for customizing individual columns.
Lookup and Lookup Filters for managing related data visibility.
These features don’t just enhance visibility—they empower you to focus on the data that matters most.
Column Header
Each column in the Wave Grid has a Column Header, which displays the field name (title) of that column. These headers also include a drop-down menu (Header Action) packed with useful actions for managing and customizing data display.

Users can also rearrange columns by dragging the column header using the hand cursor to reposition them as needed.

To add new fields to the grid, hover over any column header and click the ➕ button that appears. This will open the field picker, where you can select the fields you want to include. After making your selection, click Update Fields to apply the changes.
For more details, see Insert Field.

Field Selector
The Field Selector is a popup window that allows you to search, filter, and manage fields for your object grid. You can access it in multiple places, including:
Manage Grid – by clicking the Add button to update existing grids.
Grid Wizard – when adding fields to a new object grid.
Features in the Field Selector
Search Field Find a specific field in the object by typing its name in the search bar.
Field Type Filters Narrow down the field list by type, such as Lookup, Picklist, etc.
Included Toggle Switch between:
Included – shows fields already added to the grid.
Not Included – shows fields that have not yet been added.
Formula Field Create a new custom formula field directly within the Field Selector.
Refresh Object Update the list of fields to match the latest object definition in Salesforce. Any new fields created (or removed) in Salesforce will be reflected after refresh.
Actions
Once you’ve set your field selections:
Update Fields – Apply your changes and add the selected fields to the object grid.
Cancel – Close the Field Selector without saving changes.

Formula Field
Formula Fields let you create new calculated columns directly inside the Wave Grid — without modifying Salesforce records. They compute values automatically from existing field data using built-in functions and operators.
Common use cases include:
Showing the final price after applying a discount
Combining first name and last name into a single display column
Flagging at-risk deals based on amount and days open
Truncating long text fields to a readable summary
Note: Formula Fields create a new column in the grid. They do not write back to Salesforce or modify existing field values.
How to Create a Formula Field
In Field Selector, click Formula Field
Enter a Column Name (required). This is the label shown in the grid header.
Choose the Formula Return Type: String, Number, Boolean or Currency. This must match what your formula outputs.
Type your formula expression in the Formula Editor using the supported functions and field API names.
Click Check Syntax to validate the formula. Fix any errors shown before proceeding.
Click Apply to save, then Update Fields to add the column to the grid

Choosing The Right Return Type
Every formula must declare a Return Type before saving. There are 4 options. Choosing the wrong type causes a type mismatch error — use the table below as a guide:
String
Result is text or a label
CONCAT(FirstName, " ", LastName)
Number
Result is a plain numeric value (count, score, quantity)
FLOOR(DaysOpen__c / 7)
Boolean
Result is true or false, used for flags and checkbox-style columns
AND(Amount > 50000, DaysOpen__c > 90)
Currency
Result is a monetary amount that should display with currency formatting
Amount - (Amount * Discount__c / 100)
Date
Result is a date value (no time component)
dateAdd(StartDate__c, 30, "days")
DateTime
Result is a date with time and use when time precision matters
now()
Supported Functions in Formula Fields
The following functions and operators are now supported. They are grouped by category for easier reference.
Logical Functions
Logical functions evaluate conditions and control the logic of your formula. They can return Boolean values or, in the case of IF, any return type based on what each branch produces.
and()
Returns true only if ALL conditions are true
if(and(Amount > 50000, DaysOpen__c > 90), "At Risk", "On Track")
"At Risk"
if()
Returns one value if true, another if false. Can be nested. Date-aware comparisons supported.
if(DueDate__c < now(), "Overdue", "On Track")
"Overdue"
isblank()
True if a text field is empty or contains only spaces
if(isblank(Phone), "No phone on file", Phone)
"No phone on file"
isnull()
True if a value is null or undefined
if(isnull(OwnerId), "Unassigned", Owner.Name)
"Unassigned"
or()
Returns true if AT LEAST ONE condition is true
if(or(Amount < 1000, StageName = "Needs Analysis"), "Review", "Good")
"Review"
Math Functions
All math functions operate on number fields or numeric expressions.
Result
abs()
Absolute value
abs(Amount - Forecast__c)
2000
ceil()
Rounds up to the nearest integer
ceil(Quantity__c / BoxCapacity__c)
5
exp()
e raised to the power of a number
exp(GrowthRate__c * Years__c)
1.35
floor()
Rounds down to nearest integer
floor(DaysOpen__c / 7)
3
log()
Natural logarithm
log(Amount)
13.8
max()
Largest value from a list
max(BasicPrice__c, StandardPrice__c, PremiumPrice__c)
1200
min()
Smallest value from a list
min(QuoteA__c, QuoteB__c, QuoteC__c)
500
round()
Rounds to the nearest integer
round(Amount * CommissionRate__c / 100)
763
sqrt()
Square root
sqrt(RiskScore__c)
12
sum()
Sum of two or more numbers
sum(Amount, AddonValue__c, ServiceFee__c)
750
String Functions
String functions work on text fields. They can be nested inside IF or combined with CONCAT for powerful display logic.
beginswith()
True if string starts with prefix
if(beginswith(Account.Name, "ENT-"), "Enterprise", "SMB")
"Enterprise"
concat()
Joins two or more strings
concat(FirstName, " ", LastName)
"John Doe"
contains()
True if string contains substring
if(contains(lower(Description), "competitor"), "Review", "OK")
"Review"
endswith()
True if string ends with suffix
if(endswith(lower(Email__c), ".gov"), "Government", "Commercial")
"Government"
left()
Returns leftmost N characters
left(BillingCountry, 2)
"Ma"
length()
Number of characters in a string
length(trim(Notes__c))
10
lower()
Converts text to lowercase
lower(Email__c)
"sales@acme.com"
replace()
Replaces part of a string
replace(Phone, "+60", "0")
"0123456"
substring()
Extracts characters from start to end
substring(Description, 0, 40)
First 40 chars
text()
Converts a number to a string
text(Amount)
"10000"
trim()
Removes leading and trailing spaces
trim(ProductName__c)
"Widget Pro"
upper()
Converts text to uppercase
upper(Account.Name)
"ACME CORP"
Date & DateTime Functions
Date and DateTime functions let you compute, compare, and format date values directly in the Formula Editor. Use these with formula fields that return Date, DateTime, Number, or String — depending on what the function produces.
now()
Returns current date and time
now()
2025-07-15 10:30
dateDiff()
Difference between two dates. Units: days, weeks, months, years
dateDiff(CloseDate__c, now(), "days")
e.g. 30
dateAdd()
Adds N units to a date. Use negative N to subtract
dateAdd(StartDate__c, 30, "days")
e.g. 2025-08-14
date()
Constructs a date from year, month, day integers
date(2025, 12, 31)
2025-12-31
year()
Extracts the year as a number
year(CloseDate__c)
2025
month()
Extracts the month (1–12)
month(CreatedDate__c)
7
day()
Extracts the day of month (1–31)
day(DueDate__c)
15
formatDate()
Returns date as a formatted string
formatDate(CloseDate__c, "MMM DD, YYYY")
"Jul 15, 2025"
formatDate() — Format Token Reference
Use the following tokens when building format strings for formatDate(). All tokens are uppercase.
MM
Month (numeric, 2-digit)
12
MMM
Month (abbreviated name)
Dec
MMMM
Month (full name)
December
DD
Day (2-digit)
31
YYYY
Full year (4-digit)
2025
YY
Short year (2-digit)
25
Standard US date example: formatDate(CloseDate__c, "MM/DD/YYYY") → 07/15/2025
Arithmetic Operators
Operators can be used directly in any numeric expression or inside IF conditions.
+
Addition
Amount + AddonValue__c
10500 (10000 + 500)
-
Subtraction
Amount - COGS__c
6000 (10000 − 4000)
*
Multiplication
Quantity__c * UnitPrice__c
1500
/
Division
Amount / Quantity__c
500 per unit
%
Remainder (modulo)
IF(InvoiceNumber__c % 2 = 0, "Even", "Odd")
"Even" (if number = 4)
=
Equals
IF(StageName = "Closed Won", "Won", "Not Won")
"Won"
!=
Not equal
IF(Status__c != "Active", "Inactive", "Active")
"Inactive"
>
Greater than
IF(Amount > 50000, "Large Deal", "Small Deal")
"Large Deal"
<
Less than
IF(DaysOpen__c < 30, "New", "Aging")
"New"
>=
Greater than or equal
IF(Amount >= 50000, "Tier 1", "Tier 2")
"Tier 1"
<=
Less than or equal
IF(Score__c <= 40, "Low", "High")
"Low"
Advanced Real-World Examples
These examples combine multiple functions for more complex use cases.
Days until close (Number)
dateDiff(now(), CloseDate__c, "days")
Overdue flag with date comparison (String)
if(DueDate__c < now(), "Overdue", "On Track")
Contract end date (Date)
dateAdd(StartDate__c, ContractLength__c, "months")
Friendly pipeline label (String)
formatDate(CloseDate__c, "MMM YYYY")
Commission tier label
IF(Amount >= 50000, "Tier 1 (8%)", IF(Amount >= 20000, "Tier 2 (5%)", "Tier 3 (3%)"))
Short contact summary line
CONCAT(UPPER(LEFT(FirstName, 1)), ". ", LastName, " — ", TRIM(Title__c))
Result: "J. Smith — Senior Account Executive"
Deal risk score label
IF(AND(Amount > 50000, DaysOpen__c > 90), "High Risk", IF(OR(Amount > 50000, DaysOpen__c > 90), "Medium Risk", "Low Risk"))
Total value with fallback to zero
IF(ISNULL(Quantity__c), 0, Quantity__c * UnitPrice__c)
Masked account number
CONCAT("XXXX-", SUBSTRING(AccountNumber__c, LENGTH(AccountNumber__c) - 4, LENGTH(AccountNumber__c)))
Result: "XXXX-5678" from "ACC-005678"
Quick Reference — All Supported Functions
Math
abs()
abs(number)
Number / Currency
Math
ceil()
ceil(number)
Number / Currency
Math
exp()
exp(number)
Number
Math
floor()
floor(number)
Number / Currency
Math
log()
log(number)
Number
Math
max()
max(n1, n2, ...)
Number / Currency
Math
min()
min(n1, n2, ...)
Number / Currency
Math
round()
round(number)
Number / Currency
Math
sqrt()
sqrt(number)
Number
Math
sum()
sum(n1, n2, ...)
Number / Currency
String
beginswith()
beginswith(text, prefix)
Boolean
String
concat()
concat(s1, s2, ...)
String
String
contains()
contains(text, substring)
Boolean
String
endswith()
endswith(text, suffix)
Boolean
String
left()
left(text, n)
String
String
length()
length(text)
Number
String
lower()
lower(text)
String
String
replace()
replace(text, old, new)
String
String
substring()
substring(text, start, end)
String
String
text()
text(value)
String
String
trim()
trim(text)
String
String
upper()
upper(text)
String
Logical
and()
and(cond1, cond2, ...)
Boolean
Logical
if()
if(condition, true_val, false_val)
String / Number / Boolean / Currency / Date / DateTime
Logical
isblank()
isblank(text)
Boolean
Logical
isnull()
isnull(value)
Boolean
Logical
or()
or(cond1, cond2, ...)
Boolean
Date
now()
now()
DateTime
Date
dateDiff()
dateDiff(d1, d2, "unit")
Number
Date
dateAdd()
dateAdd(date, n, "unit")
Date
Date
date()
date(y, m, d)
Date
Date
year()
year(date)
Number
Date
month()
month(date)
Number
Date
day()
day(date)
Number
Date
formatDate()
formatDate(date, "fmt")
String
Column Header Action
Click the drop-down icon in the column header to search for records and choose which ones to display, allowing for more tailored data viewing.
Depending on the field type, the drop-down menu offers different options:
Picklist fields: You can search and select specific values, but filter options will not appear.
Date fields: Filter using preset options like Today, Tomorrow, Next Month, or choose a custom date using the calendar picker.
Number fields: Filter options adjust to allow number-specific conditions such as equals, greater than, less than, and more.
String fields: Users can filter records by selecting text values directly from the available list, making it easy to narrow down results based on specific text entries.
Formula Fields: Filtering behavior for Formula Fields depends on the formula’s output data type.
Number formulas: Support number-based conditions (equals, greater than, less than, etc.).
Text formulas: Allow filtering by selecting text values from a list.
Lookup Fields: Lookup filter options follow the data type of the referenced field.
Lookup to text-based fields: Users can filter by selecting the available text values.
Lookup to number-based fields: Number-specific filter conditions are applied.
Lookup to date fields: Date-related filter options become available.

If a field is Locked (Read-Only) in Salesforce, it will also be locked in Wave. A lock icon appears in the column header, and the data is read-only. The entire column will appear in grey, indicating that it’s non-editable.

When a field is added using Lookup, the column header shows the number of lookup levels applied.
Hover over the lookup number to view the full path. For example:
CreatedBy >> Account >> CreatedBy >> Country

Filter Features
Only values available in the grid are shown.
Typing in the filter dynamically narrows the list.
Picklist values follow the Salesforce-defined order.
A blue filter icon in the header shows which columns have active filters.
Use Clear All Filters to reset your grid view.

Header Filter on Date and DateTime Fields (Know Issue)
Description
Header Filter does not currently work correctly when applied to Date or DateTime type fields.
Reason
Header Filter currently does not support Date and DateTime field types.
Workaround
None at this time.
Column Header More Options
Wave Grid gives you Excel-like flexibility, putting you in control of your data with ease. Each column header offers powerful actions like freezing, sorting, grouping, and helping you organize information just the way you need it. You can also insert or remove columns seamlessly within the familiar, spreadsheet-style interface for a highly customizable data experience.

Freeze/Unfreeze Column
Keep a column visible while scrolling horizontally.
Unfreeze returns it to its original position.

Group Columns
Organize related fields by grouping columns together.
Find out more about Column Group here.

Insert Field
Open the Insert Field Panel
Click Insert Field to open a pop-up showing all available columns for the selected object (e.g., Opportunity).
Fields already present in the current grid will be pre-selected.
You can search for fields using the search bar or filter by data type using the Data Type dropdown.
Refresh Object Fields (Optional)
If you don't see newly added fields in Salesforce, click Refresh to sync the latest metadata from Salesforce.
Add and Confirm
Select the fields you want to insert and click OK. The selected columns will be added to your grid.

For Standard Grids, adding a new column/field converts it to a custom grid, with a toast notification and rename prompt. Find out more about it here.
Hide Column
Hide the selected field from the current grid view

Remove Field
Removes the selected field from the current grid view.

Sort
Sort data in ascending (A–Z / 0–9) or descending (Z–A / 9–0) order.
Notes: When you sort using the column header, the sorting only happens on the records that are already loaded in the grid. No Salesforce call is made. Also, this kind of sorting is temporary and will reset if you refresh or reopen the grid.

These Header Action features make data handling in Wave as seamless and powerful as working in Excel, enhancing productivity while keeping your Salesforce data structured and accessible.
Want to understand how Header Sort compares to Toolbar Sort? See Sorting Overview
Lookup
The Lookup feature enables you to:
See and update the account information from the Grid columns in a single click
Change the relationships between two entities in a single click. For example, if you wish to change the account name for a contact or vice versa, you can do it in a single click.
Please find the information that will help you to use the Lookup feature.
Where it is available, the Lookup feature is denoted by its icon in the column header, as shown in the image below.
In each field of such column, you will see the icon when hovering.
The data matter in such a column will have a grey background.

You can use Lookup to change entity relationships. For example, let's change the account name for the Dickenson Mobile Generations opportunity.

Hover over its respective account name field and click on the Lookup icon.
A pop-up will show the list of all account names. Scroll down or search for the new account name and click on it.
The account name for the Dickenson Mobile Generations opportunity will be changed.
It will also perform the other applicable changes.
The lookup feature will also enable you to view the entity details. For example, let's open the details for Account Name.

Instead of clicking on the Lookup icon, click on the account name written in a grey background.
The account details pop-up screen will open.
You can edit the details and save them if required.
Lookup Filters
Lookup fields in the grid now fully adhere to the filters applied in Salesforce, ensuring consistent data visibility and user experience in Salesforce. This configuration allows users to interact with more refined data sets, making it easier to find the necessary records.
Key Benefits:
Enhanced Data Accuracy: Lookup Filters ensure users are selecting from relevant data sets, reducing errors in data entry.
Improved Efficiency: Lookups display only records that meet the defined filter conditions, minimizing the need to sift through extensive lists.
Customizable Filters: Admins can define the filter criteria based on field values or other conditions to streamline the selection process.
This functionality is especially useful for users working with large data sets, ensuring that only the most relevant records are available in the lookup field.
Known Limitation
The following Lookup Filter scenarios are currently not supported:
Picklist – Contains / Starts With
The Contains and Starts With operators do not support comma-separated values for Picklist fields.
Date Filter
Comma-separated date values are not supported for date range filtering. Multiple dates or ranges cannot be specified within a single filter value.
Field-to-Field Picklist Comparison
Field-to-field Picklist comparisons (for example,
Account.Type = Opportunity.Type) are not supported when the current object's field value is blank.
Lookup Field – Contains / Starts With
The Equals, Contains, and Starts With operators do not support comma-separated Lookup values.
Record Type – Contains / Starts With
The Contains and Starts With operators do not support comma-separated Record Type values.
Last updated
Was this helpful?