FlexCards are one of the most powerful UI components in Salesforce OmniStudio. They allow developers to build dynamic, data-driven user interfaces with minimal code. One of the key concepts that makes FlexCards flexible and reusable is the use of context variables.
In this article, we will take a deep dive into FlexCard context variables, understand what they are, why they are important, and how to use them effectively in real-world Salesforce implementations.
Understanding Context Variables in Salesforce
In Salesforce, context variables are variables that store information related to the current execution context. These variables help determine how a component behaves, what data it retrieves, and how that data is displayed.
Context variables are widely used across Salesforce features such as:
- OmniStudio FlexCards
- OmniScripts
- DataRaptors
- Integration Procedures
- Flows and Apex
Within FlexCards, context variables act as connectors between:
- Data sources and UI components
- Parent and child FlexCards
- Runtime parameters and backend logic
All context variables in FlexCards are case-sensitive, and incorrect casing can result in blank data or unexpected behavior.
Why Context Variables Are Important in FlexCards
Context variables allow FlexCards to:
- Dynamically adapt based on the current record
- Reuse the same FlexCard across multiple objects
- Pass data between parent and child components
- Control data queries without hardcoding values
- Improve maintainability and scalability
Without context variables, FlexCards would be static and tightly coupled to specific records or objects.
Types of Context Variables Available in FlexCards
FlexCards support several global context variables that can be accessed anywhere within the card, including data sources, actions, and UI elements.
Let’s explore each one in detail.
1. Label Context Variable
What Is the Label Variable?
The Label context variable is used to reference Salesforce Custom Labels inside a FlexCard. Custom labels help avoid hard-coded text and support localization.
Syntax
{Label.LabelName}
How It Works
When a FlexCard is rendered, Salesforce retrieves the value of the custom label and displays it wherever the variable is used.
When to Use
- Display static instructional text
- Support multi-language UI
- Maintain consistency across multiple FlexCards
Using labels ensures that content changes do not require FlexCard edits.
2. Params Context Variable
What Is Params?
The Params variable stores parameters passed to the FlexCard at runtime. These values may come from:
- Test parameters in the FlexCard preview
- Parent components
- Navigation actions
- Embedded contexts
Syntax
{Params.parameterName}
Example
{Params.Id}
Although {Params.Id} can return a record identifier, Salesforce recommends using {recordId} for accessing the current record context.
Use Cases
- Passing search parameters
- Dynamic filtering
- Controlling behavior during preview
3. Parent Context Variable
What Is Parent?
The Parent context variable is used only inside child FlexCards. It allows the child card to reference attributes defined on the parent FlexCard.
Syntax
{Parent.attributeName}
Example
{Parent.AccountId}
This retrieves the AccountId attribute defined on the parent FlexCard.
Important Rules
- The child FlexCard must have Is Child Card = true
- Attributes must be explicitly defined on the parent
- The Parent variable cannot access undeclared attributes
This mechanism enables strong parent-child communication without duplicating data queries.
4. recordId Context Variable
What Is recordId?
The recordId variable represents the current Salesforce record context in which the FlexCard is being used.
Syntax
{recordId}
Why recordId Is Recommended
Salesforce strongly recommends using {recordId} instead of {Params.Id} because:
- It is always available in record-based contexts
- It improves clarity and consistency
- It reduces dependency on manually passed parameters
Common Use Case
When using a DataRaptor to fetch related records:
- Key: AccountId
- Value: {recordId}
For previewing:
- Add a test parameter with
- Key: recordId
- Value: a valid Salesforce record Id
- Key: recordId
5. records Context Variable
What Is records?
The records variable holds all records returned by a data source, such as:
- SOQL queries
- DataRaptors
- Integration Procedures
Syntax Examples
Get all records:
{records}
Get the first record:
{records[0]}
Get a field from the first record:
{records[0].Name}
Why records Is Important
The records variable enables:
- Iteration through data lists
- Conditional rendering
- Display of dynamic datasets
- Access to individual records without extra queries
Understanding records is essential for building data-rich FlexCards.
Best Practices for Using Context Variables
- Always verify case sensitivity
- Prefer {recordId} for record context
- Define parent attributes explicitly
- Use labels instead of hard-coded text
- Test with real data using test parameters
- Avoid overloading child FlexCards with multiple queries
Conclusion
Context variables are the backbone of dynamic behavior in FlexCards. They allow developers to build reusable, scalable, and intelligent UI components that respond to real-time data and user context.
By mastering variables like Label, Params, Parent, recordId, and records, you gain full control over how data flows through your FlexCards and how users experience your OmniStudio applications.
A solid understanding of context variables is essential for anyone working with Salesforce OmniStudio, FlexCards, DataRaptors, and Integration Procedures.

