How to Call Apex Class In FlexCard

FlexCards are a powerful UI component used to display data dynamically in Salesforce OmniStudio. While FlexCards work efficiently with declarative data sources like DataRaptors and Integration Procedures, there are scenarios where custom business logic is required. In such cases, calling an Apex class from a FlexCard becomes essential.

This article explains how to call an Apex class in a FlexCard, when it is needed, and how the data flows from Apex to the FlexCard UI.

Why Call an Apex Class from a FlexCard?

Although OmniStudio provides strong declarative tools, Apex is required in situations such as:

  • Complex business logic that cannot be handled declaratively

  • Data processing across multiple objects

  • Advanced validations or calculations

  • External integrations that require custom handling

  • Performance optimization for large datasets

Calling an Apex class allows FlexCards to display processed, real-time data while keeping the UI responsive.

High-Level Architecture

The typical flow looks like this:

  1. FlexCard calls an Integration Procedure

  2. Integration Procedure invokes an Apex class

  3. Apex processes the logic and returns data

  4. Integration Procedure passes the response back

  5. FlexCard renders the data on the UI

FlexCards cannot call Apex directly, so Integration Procedures act as the bridge.

Step 1: Create an Apex Class

Start by creating an Apex class that contains the required logic. The class must:

  • Be declared as global

  • Have a @AuraEnabled method

  • Return data in a format supported by OmniStudio (Map or List)

Sample Apex Class

global class AccountDataService {

    

    @AuraEnabled

    global static List<Account> getAccounts() {

        return [

            SELECT Id, Name, Industry

            FROM Account

            LIMIT 5

        ];

    }

}

 

This example fetches basic Account data that will be displayed in the FlexCard.

Step 2: Create an Integration Procedure

Next, create an Integration Procedure to call the Apex class.

  1. Navigate to Integration Procedures

  2. Create a new Integration Procedure

  3. Add a Remote Action element

  4. Select Apex as the action type

  5. Enter the Apex class name and method name

Example Configuration:

  • Type: Apex

  • Class Name: AccountDataService

  • Method Name: getAccounts

This step enables OmniStudio to execute the Apex logic.

Step 3: Configure the Response Mapping

Once the Apex method executes, it returns data to the Integration Procedure.

  • Ensure the response is correctly mapped

  • Use the Response Node to capture returned data

  • Validate the response using Preview mode

This ensures that the data structure is accessible to the FlexCard.

FlexCard
On Preview Tab

Step 4: Create or Update the FlexCard

Now create or update a FlexCard to consume the Integration Procedure.

  1. Open the FlexCard designer

  2. Set the Data Source Type to Integration Procedure

  3. Select the Integration Procedure created earlier

  4. Map the response fields to the FlexCard elements

At this stage, the FlexCard is connected to Apex indirectly via the Integration Procedure.

Step 5: Display Data on the FlexCard

Add UI elements such as:

  • Text fields

  • Data tables

  • Icons or conditional styling

Bind these elements to the response nodes returned by the Integration Procedure.

For example:

{{Account.Name}}

{{Account.Industry}}

 

This displays the data retrieved from the Apex class.

Step 6: Preview and Test

Preview the FlexCard to verify:

  • Apex class is executed successfully

  • Integration Procedure returns data correctly

  • FlexCard displays the expected output

  • No runtime errors occur

Testing ensures smooth data flow from Apex to UI.

Best Practices for Calling Apex in FlexCards

To ensure performance and maintainability, follow these best practices:

  • Keep Apex logic lightweight and efficient

  • Avoid unnecessary SOQL queries

  • Always handle exceptions in Apex

  • Return only required fields

  • Use Integration Procedures for orchestration

  • Test with large datasets to avoid performance issues

These practices help maintain scalable and reliable FlexCard implementations.

Common Use Cases

Calling Apex from FlexCards is commonly used for:

  • Aggregated or calculated data

  • Conditional record processing

  • External API data handling

  • Custom eligibility checks

  • Complex data transformations

This approach extends FlexCard capabilities without compromising flexibility.

Conclusion

Calling an Apex class in a FlexCard is a powerful technique that enables advanced data handling in OmniStudio applications. While FlexCards do not directly invoke Apex, using an Integration Procedure as a bridge ensures a clean and scalable architecture.

By combining declarative tools with Apex logic, developers can build dynamic, high-performing FlexCards that meet complex business requirements while maintaining a responsive user experience.

Scroll to Top